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

# Get a delivery log

> Returns one delivery log using the same public shape as the list endpoint.



## OpenAPI

````yaml api-reference/openapi.yaml GET /deliveries/{publicId}
openapi: 3.1.0
info:
  title: HookMyApp API
  version: 1.0.0
  description: >
    The HookMyApp REST API. Everything the dashboard and the CLI can do, your

    code and your AI agents can do too.


    ## Authentication


    Two kinds of Bearer credentials exist. Do not mix them up:


    - **API key (`hmok_...`)** authenticates *you* (or your agent) to
      `https://api.hookmyapp.com`.
      Create one in the dashboard under **Org → API keys → Create API Key**
      (full org access, optional expiration date, reveal or
      revoke it any time from that page), or without a
      browser via the [agent auth flow](#tag/agent-auth) described in
      [`GET /auth.md`](https://api.hookmyapp.com/auth.md). That flow can mint a
      scope-limited key. Send it as `Authorization: Bearer hmok_...`, or on
      `/mcp` as `X-API-Key: hmok_...`. Use it for org, workspace, customer,
      channel and webhook management.
    - **Channel token (`hmat_...`)** sends messages from one connected channel.
      Mint it with `GET /meta/channels/{id}/token`. It is not valid on
      `https://api.hookmyapp.com`.

    Browser sessions from the dashboard use the same endpoints with a session

    cookie or WorkOS JWT instead of `hmok_`.


    ## IDs


    Every ID on the wire is a typed public ID, never an internal UUID:

    `ws_` workspace/customer, `ch_` channel, `org_` organization,

    `cred_` connection credential, `ac_` agent credential.


    ## Workspace context


    Workspace-scoped routes (channels, webhook config, and deliveries) resolve
    the

    workspace from the `X-Workspace-Id: ws_XXXXXXXX` header.


    ## Errors


    Errors return a stable machine-readable `code` plus a human `message`.

    Agent tokens that exceed their granted scopes get `403
    AGENT_SCOPE_INSUFFICIENT`.


    ## Webhook signatures


    Deliveries to your webhook are signed with `X-HookMyApp-Signature-256`,

    an HMAC-SHA256 of the raw body keyed on the channel `WEBHOOK_HMAC_SECRET`.

    The Verify Token is a separate value used only for the GET ownership probe.
servers:
  - url: https://api.hookmyapp.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Agent auth
    description: Register an agent credential (`hmok_`) with email OTP, no browser needed
  - name: Organizations
    description: Your organization and its summary
  - name: Customers
    description: Customer workspaces you run messaging for (SaaS Mode)
  - name: Onboarding links
    description: Links your customers open to connect their own channels
  - name: Workspaces
    description: Team workspaces
  - name: Channels
    description: Connected WhatsApp and Instagram channels, and their channel tokens
  - name: Webhook config
    description: Where inbound messages are delivered for a channel
  - name: Deliveries
    description: Inspect inbound delivery logs and app responses
paths:
  /deliveries/{publicId}:
    get:
      tags:
        - Deliveries
      summary: Get a delivery log
      description: >-
        Returns one delivery log using the same public shape as the list
        endpoint.
      operationId: getDelivery
      parameters:
        - in: path
          name: publicId
          required: true
          schema:
            type: string
            pattern: ^wd_[A-Za-z0-9]+$
          description: Delivery log public ID from the list endpoint.
        - $ref: '#/components/parameters/WorkspaceHeader'
      responses:
        '200':
          description: Delivery log
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryLog'
              example:
                publicId: wd_9X2kQm4T
                receivedAt: '2026-07-06T12:00:00.000Z'
                sender: '14155552671'
                messageId: wamid.HBgMOTcyNTQ1NDM0Mzg0FQIAEhgg
                meta:
                  object: whatsapp_business_account
                  entry:
                    - id: '123456789'
                      changes: []
                hookmyapp:
                  status: delivered
                  statusText: Delivered to your app
                  destination:
                    type: webhook
                    url: https://example.com/webhooks/meta
                  appResponse:
                    status: 200
                    durationMs: 123
                    body:
                      ok: true
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
components:
  parameters:
    WorkspaceHeader:
      name: X-Workspace-Id
      in: header
      required: true
      schema:
        type: string
        pattern: ^ws_[A-Za-z0-9]{8}$
      description: Workspace ID for the request
  schemas:
    DeliveryLog:
      type: object
      required:
        - publicId
        - receivedAt
        - sender
        - messageId
        - meta
        - hookmyapp
      properties:
        publicId:
          type: string
          pattern: ^wd_[A-Za-z0-9]+$
          description: Delivery log ID. Use it with `GET /deliveries/{publicId}`.
        receivedAt:
          type: string
          format: date-time
        sender:
          type: string
          nullable: true
        messageId:
          type: string
          nullable: true
        meta:
          $ref: '#/components/schemas/DeliveryMetaPayload'
        hookmyapp:
          $ref: '#/components/schemas/DeliveryHookMyAppResult'
    DeliveryMetaPayload:
      description: Meta webhook payload received for this event.
      type: object
      properties:
        object:
          type: string
          description: >-
            Meta webhook object, such as `whatsapp_business_account` or
            `instagram`.
        entry:
          type: array
          description: Meta webhook entries for the event.
          items:
            type: object
            properties:
              id:
                type: string
                description: Meta account, page, or business object ID.
              changes:
                type: array
                description: WhatsApp change events.
                items:
                  type: object
                  properties:
                    field:
                      type: string
                    value:
                      type: object
                      additionalProperties: true
              messaging:
                type: array
                description: Instagram messaging events.
                items:
                  type: object
                  additionalProperties: true
            additionalProperties: true
      additionalProperties: true
    DeliveryHookMyAppResult:
      type: object
      required:
        - status
        - statusText
        - destination
        - appResponse
      properties:
        status:
          type: string
          enum:
            - delivered
            - no_response
            - rejected
            - not_delivered
            - skipped
        statusText:
          type: string
        destination:
          $ref: '#/components/schemas/DeliveryDestination'
        appResponse:
          $ref: '#/components/schemas/DeliveryAppResponse'
    Error:
      type: object
      properties:
        statusCode:
          type: integer
          example: 403
          description: HTTP status code
          mirrors the response status: null
        code:
          type: string
          description: Stable machine-readable code, e.g. `AGENT_SCOPE_INSUFFICIENT`
        message:
          type: string
        requestId:
          type: string
          description: Include this when contacting support about the request
    DeliveryDestination:
      type: object
      nullable: true
      description: Where HookMyApp attempted to deliver the webhook.
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - webhook
            - cli
        url:
          type: string
          format: uri
          nullable: true
          description: Present for webhook destinations.
        label:
          type: string
          nullable: true
          description: Present for CLI listener destinations.
          example: CLI listener
    DeliveryAppResponse:
      type: object
      required:
        - status
        - durationMs
        - body
      properties:
        status:
          type: integer
          nullable: true
        durationMs:
          type: integer
          nullable: true
        body:
          $ref: '#/components/schemas/DeliveryAppResponseBody'
    DeliveryAppResponseBody:
      description: >-
        Parsed JSON when possible, otherwise the raw text body returned by your
        app.
      oneOf:
        - type: object
          additionalProperties: true
        - type: array
          items: {}
        - type: string
        - type: 'null'
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: '`Authorization: Bearer hmok_...` API key or a dashboard session token'

````