Integration API

Integration API

Create destinations, test delivery, inspect attempts, replay events, and rotate signing secrets.

Integration writes require Administrator authority. Delivery is at least once and independently owned by the receiver.

Use the shared API contract for authentication, pagination, request headers, idempotency, and error responses.

Create an integration

POST/organizations/{organization_id}/integrations
Scope
integrations:write
Auth
Bearer API key

Creates a disabled integration. The secret-bearing destination is write-only and omitted from subsequent reads.

Request body
namestringrequired

Display name; does not change resource identity.

rule1–120 characters
typestringrequired

Receiver transport.

one ofslack, pagerduty, webhook, syslog_tls
destinationstringrequired

HTTPS receiver URL, PagerDuty routing destination, or TLS syslog host:port as selected.

credentialstringoptional

Write-only receiver secret when required by the selected transport.

event_typesstring[]required

Explicit subscribed event types.

ruleAt least one supported event type
redactionstringoptional

Unmasked delivery requires a sensitive-data grant.

one ofmasked, unmaskeddefaultmasked
201Created

Returns integration ID, masked destination, disabled initial state, and ETag. Webhook signing secrets are returned only through the protected creation result.

Read an integration

GET/organizations/{organization_id}/integrations/{integration_id}
Scope
integrations:read
Auth
Bearer API key

Returns type, masked destination, subscriptions, enabled state, health, and secret version IDs; no raw credentials.

200Result

Returns data and request_id.

Enable or disable delivery

PATCH/organizations/{organization_id}/integrations/{integration_id}
Scope
integrations:write
Auth
Bearer API key

Updates delivery routing. Requires If-Match. Disabling stops new deliveries; already delivered external messages remain.

Request body
enabledbooleanrequired

Whether to route new deliveries. true enables routing; false stops new deliveries. Existing external messages remain unchanged.

200Result

Returns integration and ETag. A separate test confirms receiver readiness.

Test a destination

POST/organizations/{organization_id}/integrations/{integration_id}/test
Scope
integrations:write
Auth
Bearer API key

Sends a synthetic event labeled as a test. Send an empty object. The test cannot create a real response action.

202Accepted

Returns a delivery operation. Receiver failure is recorded separately from integration configuration.

List delivery attempts

GET/organizations/{organization_id}/integrations/{integration_id}/deliveries
Scope
integrations:read
Auth
Bearer API key

Returns attempt IDs, stable event ID, timing, receiver response, and redacted failure details. Standard limit and cursor apply. Unknown filters return 422.

Query parameters
event_idstringoptional

Filter original event identity.

statestringoptional

Delivery state.

one ofqueued, delivered, retrying, failed
200Result

Returns a data array and pagination.next_cursor. Entries include stable IDs and the resource fields described for this collection.

Replay a failed delivery

POST/organizations/{organization_id}/integrations/{integration_id}/deliveries/{delivery_id}/retry
Scope
integrations:write
Auth
Bearer API key

Creates another attempt for the same event ID after current authorization and destination checks. It does not create another detection.

Request body
reasonstringrequired

Audited justification. Empty values are invalid.

rule1–2000 characters
202Accepted

Returns new attempt and operation. The receiver must deduplicate the stable event ID.

Rotate a signing secret

POST/organizations/{organization_id}/integrations/{integration_id}/rotate-secret
Scope
integrations:write
Auth
Bearer API key

Rotates a webhook signing secret. Requires If-Match; other transports return 422.

Request body
overlap_secondsintegeroptional

Interval during which both signing-secret versions remain valid. Configure the receiver to accept either valid version until this interval ends.

default3600rule60–86400 seconds
201Created

Returns the new secret once, version IDs, and previous-version retirement time. Deploy receiver verification before ending overlap.