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

# Get a send

> Returns a message sent through the API, by the `messageId` the send answered: recipient, type, status and when it was sent, delivered and read. An alternative to the `MESSAGE.STATUS_UPDATED` webhook for those who prefer to poll. Only finds the instance's own messages, and only sends made through the API (messages typed on the phone and received messages are not here).



## OpenAPI

````yaml /en/api-reference/openapi.json get /messages/{messageId}
openapi: 3.1.0
info:
  title: Zapfy API
  description: >-
    Multi-tenant WhatsApp API. Send messages and manage webhooks through a
    single surface.
  version: 1.0.0
servers:
  - url: https://api.zapfy.io/v1
security:
  - accountToken: []
paths:
  /messages/{messageId}:
    get:
      tags:
        - Messages
      summary: Get a send
      description: >-
        Returns a message sent through the API, by the `messageId` the send
        answered: recipient, type, status and when it was sent, delivered and
        read. An alternative to the `MESSAGE.STATUS_UPDATED` webhook for those
        who prefer to poll. Only finds the instance's own messages, and only
        sends made through the API (messages typed on the phone and received
        messages are not here).
      parameters:
        - name: messageId
          in: path
          required: true
          schema:
            type: string
          description: '`messageId` the send answered.'
          example: 3EB0C767D26A1D8E4F2B
      responses:
        '200':
          $ref: '#/components/responses/SentMessage'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
      security:
        - instanceToken: []
components:
  responses:
    SentMessage:
      description: The send.
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                $ref: '#/components/schemas/SentMessage'
    Error:
      description: Error.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                example: Instance not found
  schemas:
    SentMessage:
      type: object
      description: A message sent through the API.
      required:
        - messageId
        - to
        - type
        - status
        - createdAt
      properties:
        messageId:
          type: string
          description: WhatsApp message ID, the same as the send and the webhooks.
          example: 3EB0C767D26A1D8E4F2B
        to:
          type: string
          description: Recipient, as sent in `to`.
          example: '5511999998888'
        type:
          type: string
          enum:
            - TEXT
            - IMAGE
            - VIDEO
            - AUDIO
            - DOCUMENT
            - STICKER
            - LOCATION
            - CONTACT
            - POLL
            - INTERACTIVE
          description: >-
            What was sent. `send-link` is `TEXT`; `send-button`, `send-list` and
            `send-carousel` are `INTERACTIVE`.
          example: TEXT
        status:
          type: string
          enum:
            - QUEUED
            - SENT
            - DELIVERED
            - READ
            - FAILED
          description: >-
            `QUEUED` (accepted, in the instance's queue) · `SENT` (✓, WhatsApp
            accepted it) · `DELIVERED` (✓✓, reached the device) · `READ` (blue
            ✓✓) · `FAILED` (not sent; see `failureReason`). Only moves forward.
          example: DELIVERED
        failureReason:
          type: string
          enum:
            - NOT_ON_WHATSAPP
            - MEDIA_DOWNLOAD_FAILED
            - MEDIA_INVALID
            - MEDIA_UPLOAD_FAILED
            - INVALID_MESSAGE
            - INSTANCE_LOGGED_OUT
            - INSTANCE_DELETED
            - WHATSAPP_ERROR
          description: >-
            Reason code, stable to group by and branch on: `NOT_ON_WHATSAPP`
            (the number has no WhatsApp) · `MEDIA_DOWNLOAD_FAILED` (couldn't
            download the media from the URL) · `MEDIA_INVALID` (the file isn't
            valid for the message type) · `MEDIA_UPLOAD_FAILED` (WhatsApp
            rejected the media upload) · `INVALID_MESSAGE` (WhatsApp doesn't
            accept that content there) · `INSTANCE_LOGGED_OUT` (the instance was
            logged out with the message queued) · `INSTANCE_DELETED` (the
            instance was deleted with the message queued) · `WHATSAPP_ERROR`
            (WhatsApp refused the send after the retries). Present only with
            `status` FAILED.
        failureMessage:
          type: string
          description: >-
            What happened, in a sentence with the original error. To show or
            log; to decide, use `failureReason`. Present only with `status`
            FAILED.
          example: >-
            Could not download the media from the URL after 4 attempts: failed
            to download file: HTTP status 404
        createdAt:
          type: string
          format: date-time
          description: When the send was accepted (202).
          example: '2026-10-04T11:59:59.000Z'
        sentAt:
          type: string
          format: date-time
          description: When WhatsApp accepted the send. Absent while queued.
          example: '2026-10-04T12:00:00.000Z'
        deliveredAt:
          type: string
          format: date-time
          description: When it reached the device. Absent until then.
          example: '2026-10-04T12:00:03.000Z'
        readAt:
          type: string
          format: date-time
          description: When it was read. Absent until then (or if read receipts are off).
        failedAt:
          type: string
          format: date-time
          description: When the send was given up. Present only with `status` FAILED.
  securitySchemes:
    accountToken:
      type: http
      scheme: bearer
      description: Account token (`zpfy_acct_...`) — manages instances and webhooks.
    instanceToken:
      type: http
      scheme: bearer
      description: Instance token (`zpfy_inst_...`) — sends messages.

````

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