> ## Documentation Index
> Fetch the complete documentation index at: https://docs.powerdialer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List webhook deliveries

> Inspect recent delivery outcomes when a downstream workflow appears delayed or missing. Requires `webhooks:manage` and the credential that owns the subscription. The subscription ID must refer to a v2 receiver; legacy delivery history uses its existing integration surface.

This endpoint returns the latest 100 delivery records, newest first, without a pagination cursor. Each record identifies its stable event, current state, attempt count and latest HTTP status or error. States include `pending`, `sending`, `retry`, `succeeded`, `failed` and `cancelled`. A successful HTTP response confirms receiver acknowledgement, not completion of the receiver's business workflow.

Use the attempts endpoint to investigate a particular delivery and replay only after correcting the receiver. A timeout can still have reached the receiver, so deduplication remains necessary. `404 not_found` means an absent or inaccessible subscription. This read is safe to retry without an idempotency key.

See [delivery recovery](/guides/webhooks#delivery-history-and-replay).



## OpenAPI

````yaml /api/openapi.json get /webhooks/{id}/deliveries
openapi: 3.1.0
info:
  title: PowerDialer API v2
  version: 2.0.0
  description: >-
    Connect your CRM, sales workspace or reporting tools to PowerDialer using
    scoped API keys. Manage contacts and calling lists, read call evidence and
    analytics, and receive signed events. All example records and IDs are
    synthetic; replace them with values from your workspace. Shared-key v1 is
    retired. API availability was verified on 2026-10-08; see /availability for
    historical data coverage. Legacy outbound webhooks use a separate contract.
servers:
  - url: https://api.migration.powerdialer.ai/api/public/v2
    description: Production API v2; availability verified on 2026-10-08.
security:
  - ApiKey: []
tags:
  - name: Authentication
  - name: Contacts
  - name: Calling lists
  - name: Imports
  - name: Calls
  - name: Synchronization
  - name: Analytics
  - name: Webhooks
  - name: Webhook deliveries
  - name: Incoming webhook payloads
paths:
  /webhooks/{id}/deliveries:
    get:
      tags:
        - Webhook deliveries
      summary: List webhook deliveries
      description: >-
        Inspect recent delivery outcomes when a downstream workflow appears
        delayed or missing. Requires `webhooks:manage` and the credential that
        owns the subscription. The subscription ID must refer to a v2 receiver;
        legacy delivery history uses its existing integration surface.


        This endpoint returns the latest 100 delivery records, newest first,
        without a pagination cursor. Each record identifies its stable event,
        current state, attempt count and latest HTTP status or error. States
        include `pending`, `sending`, `retry`, `succeeded`, `failed` and
        `cancelled`. A successful HTTP response confirms receiver
        acknowledgement, not completion of the receiver's business workflow.


        Use the attempts endpoint to investigate a particular delivery and
        replay only after correcting the receiver. A timeout can still have
        reached the receiver, so deduplication remains necessary. `404
        not_found` means an absent or inaccessible subscription. This read is
        safe to retry without an idempotency key.


        See [delivery recovery](/guides/webhooks#delivery-history-and-replay).
      operationId: getWebhooksByIdDeliveries
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Subscription UUID returned by registration or listing. It must
            belong to the credential making this request.
          example: 00000000-0000-4000-8000-000000000001
      responses:
        '200':
          description: >-
            The latest 100 delivery records for this subscription, ordered
            newest first.
          headers:
            X-Request-Id:
              schema:
                type: string
                format: uuid
            RateLimit-Limit:
              schema:
                type: integer
            RateLimit-Remaining:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryPage'
              example:
                data:
                  - id: 00000000-0000-4000-8000-000000000003
                    subscriptionId: 00000000-0000-4000-8000-000000000001
                    eventId: 00000000-0000-4000-8000-000000000002
                    state: succeeded
                    attempts: 1
                    availableAt: '2026-10-08T12:00:00.000Z'
                    leaseToken: null
                    leaseUntil: null
                    lastStatus: 200
                    lastError: null
                    lastAttemptAt: '2026-10-08T12:00:00.000Z'
                    createdAt: '2026-10-08T12:00:00.000Z'
                    generation: 0
        default:
          description: >-
            Error. 400 invalid request; 401 invalid credential; 403 insufficient
            access; 404 not found; 409 state/idempotency conflict; 413 size
            limit; 422 verification failure; 429 rate limit (Retry-After
            seconds); 503 temporary service failure.
          headers:
            Retry-After:
              schema:
                type: integer
            X-Request-Id:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: invalid_api_key
                  message: API key is invalid, expired or revoked
                  requestId: 00000000-0000-4000-8000-000000000004
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            # Replace example resource IDs and ownerId with values from your
            workspace.

            : "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API
            key}"

            curl --request GET \
              --url 'https://api.migration.powerdialer.ai/api/public/v2/webhooks/00000000-0000-4000-8000-000000000001/deliveries' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    DeliveryPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Delivery'
          description: The most recent deliveries, newest first, up to 100.
      required:
        - data
      examples:
        - data:
            - id: 00000000-0000-4000-8000-000000000003
              subscriptionId: 00000000-0000-4000-8000-000000000001
              eventId: 00000000-0000-4000-8000-000000000002
              state: succeeded
              attempts: 1
              availableAt: '2026-10-08T12:00:00.000Z'
              leaseToken: null
              leaseUntil: null
              lastStatus: 200
              lastError: null
              lastAttemptAt: '2026-10-08T12:00:00.000Z'
              createdAt: '2026-10-08T12:00:00.000Z'
              generation: 0
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable machine-readable error code.
            message:
              type: string
              description: Human-readable explanation.
            requestId:
              type: string
              format: uuid
              description: Request identifier to include when investigating a failure.
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
                required:
                  - path
                  - message
              description: Validation errors, when available.
          required:
            - code
            - message
            - requestId
      required:
        - error
      examples:
        - error:
            code: insufficient_scope
            message: Requires contacts:read
            requestId: 00000000-0000-4000-8000-000000000004
    Delivery:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Delivery ID. Use it to inspect attempts or request replay.
        subscriptionId:
          type: string
          format: uuid
          description: Subscription that owns this delivery.
        eventId:
          type: string
          format: uuid
          description: Stable event ID used for deduplication.
        state:
          type: string
          enum:
            - pending
            - sending
            - retry
            - succeeded
            - failed
            - cancelled
          description: >-
            pending: queued; sending: in flight; retry: waiting for another
            attempt; succeeded: receiver accepted; failed: no automatic attempts
            remain; cancelled: no longer eligible.
        attempts:
          type: integer
          description: Number of attempts recorded for this delivery.
        availableAt:
          type: string
          format: date-time
          description: Earliest time the worker may attempt this delivery.
        leaseToken:
          anyOf:
            - type: string
            - type: 'null'
          description: Worker coordination field, or null. Clients should not use it.
        leaseUntil:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Worker claim expiration, or null. Does not guarantee the exact
            delivery time.
        lastStatus:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Most recent receiver HTTP status, or null when no HTTP response was
            available.
        lastError:
          anyOf:
            - type: string
            - type: 'null'
          description: Most recent transport or delivery error, or null.
        lastAttemptAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Time of the most recent attempt, or null.
        createdAt:
          type: string
          format: date-time
          description: Time the delivery was queued, in UTC.
        generation:
          type: integer
          description: >-
            Subscription configuration generation; replay queues the current
            generation.
      required:
        - id
        - subscriptionId
        - eventId
        - state
        - attempts
        - availableAt
        - leaseToken
        - leaseUntil
        - lastStatus
        - lastError
        - lastAttemptAt
        - createdAt
        - generation
      examples:
        - id: 00000000-0000-4000-8000-000000000003
          subscriptionId: 00000000-0000-4000-8000-000000000001
          eventId: 00000000-0000-4000-8000-000000000002
          state: succeeded
          attempts: 1
          availableAt: '2026-10-08T12:00:00.000Z'
          leaseToken: null
          leaseUntil: null
          lastStatus: 200
          lastError: null
          lastAttemptAt: '2026-10-08T12:00:00.000Z'
          createdAt: '2026-10-08T12:00:00.000Z'
          generation: 0
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: pd_<live|test>_<credential UUID>.<random secret>
      description: >-
        Issued in Developers. Workspace/owner/scopes come from credential, never
        acting-user headers. API keys cannot manage API credentials.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.