Webhooks
List webhook subscriptions
List owner-scoped webhook subscriptions. Signing secrets are never included in list responses.
/api/v2/webhookswebhooks.readParameters
This operation has no path or query parameters.
Request body
This operation does not accept a request body.
Operational behavior
Idempotency
Mode: naturally safe. No idempotency header is required.
Retries
Retry transport failures, 429, and 503 with exponential backoff and full jitter. Honor Retry-After. Retry statuses: 429, 503. Honor Retry-After.
Retention
Subscriptions remain visible until account deletion; disabledAt records permanent shutdown without exposing signing material. Response field: subscriptions[].disabledAt.
Responses
200The owner's webhook subscriptions, including status and signing-secret fingerprints.
Response headers
X-Correlation-IdResponse schema
WebhookListResponseWebhook List Response object used by the Publishing API.
contractVersionstringrequiredContract Version value.
subscriptionsarray<WebhookSubscription>requiredSubscriptions value.
- Maximum items: 100
{
"contractVersion": "publishing.lifecycle.v1",
"subscriptions": [
{
"createdAt": "2026-07-20T15:00:00.000Z",
"currentSecretFingerprint": "8f4e2b731d0c9a65",
"currentSecretVersion": 1,
"description": "Production publishing events",
"disabledAt": null,
"endpoint": "https://hooks.example.com/markdowntopdf",
"eventTypes": [
"job.succeeded",
"job.failed",
"job.cancelled"
],
"id": "55555555-5555-4555-8555-555555555555",
"status": "active",
"updatedAt": "2026-07-20T15:00:00.000Z"
}
]
}401The bearer credential is missing, malformed, expired, revoked, or belongs to the wrong environment.
Response headers
X-Correlation-IdResponse schema
PublishingErrorEnvelopePublishing Error Envelope object used by the Publishing API.
contractVersionstringrequiredContract Version value.
errorobjectrequiredError value.
{
"contractVersion": "publishing.lifecycle.v1",
"error": {
"category": "authentication",
"code": "unauthorized",
"httpStatus": 401,
"message": "A valid API key is required.",
"retryable": false
}
}403The principal is authenticated but lacks the operation's required scope.
Response headers
X-Correlation-IdResponse schema
PublishingErrorEnvelopePublishing Error Envelope object used by the Publishing API.
contractVersionstringrequiredContract Version value.
errorobjectrequiredError value.
{
"contractVersion": "publishing.lifecycle.v1",
"error": {
"category": "authorization",
"code": "forbidden",
"httpStatus": 403,
"message": "The API key does not have the required scope.",
"retryable": false
}
}404The resource does not exist or is not visible to this principal. Cross-tenant misses use the same response.
Response headers
X-Correlation-IdResponse schema
PublishingErrorEnvelopePublishing Error Envelope object used by the Publishing API.
contractVersionstringrequiredContract Version value.
errorobjectrequiredError value.
{
"contractVersion": "publishing.lifecycle.v1",
"error": {
"category": "authorization",
"code": "not_found",
"httpStatus": 404,
"message": "The requested resource was not found.",
"retryable": false
}
}429The request is temporarily rate limited. No final publication unit is consumed.
Response headers
X-Correlation-IdRetry-AfterResponse schema
PublishingErrorEnvelopePublishing Error Envelope object used by the Publishing API.
contractVersionstringrequiredContract Version value.
errorobjectrequiredError value.
{
"contractVersion": "publishing.lifecycle.v1",
"error": {
"category": "entitlement",
"code": "rate_limited",
"details": {
"retryAfterSeconds": 30
},
"httpStatus": 429,
"message": "Too many publishing requests. Retry after 30 seconds.",
"retryable": true
}
}503A transient publishing, queue, renderer, or storage dependency is unavailable. No failed render consumes a final publication unit.
Response headers
X-Correlation-IdRetry-AfterResponse schema
PublishingErrorEnvelopePublishing Error Envelope object used by the Publishing API.
contractVersionstringrequiredContract Version value.
errorobjectrequiredError value.
{
"contractVersion": "publishing.lifecycle.v1",
"error": {
"category": "internal",
"code": "service_unavailable",
"details": {
"retryAfterSeconds": 30
},
"httpStatus": 503,
"message": "Publishing is temporarily unavailable.",
"retryable": true
}
}