> ## 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 subscriptions

> Inspect the v2 receivers configured for the current credential before registering another integration or diagnosing delivery. Requires `webhooks:manage`. Subscriptions belong to the credential that created them; another key in the same workspace does not automatically see or manage them. Existing legacy outbound subscriptions are not included.

The response is `{data:[...]}` with up to 100 subscriptions and each subscription's URL, selected events, active state, verification time and creation time. Signing secrets are never returned. There is no pagination cursor on this endpoint. Use the returned subscription ID when reading delivery history or changing configuration.

`403 insufficient_scope` requires webhook-management permission. If an expected subscription is missing, confirm you are using its original credential; rotating that credential keeps its identity, creating another key does not. This read needs no idempotency key and can be retried after transient failures.

See [webhook setup](/guides/webhooks).



## OpenAPI

````yaml /api/openapi.json get /webhooks
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:
    get:
      tags:
        - Webhooks
      summary: List webhook subscriptions
      description: >-
        Inspect the v2 receivers configured for the current credential before
        registering another integration or diagnosing delivery. Requires
        `webhooks:manage`. Subscriptions belong to the credential that created
        them; another key in the same workspace does not automatically see or
        manage them. Existing legacy outbound subscriptions are not included.


        The response is `{data:[...]}` with up to 100 subscriptions and each
        subscription's URL, selected events, active state, verification time and
        creation time. Signing secrets are never returned. There is no
        pagination cursor on this endpoint. Use the returned subscription ID
        when reading delivery history or changing configuration.


        `403 insufficient_scope` requires webhook-management permission. If an
        expected subscription is missing, confirm you are using its original
        credential; rotating that credential keeps its identity, creating
        another key does not. This read needs no idempotency key and can be
        retried after transient failures.


        See [webhook setup](/guides/webhooks).
      operationId: getWebhooks
      responses:
        '200':
          description: >-
            Up to 100 v2 subscriptions owned by this credential, with signing
            secrets omitted.
          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/WebhookPage'
              example:
                data:
                  - name: CRM updates
                    url: https://receiver.example.com/powerdialer
                    events:
                      - call.completed
                      - call.disposition_updated
                    id: 00000000-0000-4000-8000-000000000001
                    active: false
                    verifiedAt: null
                    createdAt: '2026-10-08T12:00:00.000Z'
        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' \
              --header "Authorization: Bearer $POWERDIALER_API_KEY"
components:
  schemas:
    WebhookPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Webhook'
          description: The subscriptions owned by this key.
      required:
        - data
      examples:
        - data:
            - name: CRM updates
              url: https://receiver.example.com/powerdialer
              events:
                - call.completed
                - call.disposition_updated
              id: 00000000-0000-4000-8000-000000000001
              active: false
              verifiedAt: null
              createdAt: '2026-10-08T12:00:00.000Z'
    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
    Webhook:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Subscription UUID chosen by the client when creating it.
        name:
          type: string
          description: Integration label.
        url:
          type: string
          description: HTTPS receiver URL.
        events:
          type: array
          items:
            $ref: '#/components/schemas/EventType'
          description: Subscribed event types.
        active:
          type: boolean
          description: >-
            Whether delivery is enabled. Creating or replacing configuration
            pauses delivery until verification.
        verifiedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Time of the most recent successful verification, or null.
        createdAt:
          type: string
          format: date-time
          description: Subscription creation time in UTC.
      required:
        - id
        - name
        - url
        - events
        - active
        - verifiedAt
        - createdAt
      examples:
        - name: CRM updates
          url: https://receiver.example.com/powerdialer
          events:
            - call.completed
            - call.disposition_updated
          id: 00000000-0000-4000-8000-000000000001
          active: false
          verifiedAt: null
          createdAt: '2026-10-08T12:00:00.000Z'
    EventType:
      type: string
      enum:
        - contact.created
        - contact.updated
        - contact.deleted
        - list.created
        - list.updated
        - list.deleted
        - list.membership_updated
        - call.created
        - call.updated
        - call.deleted
        - call.completed
        - call.disposition_updated
        - recording.available
        - transcript.available
        - contact.access_revoked
        - list.access_revoked
      examples:
        - call.completed
  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.