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

# List Webhook Deliveries

> Paginated history of every delivery attempt for this webhook (succeeded,
failed, or dead-lettered). Filter by status, event type, or time range.
Retention: 7 days.




## OpenAPI

````yaml /openapi.yaml get /v1/webhooks/{id}/events
openapi: 3.1.0
info:
  title: AnchorBrowser API
  version: 1.0.0
  description: APIs to manage all browser-related actions and configuration.
servers:
  - url: https://api.anchorbrowser.io
    description: API server
security: []
paths:
  /v1/webhooks/{id}/events:
    get:
      tags:
        - Webhooks
      summary: List Webhook Deliveries
      description: |
        Paginated history of every delivery attempt for this webhook (succeeded,
        failed, or dead-lettered). Filter by status, event type, or time range.
        Retention: 7 days.
      operationId: listWebhookEvents
      parameters:
        - name: id
          in: path
          required: true
          description: Webhook id.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: Page size, 1–100. Defaults to 25.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: offset
          in: query
          required: false
          description: Number of rows to skip from the beginning of the result set.
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: status
          in: query
          required: false
          description: Filter by delivery status.
          schema:
            type: string
            enum:
              - pending
              - in_flight
              - succeeded
              - failed
              - dead
        - name: event_type
          in: query
          required: false
          description: Filter by event type.
          schema:
            $ref: '#/components/schemas/WebhookEventType'
        - name: since
          in: query
          required: false
          description: >-
            Only include deliveries scheduled at or after this ISO 8601
            timestamp.
          schema:
            type: string
            format: date-time
        - name: until
          in: query
          required: false
          description: >-
            Only include deliveries scheduled at or before this ISO 8601
            timestamp.
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Page of delivery rows plus pagination metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEventsListResponse'
        '404':
          description: Webhook not found in this project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlatErrorResponse'
        '500':
          description: Failed to load webhook events.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlatErrorResponse'
      security:
        - api_key_header: []
components:
  schemas:
    WebhookEventType:
      type: string
      description: |
        Catalog of webhook event types Anchor can deliver. Adding a new event
        type is a coordinated change between session-manager (publisher),
        webhook-dispatcher (consumer), and the dashboard.
      enum:
        - task.completed
        - task.failed
        - task.cancelled
        - task.healed
        - session.completed
        - session.failed
        - session.recording.ready
        - batch.completed
        - batch.failed
        - intervention.requested
        - intervention.resolved
        - identity.authenticated
        - identity.authentication_failed
    WebhookEventsListResponse:
      type: object
      required:
        - events
        - pagination
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEventDeliveryRow'
        pagination:
          type: object
          required:
            - limit
            - offset
            - total
          properties:
            limit:
              type: integer
              description: Number of rows in this response (max 100).
            offset:
              type: integer
              description: How many rows were skipped from the beginning of the result set.
            total:
              type: integer
              description: Total matching rows across all pages.
    FlatErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
        code:
          type: integer
          description: HTTP status code.
      required:
        - error
    WebhookEventDeliveryRow:
      type: object
      description: One row from the events / deliveries history for a webhook.
      required:
        - id
        - external_event_id
        - event_type
        - status
        - attempt
      properties:
        id:
          type: string
          description: >-
            Internal events-row id (one row per logical delivery to one
            webhook).
        external_event_id:
          type: string
          description: >-
            Customer-facing event id. Same value lands in the envelope `id`
            field.
          example: evt_56a4c6e7f11e4b44eafce28a
        event_type:
          $ref: '#/components/schemas/WebhookEventType'
        status:
          type: string
          enum:
            - pending
            - in_flight
            - succeeded
            - failed
            - dead
          description: |
            * `pending` — accepted, no attempt yet.
            * `in_flight` — currently being POSTed.
            * `succeeded` — receiver returned 2xx.
            * `failed` — receiver returned non-retryable 4xx.
            * `dead` — exhausted all retry attempts.
        attempt:
          type: integer
          minimum: 0
          description: >-
            Attempt number for the most recent try (1 = first attempt, ≤ 6 with
            default policy).
        response_status:
          type: integer
          nullable: true
          description: HTTP status code from the most recent attempt, if any.
        error_message:
          type: string
          nullable: true
        scheduled_at:
          type: string
          format: date-time
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    api_key_header:
      type: apiKey
      in: header
      name: anchor-api-key
      description: API key passed in the header

````