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

# List webhook endpoints

> Returns the organization's webhook endpoints, each with its delivery total, success rate and last trigger time. An endpoint with no delivery history reports zeroed counters. The signing secret is never included. Requires the `webhooks:read` scope.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/user/webhook-endpoints
openapi: 3.0.0
info:
  title: Brudcast API
  version: 1.0.0
servers:
  - url: https://core-service.prod.brudcast.com
    description: Production
security: []
tags:
  - name: Analytics
    x-displayName: Analytics
  - name: Campaigns
    x-displayName: Campaigns
  - name: Contacts
    x-displayName: Contacts
  - name: Mailboxes
    x-displayName: Mailboxes
  - name: Messages
    x-displayName: Messages
  - name: Sender Identities
    x-displayName: Sender Identities
  - name: Sending Domains
    x-displayName: Sending Domains
  - name: Templates
    x-displayName: Templates
  - name: Webhooks
    x-displayName: Webhooks
paths:
  /api/v1/user/webhook-endpoints:
    get:
      tags:
        - Webhooks
      summary: List webhook endpoints
      description: >-
        Returns the organization's webhook endpoints, each with its delivery
        total, success rate and last trigger time. An endpoint with no delivery
        history reports zeroed counters. The signing secret is never included.
        Requires the `webhooks:read` scope.
      parameters:
        - in: header
          name: X-Organization-Id
          required: false
          description: >-
            Required when authenticating with an access token. Optional with an
            API key, whose own organization binding is authoritative; a value
            contradicting it is refused with 403.
          schema:
            type: string
            format: uuid
        - in: query
          name: page
          required: false
          schema:
            type: integer
            minimum: 1
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEndpointListItemPaginatedResponse'
        '401':
          description: The credential is missing, malformed, revoked or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            The key lacks the scope the endpoint requires, or the organization
            does not match the credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: The payload or query string failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '429':
          description: >-
            Rate limit exceeded; retry after the number of seconds in
            `retryAfter`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
      security:
        - apiKey: []
        - apiKeyBearer: []
components:
  schemas:
    WebhookEndpointListItemPaginatedResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        message:
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEndpointListItem'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
      required:
        - success
        - message
        - data
        - meta
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Resource not found
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_ROW_NOT_FOUND
      required:
        - success
        - message
        - code
    ValidationErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: The payload is invalid
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_VALIDATION_ERROR
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
      required:
        - success
        - message
        - code
        - errors
    RateLimitErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Too many requests
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_TOO_MANY_REQUESTS
        retryAfter:
          type: number
          example: 60
      required:
        - success
        - message
        - code
        - retryAfter
    WebhookEndpointListItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
        organizationId:
          type: string
          format: uuid
        url:
          type: string
          example: https://example.com/hooks/brudcast
        description:
          type: string
          nullable: true
        events:
          type: array
          items:
            type: string
            enum:
              - email.delivered
              - email.bounced
              - email.opened
              - email.clicked
              - email.marked_spam
              - email.unsubscribed
              - email.dropped
              - email.deferred
              - email.rejected
              - email.complained
              - contact.subscribed
              - contact.unsubscribed
              - contact.updated
              - campaign.sent
              - campaign.completed
              - test.event
          description: The event types the endpoint is subscribed to
        isActive:
          type: boolean
        maxRetries:
          type: number
        customHeaders:
          type: array
          items:
            $ref: '#/components/schemas/WebhookCustomHeader'
          nullable: true
        timeoutSeconds:
          type: number
        lastTriggeredAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        totalDeliveries:
          type: number
          description: Deliveries recorded for the endpoint, zero when it has no history
        successRate:
          type: number
          example: 98.4
          description: >-
            Percentage of deliveries that reached the endpoint, to one decimal
            place, zero when it has no history
      required:
        - id
        - organizationId
        - url
        - description
        - events
        - isActive
        - maxRetries
        - customHeaders
        - timeoutSeconds
        - lastTriggeredAt
        - createdAt
        - updatedAt
        - totalDeliveries
        - successRate
    PaginationMeta:
      type: object
      properties:
        total:
          type: number
          example: 137
        perPage:
          type: number
          example: 20
        currentPage:
          type: number
          example: 1
        lastPage:
          type: number
          example: 7
        firstPage:
          type: number
          example: 1
        firstPageUrl:
          type: string
          example: /?page=1
        lastPageUrl:
          type: string
          example: /?page=7
        nextPageUrl:
          type: string
          nullable: true
          example: /?page=2
        previousPageUrl:
          type: string
          nullable: true
          example: null
      required:
        - total
        - perPage
        - currentPage
        - lastPage
        - firstPage
        - firstPageUrl
        - lastPageUrl
        - nextPageUrl
        - previousPageUrl
    ValidationErrorItem:
      type: object
      properties:
        field:
          type: string
          example: emailAddress
        rule:
          type: string
          example: email
        message:
          type: string
          example: The emailAddress field must be a valid email address
      required:
        - field
        - rule
        - message
    WebhookCustomHeader:
      type: object
      properties:
        key:
          type: string
          example: X-Signature-Source
        value:
          type: string
          example: brudcast
      required:
        - key
        - value
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        An organization API key, prefixed `bk_live_`. Takes precedence over
        `Authorization` when both are sent. The key is bound to one
        organization, and the scopes it was issued with are enforced per
        endpoint.
    apiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: bk_live_...
      description: >-
        The same organization API key sent as `Authorization: Bearer
        bk_live_...`. Accepted only when the value begins with `bk_` and no
        `X-API-Key` header is present.

````