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

# Webhook Delivery History

> Check webhook attempts, failures, and the next delivery time.

Use the webhook ID returned when you create or list webhooks. The response includes up to 50 deliveries, newest first. It only returns deliveries owned by the signed-in account, including saved history for a deleted webhook.

Each delivery has a stable `event_id`, its event name, status, attempt count, next attempt time, last HTTP status or error code, and `attempt_history`. Event bodies, endpoint URLs, and signing secrets are not included.

Statuses are `pending`, `delivering`, `retrying`, `delivered`, `failed`, and `cancelled`. `failed` means the notification ran out of delivery attempts. Check the event name to distinguish that from a failed social post.

Error codes include `http_error`, `network_error`, `timeout`, `worker_interrupted`, and `endpoint_removed`. Raw endpoint responses are not saved.

If `next_before` is set, pass it as `?before=<next_before>` to read older deliveries. All times use UTC.


## OpenAPI

````yaml GET /api/v1/webhooks/{id}/deliveries
openapi: 3.0.3
info:
  title: Mallary API
  version: 1.6.0
  description: >
    Public API for multi-platform publishing, analytics, media upload, and
    webhooks.


    Authentication:

    - Use header `Authorization: Bearer {api_key}`.

    - API key identity is authoritative. Do not use `user_id` to identify a
    caller.


    Connection profiles:

    - Omit `profile_id` to use the authenticated user's default profile.

    - Send the profile's random public `profile_id` when you want to publish,
    list posts, read post analytics or audience counts, list platforms, update
    settings, or disconnect a platform for a non-default profile.

    - Use `GET /api/v1/profiles` to list profile IDs.

    - Per-platform account caps by plan: Free 1, Starter 4, Pro 10, Business 50.


    Rate limits (per user, per minute) depend on subscription plan:

    - plan_id 1: 75 req/min

    - plan_id 2: 150 req/min

    - plan_id 3: 750 req/min

    - plan_id 4: 1500 req/min
servers:
  - url: https://mallary.ai
    description: Production
security:
  - bearerAuth: []
externalDocs:
  description: Full product docs
  url: https://docs.mallary.ai/
paths:
  /api/v1/webhooks/{id}/deliveries:
    get:
      summary: List webhook delivery history
      description: >-
        Returns up to 50 saved deliveries for this account's webhook, newest
        first. Includes attempt history without event bodies or signing secrets.
      operationId: listWebhookDeliveries
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: before
          description: Use next_before from the last page to read older deliveries.
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Delivery and attempt history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDeliveryHistory'
        '400':
          description: Invalid id or cursor
        '401':
          description: Missing or invalid API key
components:
  schemas:
    WebhookDeliveryHistory:
      type: object
      properties:
        deliveries:
          type: array
          items:
            $ref: '#/components/schemas/WebhookDelivery'
        next_before:
          type: integer
          nullable: true
    WebhookDelivery:
      type: object
      properties:
        id:
          type: integer
        event_id:
          type: string
        event:
          $ref: '#/components/schemas/WebhookEvent'
        status:
          type: string
          enum:
            - pending
            - delivering
            - retrying
            - delivered
            - failed
            - cancelled
        attempts:
          type: integer
        next_attempt_at:
          type: string
          nullable: true
        last_status_code:
          type: integer
          nullable: true
        last_error_code:
          type: string
          nullable: true
        created_at:
          type: string
        delivered_at:
          type: string
          nullable: true
        attempt_history:
          type: array
          items:
            type: object
            properties:
              attempt_number:
                type: integer
              started_at:
                type: string
              finished_at:
                type: string
                nullable: true
              status_code:
                type: integer
                nullable: true
              error_code:
                type: string
                nullable: true
    WebhookEvent:
      type: string
      description: Use '*' to receive all events.
      enum:
        - '*'
        - post.scheduled
        - post.published
        - post.failed
        - post.partial
        - post.delayed
        - post.job_failed
        - auto_reply.posted
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Use `Authorization: Bearer {api_key}`'

````

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