Sign in to run requests with your own sandbox key. Sign in

List webhook deliveries

GET /api/v1/webhook_deliveries
webhooks:read

Delivery attempts across all of the calling api_client's subscriptions, newest first. The event payload and the subscriber's response body are deliberately omitted. CSV filters accept several comma-separated values; unknown values return 422. Requires webhooks:read.

Query parameters

NameTypeDescription
page integer

1-based page number.

Example: 1
per_page integer

Items per page. Values above 100 are clamped to 100.

Example: 25
filter[webhook_subscription_id] integer
filter[event_type] string

CSV of event names

Example: execution.completed,execution.failed
filter[status] string

CSV of pending, retrying, succeeded, failed, dead

Responses

  • 200 Delivery list application/json
    • data array of WebhookDelivery
      • id integer
      • object string
      • webhook_subscription_id integer
      • event_type string Lifecycle events Cascades can deliver. See `x-webhooks` for each payload. One of execution.completed execution.failed adverse_action.triggered adverse_action.completed adverse_action.failed adverse_action.retry_scheduled
      • status string One of pending retrying succeeded failed dead
      • attempts integer
      • max_attempts integer
      • last_response_status integer, nullable
      • last_attempted_at string (date-time), nullable
      • next_retry_at string (date-time), nullable
      • delivered_at string (date-time), nullable
      • created_at string (date-time)
      • updated_at string (date-time)
    • meta Meta

      Schema: PaginatedMeta

      • request_id string required Correlation id for this request. Also sent as the `X-Request-Id` response header; quote it when contacting support.
      • page integer required
      • per_page integer required
      • total_count integer required
      • total_pages integer required
      • object string required The object type of every item in `data`.
    200 example
    {
      "data": [
        {
          "id": 1,
          "object": "webhook_delivery",
          "webhook_subscription_id": 1,
          "event_type": "execution.completed",
          "status": "pending",
          "attempts": 1,
          "max_attempts": 6,
          "last_response_status": 1,
          "last_attempted_at": "2026-05-08T18:41:05Z",
          "next_retry_at": "2026-05-08T18:41:05Z",
          "delivered_at": "2026-05-08T18:41:05Z",
          "created_at": "2026-05-08T18:41:05Z",
          "updated_at": "2026-05-08T18:41:05Z"
        }
      ],
      "meta": {
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "page": 1,
        "per_page": 25,
        "total_count": 142,
        "total_pages": 6,
        "object": "execution"
      }
    }
  • 401 Missing, malformed, expired or revoked bearer token. The WWW-Authenticate header carries the RFC 6750 challenge. application/json

    Schema: ErrorEnvelope

    401 example
    {
      "error": {
        "code": "unauthorized",
        "message": "A valid bearer token is required.",
        "details": [],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/unauthorized"
      }
    }
  • 403 Token does not hold the required scope. details lists the scope(s) that were checked. application/json

    Schema: ErrorEnvelope

    403 example
    {
      "error": {
        "code": "insufficient_scope",
        "message": "This token does not have the required scope.",
        "details": [
          {
            "field": "scope",
            "message": "executions:write"
          }
        ],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/insufficient_scope"
      }
    }
  • 422 Request body or params failed validation application/json

    Schema: ErrorEnvelope

    422 example
    {
      "error": {
        "code": "validation_failed",
        "message": "The request could not be processed.",
        "details": [
          {
            "field": "execution_mode",
            "message": "must be test or live"
          }
        ],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/validation_failed"
      }
    }
  • 429 Rate limit exceeded (60 req/min per IP on /api/v1, 600 req/hour per token prefix, or 300 req/5 min per IP globally). The body is the standard error envelope and Retry-After gives the seconds until the window resets. application/json

    Schema: ErrorEnvelope

    429 example
    {
      "error": {
        "code": "rate_limited",
        "message": "Rate limit exceeded. Retry later.",
        "details": [],
        "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f",
        "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/rate_limited"
      }
    }
Was this page helpful?