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

# List alert webhook delivery events

> Retrieve a cursor-paginated list of delivery events for an alert webhook,
including those that are pending, currently being replayed, delivered, or
failed. Use this endpoint to inspect delivery history and identify events
that need to be retried with
`POST /custodians/me/alerts/webhooks/{alertWebhookId}/delivery-events/{deliveryEventId}/retries`.

See [Delivery event lifecycle](/resources/alert-webhooks#delivery-event-lifecycle)
for the meaning of each `status` value and how manual retries interact with
the automatic retry loop.




## OpenAPI

````yaml /openapi/custodian-api.yaml get /custodians/me/alerts/webhooks/{alertWebhookId}/delivery-events
openapi: 3.1.0
info:
  title: Portal Custodian API
  version: '3.0'
  description: >
    The Portal Custodian API provides endpoints for managing clients, building
    transactions,

    retrieving wallet data, managing delegations, alert webhooks, and gas
    sponsorship.

    All endpoints require authentication via a Portal API Key (also known as a
    Custodian API Key)

    passed as a Bearer token.


    ## Base URL

    `https://api.portalhq.io/api/v3`


    ## Authentication

    Include your Portal API Key as a Bearer token in the `Authorization` header
    of every request.


    ## Chain ID Format

    Chain parameters use either friendly names (e.g. `ethereum`, `solana`) or
    CAIP-2 format

    (e.g. `eip155:1`, `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`). When using
    CAIP-2 format

    in URLs, ensure the colon is URI-encoded (`%3A`).
servers:
  - url: https://api.portalhq.io/api/v3
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Clients
    description: Create and manage Portal clients
  - name: Transactions
    description: Build and evaluate blockchain transactions
  - name: Wallet Metadata
    description: Retrieve wallet balances and NFTs
  - name: Wallet Shares
    description: Manage backup shares and wallet ejection
  - name: Delegations
    description: Manage token delegations and delegated transfers
  - name: Session Keys
    description: Build and send EIP-7702 session key user operations
  - name: Alert Webhooks
    description: Manage alert webhooks, external addresses, and replay failed events
  - name: Gas Sponsorship
    description: View and manage gas sponsorship across chains
paths:
  /custodians/me/alerts/webhooks/{alertWebhookId}/delivery-events:
    get:
      tags:
        - Alert Webhooks
      summary: List alert webhook delivery events
      description: >
        Retrieve a cursor-paginated list of delivery events for an alert
        webhook,

        including those that are pending, currently being replayed, delivered,
        or

        failed. Use this endpoint to inspect delivery history and identify
        events

        that need to be retried with

        `POST
        /custodians/me/alerts/webhooks/{alertWebhookId}/delivery-events/{deliveryEventId}/retries`.


        See [Delivery event
        lifecycle](/resources/alert-webhooks#delivery-event-lifecycle)

        for the meaning of each `status` value and how manual retries interact
        with

        the automatic retry loop.
      operationId: listAlertWebhookDeliveryEvents
      parameters:
        - $ref: '#/components/parameters/alertWebhookId'
        - name: take
          in: query
          required: false
          description: >-
            The number of delivery events to retrieve. Min `1`, max `100`.
            Default `100`.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
        - name: cursor
          in: query
          required: false
          description: >-
            The delivery event ID to use for cursor-based pagination. Pass the
            `id` of the last item from the previous response.
          schema:
            type: string
        - name: statuses
          in: query
          required: false
          description: |
            Comma-delimited list of delivery event statuses to filter by.
            Valid values: `PENDING`, `DELIVERED`, `FAILED`, `REPLAYING`.
          schema:
            type: string
        - name: eventTypes
          in: query
          required: false
          description: >
            Comma-delimited list of alert webhook event types to filter by.

            Valid values: `EIP_155_TX_V1`, `PRE_SIGN_V1`, `SOLANA_TX_V1`,
            `SOLANA_TX_V2`,

            `SOLANA_APPROVE_V1`, `SOLANA_APPROVE_V2`, `SOLANA_REVOKE_V1`,
            `SOLANA_REVOKE_V2`,

            `SOLANA_DELEGATED_TRANSFER_V2`, `WALLET_EJECT_V1`.
          schema:
            type: string
        - name: orderBy
          in: query
          required: false
          description: Field to order results by. Defaults to `sentAt`.
          schema:
            type: string
            enum:
              - sentAt
              - createdAt
            default: sentAt
        - name: orderDirection
          in: query
          required: false
          description: Sort direction. Defaults to `desc`.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
        - name: since
          in: query
          required: false
          description: >-
            Returns only delivery events created after this Unix timestamp (in
            seconds).
          schema:
            type: number
        - name: until
          in: query
          required: false
          description: >-
            Returns only delivery events created before this Unix timestamp (in
            seconds).
          schema:
            type: number
      responses:
        '200':
          description: Alert webhook delivery events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertWebhookDeliveryEventsResponse'
              example:
                results:
                  - id: cm5abc123def456ghi789jkl0
                    type: EIP_155_TX_V1
                    event:
                      data:
                        - transactionHash: >-
                            0x4978a4ba15a018532791ba4491e48b1aa8b544309c1ffce062bb1fb7e84dc069
                          chainId: eip155:11155111
                      metadata:
                        deliveryEventId: cm5abc123def456ghi789jkl0
                      type: EIP_155_TX_V1
                    status: DELIVERED
                    sentAt: '2025-01-20T10:30:00.000Z'
                    attempts: 1
                    createdAt: '2025-01-20T10:29:58.000Z'
                  - id: cm5xyz987wvu654tsr321qpo0
                    type: EIP_155_TX_V1
                    event:
                      data:
                        - transactionHash: >-
                            0x9b1c2d3e4f567890abcdef1234567890abcdef1234567890abcdef1234567890
                          chainId: eip155:1
                      metadata:
                        deliveryEventId: cm5xyz987wvu654tsr321qpo0
                      type: EIP_155_TX_V1
                    status: FAILED
                    sentAt: '2025-01-20T11:05:12.000Z'
                    attempts: 10
                    createdAt: '2025-01-20T11:00:00.000Z'
                metadata:
                  alertWebhook:
                    id: cm4voycw2001f68veade3tr0i
                    url: https://example.com/alerts-webhooks/1/events
                  cursor: cm5xyz987wvu654tsr321qpo0
                  take: 100
                  hasMore: true
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - invalid or missing authentication token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    alertWebhookId:
      name: alertWebhookId
      in: path
      required: true
      description: The unique identifier of the alert webhook.
      schema:
        type: string
  schemas:
    AlertWebhookDeliveryEventsResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AlertWebhookDeliveryEvent'
        metadata:
          type: object
          properties:
            alertWebhook:
              type: object
              properties:
                id:
                  type: string
                url:
                  type: string
            cursor:
              type: string
              nullable: true
              description: >-
                ID of the last delivery event in this page. Pass as `cursor` on
                the next request to fetch the following page. `null` when there
                are no more results.
            take:
              type: integer
            hasMore:
              type: boolean
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message describing what went wrong
    AlertWebhookDeliveryEvent:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the delivery event.
        type:
          type: string
          description: The alert webhook event type.
          enum:
            - EIP_155_TX_V1
            - PRE_SIGN_V1
            - SOLANA_TX_V1
            - SOLANA_TX_V2
            - SOLANA_APPROVE_V1
            - SOLANA_APPROVE_V2
            - SOLANA_REVOKE_V1
            - SOLANA_REVOKE_V2
            - SOLANA_DELEGATED_TRANSFER_V2
            - WALLET_EJECT_V1
        event:
          type: object
          description: >-
            The full payload that was (or will be) POSTed to your alert webhook
            URL. Shape varies by `type`.
          additionalProperties: true
        status:
          type: string
          description: >
            Current delivery status:

            - `PENDING` — awaiting automatic delivery.

            - `DELIVERED` — your webhook returned a 2XX response on some
            attempt.

            - `FAILED` — automatic retries were exhausted, or a manual retry
            failed.

            - `REPLAYING` — a manual retry is currently in flight.
          enum:
            - PENDING
            - DELIVERED
            - FAILED
            - REPLAYING
        sentAt:
          type: string
          format: date-time
          nullable: true
          description: >-
            Timestamp of the most recent delivery attempt. `null` if no attempt
            has been made yet.
        attempts:
          type: integer
          description: >-
            The number of delivery attempts that have been made for this event,
            including both automatic retries and manual retries.
          example: 0
        createdAt:
          type: string
          format: date-time
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: |
        Portal API Key (Custodian API Key). Pass as a Bearer token in the
        Authorization header.

````