Skip to content

Webhooks — API reference

View as Markdown

Signed delivery of events, so you do not have to poll.

GET /v1/webhook-endpoints

List webhook endpoints

Parameters
NameInRequirementDescription
limitqueryOptionalPage size.
starting_afterqueryOptionalCursor from the previous page’s next_cursor.
Responses
StatusDescription
200A page of endpoints.
400Codes: invalid_request, unsupported_file, file_too_large, corrupted_file, encrypted_file, unsupported_operation.
401Codes: missing_credentials, invalid_api_key, expired_api_key, revoked_api_key, api_key_in_query.
403Codes: insufficient_scope, ip_not_allowed, environment_mismatch, organization_suspended, forbidden, key_restricted.
429Rate limited or out of credits. Retry after the interval in Retry-After. Codes: key_spend_limit, rate_limited, concurrency_limit, credits_exhausted.
500Codes: internal_error.
503Codes: processing_unavailable, dependency_unavailable.
504Codes: timeout.

POST /v1/webhook-endpoints

The response contains secret exactly once. It is not retrievable afterwards; rotate the endpoint if you lose it.

Parameters
NameInRequirementDescription
Idempotency-KeyheaderRequiredClient-generated key, scoped to (organization, endpoint) and retained 24 hours. A replay with the same body returns the stored response without re-executing or re-billing; a replay with a different body returns 409.
Request body
FieldTypeRequirementDescription
urlstring (uri)RequiredMust be HTTPS.
enabled_eventsarray of job.succeeded · job.failed · job.cancelled · file.ready · file.rejected · file.deleted · file.expiredRequired
Responses
StatusDescription
201Registered. Contains the secret.
400Codes: invalid_request, unsupported_file, file_too_large, corrupted_file, encrypted_file, unsupported_operation.
401Codes: missing_credentials, invalid_api_key, expired_api_key, revoked_api_key, api_key_in_query.
403Codes: insufficient_scope, ip_not_allowed, environment_mismatch, organization_suspended, forbidden, key_restricted.
409Codes: idempotency_conflict, upload_session_consumed, conflict.
429Rate limited or out of credits. Retry after the interval in Retry-After. Codes: key_spend_limit, rate_limited, concurrency_limit, credits_exhausted.
500Codes: internal_error.
503Codes: processing_unavailable, dependency_unavailable.
504Codes: timeout.

DELETE /v1/webhook-endpoints/{webhook_endpoint_id}

Delete a webhook endpoint

Parameters
NameInRequirementDescription
webhook_endpoint_idpathRequiredWebhook endpoint identifier.
Responses
StatusDescription
204Deleted. No further events are delivered to it.
401Codes: missing_credentials, invalid_api_key, expired_api_key, revoked_api_key, api_key_in_query.
403Codes: insufficient_scope, ip_not_allowed, environment_mismatch, organization_suspended, forbidden, key_restricted.
404Not found. A resource belonging to another organization returns 404, never 403 — a 403 would confirm it exists. Codes: not_found.
429Rate limited or out of credits. Retry after the interval in Retry-After. Codes: key_spend_limit, rate_limited, concurrency_limit, credits_exhausted.
500Codes: internal_error.
503Codes: processing_unavailable, dependency_unavailable.
504Codes: timeout.

POST /v1/webhook-endpoints/{webhook_endpoint_id}/test

Delivers a signed synthetic event so you can verify your handler before relying on it.

Parameters
NameInRequirementDescription
webhook_endpoint_idpathRequiredWebhook endpoint identifier.
Idempotency-KeyheaderRequiredClient-generated key, scoped to (organization, endpoint) and retained 24 hours. A replay with the same body returns the stored response without re-executing or re-billing; a replay with a different body returns 409.
Responses
StatusDescription
202Test event queued for delivery.
401Codes: missing_credentials, invalid_api_key, expired_api_key, revoked_api_key, api_key_in_query.
403Codes: insufficient_scope, ip_not_allowed, environment_mismatch, organization_suspended, forbidden, key_restricted.
404Not found. A resource belonging to another organization returns 404, never 403 — a 403 would confirm it exists. Codes: not_found.
409Codes: idempotency_conflict, upload_session_consumed, conflict.
429Rate limited or out of credits. Retry after the interval in Retry-After. Codes: key_spend_limit, rate_limited, concurrency_limit, credits_exhausted.
500Codes: internal_error.
503Codes: processing_unavailable, dependency_unavailable.
504Codes: timeout.