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

# Get a webhook delivery

> Returns one delivery with the JSON body that was sent and every attempt with its status code (or why there was none) and the receiver's response body.



## OpenAPI

````yaml https://monid.ai/openapi.json get /v1/webhooks/{endpointId}/deliveries/{eventId}
openapi: 3.1.0
info:
  title: Monid API
  version: 0.1.0
  description: >-
    Agentic payment platform for data. Agents use it to discover and buy data on
    demand. Authenticated routes take a Monid API key as a Bearer token. Errors
    return `{ code, message }`. List endpoints use cursor pagination.
servers:
  - url: https://api.monid.ai
    description: Production
security: []
paths:
  /v1/webhooks/{endpointId}/deliveries/{eventId}:
    get:
      tags:
        - Webhooks
      summary: Get a webhook delivery
      description: >-
        Returns one delivery with the JSON body that was sent and every attempt
        with its status code (or why there was none) and the receiver's response
        body.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: Id of the webhook endpoint.
            example: 01JC9Q4MZ8T3R6P2N1K5V7W9XY
          required: true
          description: Id of the webhook endpoint.
          name: endpointId
          in: path
        - schema:
            type: string
            minLength: 1
            description: The event id (`webhook-id` header).
          required: true
          description: The event id (`webhook-id` header).
          name: eventId
          in: path
      responses:
        '200':
          description: The delivery and its attempts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDeliveryDetail'
        '400':
          description: >-
            Bad request. The input failed validation, and `message` says which
            field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized. The API key is missing, invalid, expired or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Forbidden. The API key lacks the scope this operation needs, or has
            no workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Delivery not found for this endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Rate limited. Wait the number of seconds in the `Retry-After`
            header, then retry. The `RateLimit-Limit`, `RateLimit-Remaining` and
            `RateLimit-Reset` headers describe the limit that applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer:
            - webhooks:read
components:
  schemas:
    WebhookDeliveryDetail:
      allOf:
        - $ref: '#/components/schemas/WebhookDelivery'
        - type: object
          properties:
            requestBody:
              type: string
              description: The exact JSON body that was sent.
            retryDelaysMs:
              type: array
              items:
                type: integer
              description: >-
                Waits after attempt 1, 2, … in milliseconds (±jitter; a longer
                Retry-After wins).
              example:
                - 5000
                - 300000
                - 1800000
            attempts:
              type: array
              items:
                $ref: '#/components/schemas/WebhookDeliveryAttempt'
          required:
            - requestBody
            - attempts
    Error:
      type: object
      properties:
        code:
          type: integer
          description: HTTP status code, duplicated in the body.
          example: 400
        message:
          type: string
          description: Human-readable error description.
          example: Bad Request
        errorCode:
          type: string
          enum:
            - BAD_REQUEST
            - VALIDATION_FAILED
            - INVALID_JSON
            - INVALID_CURSOR
            - UNAUTHENTICATED
            - FORBIDDEN
            - NOT_FOUND
            - CONFLICT
            - GONE
            - PAYLOAD_TOO_LARGE
            - INTERNAL_ERROR
            - NOT_IMPLEMENTED
            - BAD_GATEWAY
            - SERVICE_UNAVAILABLE
            - WALLET_NOT_ACTIVE
            - WALLET_PROVISIONING
            - WALLET_FAILED
            - RATE_LIMITED
            - X402_WORKSPACE_RESOURCES
            - X402_WORKSPACE_ONLY
            - X402_ACCRUING_COST
            - X402_EXCEEDS_SETTLEMENT_WINDOW
            - X402_VALIDITY_WINDOW_TOO_SHORT
            - X402_UNBOUNDED_PRICE
            - X402_SETTLEMENT_FAILED
            - INSUFFICIENT_SCOPE
            - WALLET_INSUFFICIENT_FUNDS
            - MAX_COST_EXCEEDED
            - IDEMPOTENCY_KEY_REUSED
            - IDEMPOTENCY_KEY_IN_USE
            - IDENTITY_PROVIDER_UNKNOWN
            - IDENTITY_LINK_REQUIRES_SESSION
            - IDENTITY_LINK_STATE_INVALID
            - IDENTITY_VERIFICATION_FAILED
            - IDENTITY_ASSURANCE_INSUFFICIENT
            - IDENTITY_PROVIDER_UNAVAILABLE
            - IDENTITY_ALREADY_LINKED
            - IDENTITY_USER_ALREADY_LINKED
            - IDENTITY_LINK_RATE_LIMITED
            - IDENTITY_REQUIRED
            - PROMO_IDENTITY_REDEEMED
            - PROMO_REDEEM_REQUIRES_SESSION
            - PROMO_CODE_REDEEMED_BY_WORKSPACE
            - PROMO_CODE_REDEEMED_BY_USER
            - WEBHOOK_REQUIRES_SESSION
            - WEBHOOK_URL_NOT_ALLOWED
            - WEBHOOK_ENDPOINT_LIMIT
            - WEBHOOK_ROTATION_LIMIT
          description: >-
            Machine-readable reason, present on every error. Either a specific
            code (for example `MAX_COST_EXCEEDED`) or the generic code of the
            HTTP status (for example `NOT_FOUND`). Treat an unknown value as the
            generic meaning of the status.
        hints:
          type: object
          additionalProperties:
            anyOf:
              - type: string
              - type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - command
                      - discover
                      - inspect
                      - run
                      - getRun
                      - stop
                      - releaseResource
                      - topup
                  command:
                    type: string
                  query:
                    type: string
                  provider:
                    type: string
                  endpoint:
                    type: string
                  runId:
                    type: string
                  resourceId:
                    type: string
                  stripe:
                    type: string
                  dashboard:
                    type: string
                  docs:
                    type: string
                  comment:
                    type: string
                required:
                  - kind
          description: >-
            Optional next actions, rendered for the calling client like
            run-response hints (e.g. the paid TinyFish version on a free-quota
            429 — spending permission required).
      required:
        - code
        - message
        - errorCode
    WebhookDelivery:
      type: object
      properties:
        eventId:
          type: string
          description: Same as the `webhook-id` header and the body `id`.
        eventType:
          type: string
        eventTimestamp:
          type: string
        status:
          type: string
          enum:
            - PENDING
            - DELIVERED
            - FAILED
            - STOPPED
        attemptCount:
          type: integer
        lastResponseStatusCode:
          type: integer
        lastFailureReason:
          type: string
          enum:
            - TIMEOUT
            - CONNECTION_FAILED
            - TLS_ERROR
            - DNS_FAILED
            - URL_NOT_ALLOWED
        lastAttemptAt:
          type: string
        nextAttemptAt:
          type: string
        maxAttempts:
          type: integer
          description: >-
            Attempts this delivery may make in total (absent on older
            deliveries).
          example: 10
      required:
        - eventId
        - eventType
        - eventTimestamp
        - status
        - attemptCount
    WebhookDeliveryAttempt:
      type: object
      properties:
        attemptNumber:
          type: integer
        attemptedAt:
          type: string
        durationMs:
          type: integer
        responseStatusCode:
          type: integer
        failureReason:
          type: string
          enum:
            - TIMEOUT
            - CONNECTION_FAILED
            - TLS_ERROR
            - DNS_FAILED
            - URL_NOT_ALLOWED
        failureMessage:
          type: string
        responseContentType:
          type: string
        responseBody:
          type: string
          description: The receiver's response body, up to 16 KB.
        responseBodyTruncated:
          type: boolean
        responseBodyBinaryBytes:
          type: integer
      required:
        - attemptNumber
        - attemptedAt
        - durationMs
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: Monid API key
      x-aep-authentication-method: api-key

````

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