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

# Get WhatsApp message

> Get a WhatsApp message by ID with full details and related data



## OpenAPI

````yaml /openapi.json get /v1/organization/whatsapp/messages/{messageId}
openapi: 3.1.0
info:
  version: 1.0.0
  title: Chirp API
  description: Communication APIs for SMS, MMS, and WhatsApp messaging
servers:
  - url: https://api.buildwithchirp.com
security: []
paths:
  /v1/organization/whatsapp/messages/{messageId}:
    get:
      tags:
        - Admin
        - WhatsApp Messages
      parameters:
        - schema:
            type: string
            pattern: ^msg_wa_(?:test_)?[a-zA-Z0-9]{27}$
            example: msg_wa_2DbBs7GWhGvVNJGrDXr5RG0mBWI
            description: >-
              Unique identifier for a WhatsApp Message. Format:
              msg_wa_[test_]{ksuid}
          required: true
          description: >-
            Unique identifier for a WhatsApp Message. Format:
            msg_wa_[test_]{ksuid}
          name: messageId
          in: path
      responses:
        '200':
          description: WhatsApp message details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WhatsAppMessageDetail'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Message not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - adminAuth: []
components:
  schemas:
    WhatsAppMessageDetail:
      type: object
      properties:
        id:
          type: string
          pattern: ^msg_wa_(?:test_)?[a-zA-Z0-9]{27}$
          example: msg_wa_2DbBs7GWhGvVNJGrDXr5RG0mBWI
          description: >-
            Unique identifier for a WhatsApp Message. Format:
            msg_wa_[test_]{ksuid}
        whatsappPhoneNumberId:
          type: string
        displayPhoneNumber:
          type:
            - string
            - 'null'
        fromPhoneNumber:
          type: string
        toPhoneNumber:
          type: string
        type:
          type: string
          enum:
            - text
            - image
            - video
            - audio
            - document
            - location
            - contacts
            - template
            - interactive
            - reaction
            - sticker
            - button
            - order
            - system
            - pin
            - unknown
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
        contactName:
          type:
            - string
            - 'null'
        textBody:
          type:
            - string
            - 'null'
        mediaUrl:
          type:
            - string
            - 'null'
        mediaMimeType:
          type:
            - string
            - 'null'
        mediaFilename:
          type:
            - string
            - 'null'
        mediaCaption:
          type:
            - string
            - 'null'
        mediaFileSize:
          type:
            - number
            - 'null'
        mediaSha256:
          type:
            - string
            - 'null'
        isVoiceNote:
          type:
            - boolean
            - 'null'
        isAnimatedSticker:
          type:
            - boolean
            - 'null'
        locationLatitude:
          type:
            - string
            - 'null'
        locationLongitude:
          type:
            - string
            - 'null'
        locationName:
          type:
            - string
            - 'null'
        locationAddress:
          type:
            - string
            - 'null'
        reactionEmoji:
          type:
            - string
            - 'null'
        reactionMessageId:
          type:
            - string
            - 'null'
        contactsData: {}
        templateData: {}
        interactiveData: {}
        buttonText:
          type:
            - string
            - 'null'
        buttonPayload:
          type:
            - string
            - 'null'
        replyToMessageId:
          type:
            - string
            - 'null'
        isForwarded:
          type: boolean
        isFrequentlyForwarded:
          type: boolean
        hasReferral:
          type: boolean
        systemData: {}
        queuedAt:
          type:
            - string
            - 'null'
          format: date-time
        sentAt:
          type:
            - string
            - 'null'
          format: date-time
        deliveredAt:
          type:
            - string
            - 'null'
          format: date-time
        readAt:
          type:
            - string
            - 'null'
          format: date-time
        failedAt:
          type:
            - string
            - 'null'
          format: date-time
        errorCode:
          type:
            - string
            - 'null'
        errorMessage:
          type:
            - string
            - 'null'
        errorTitle:
          type:
            - string
            - 'null'
        errorDetails:
          type:
            - string
            - 'null'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        recipients:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              phoneNumber:
                type: string
              status:
                type: string
                enum:
                  - QUEUED
                  - SENT
                  - DELIVERED
                  - READ
                  - FAILED
              queuedAt:
                type:
                  - string
                  - 'null'
                format: date-time
              sentAt:
                type:
                  - string
                  - 'null'
                format: date-time
              deliveredAt:
                type:
                  - string
                  - 'null'
                format: date-time
              readAt:
                type:
                  - string
                  - 'null'
                format: date-time
              failedAt:
                type:
                  - string
                  - 'null'
                format: date-time
              errorCode:
                type:
                  - string
                  - 'null'
              errorMessage:
                type:
                  - string
                  - 'null'
              createdAt:
                type: string
                format: date-time
              updatedAt:
                type: string
                format: date-time
            required:
              - id
              - phoneNumber
              - status
              - queuedAt
              - sentAt
              - deliveredAt
              - readAt
              - failedAt
              - errorCode
              - errorMessage
              - createdAt
              - updatedAt
        referral:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            sourceUrl:
              type:
                - string
                - 'null'
            sourceId:
              type:
                - string
                - 'null'
            sourceType:
              type:
                - string
                - 'null'
            headline:
              type:
                - string
                - 'null'
            body:
              type:
                - string
                - 'null'
            mediaType:
              type:
                - string
                - 'null'
            imageUrl:
              type:
                - string
                - 'null'
            videoUrl:
              type:
                - string
                - 'null'
            thumbnailUrl:
              type:
                - string
                - 'null'
            ctwaClid:
              type:
                - string
                - 'null'
            welcomeMessage:
              type:
                - string
                - 'null'
            createdAt:
              type: string
              format: date-time
          required:
            - id
            - sourceUrl
            - sourceId
            - sourceType
            - headline
            - body
            - mediaType
            - imageUrl
            - videoUrl
            - thumbnailUrl
            - ctwaClid
            - welcomeMessage
            - createdAt
        order:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            catalogId:
              type: string
            orderText:
              type:
                - string
                - 'null'
            totalItems:
              type: number
            createdAt:
              type: string
              format: date-time
            items:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  productRetailerId:
                    type: string
                  quantity:
                    type: number
                  itemPrice:
                    type:
                      - string
                      - 'null'
                  currency:
                    type:
                      - string
                      - 'null'
                required:
                  - id
                  - productRetailerId
                  - quantity
                  - itemPrice
                  - currency
          required:
            - id
            - catalogId
            - orderText
            - totalItems
            - createdAt
            - items
        conversationWindow:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            originType:
              type: string
            pricingBillable:
              type:
                - boolean
                - 'null'
            pricingModel:
              type:
                - string
                - 'null'
            pricingCategory:
              type:
                - string
                - 'null'
            startedAt:
              type:
                - string
                - 'null'
              format: date-time
            expiresAt:
              type:
                - string
                - 'null'
              format: date-time
            createdAt:
              type: string
              format: date-time
          required:
            - id
            - originType
            - pricingBillable
            - pricingModel
            - pricingCategory
            - startedAt
            - expiresAt
            - createdAt
      required:
        - id
        - whatsappPhoneNumberId
        - displayPhoneNumber
        - fromPhoneNumber
        - toPhoneNumber
        - type
        - direction
        - contactName
        - textBody
        - mediaUrl
        - mediaMimeType
        - mediaFilename
        - mediaCaption
        - mediaFileSize
        - mediaSha256
        - isVoiceNote
        - isAnimatedSticker
        - locationLatitude
        - locationLongitude
        - locationName
        - locationAddress
        - reactionEmoji
        - reactionMessageId
        - buttonText
        - buttonPayload
        - replyToMessageId
        - isForwarded
        - isFrequentlyForwarded
        - hasReferral
        - queuedAt
        - sentAt
        - deliveredAt
        - readAt
        - failedAt
        - errorCode
        - errorMessage
        - errorTitle
        - errorDetails
        - createdAt
        - updatedAt
        - recipients
        - referral
        - order
        - conversationWindow
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - invalid_request_error
                - authentication_error
                - provider_error
                - api_error
              description: The type of error returned
              example: invalid_request_error
            code:
              type: string
              enum:
                - message_undeliverable
                - conversation_window_expired
                - recipient_not_on_whatsapp
                - phone_number_not_assigned
                - unsupported_message_type
                - media_too_large
                - invalid_phone_number
                - template_not_found
                - template_parameter_mismatch
                - groups_not_eligible
                - account_restricted
                - display_name_not_approved
                - whatsapp_not_configured
                - meta_api_error
                - meta_api_unavailable
                - telnyx_api_error
                - telnyx_api_unavailable
                - rate_limit_exceeded
                - whatsapp_rate_limited
                - resource_already_exists
                - test_app_required
                - call_not_found
                - call_already_ended
                - call_failed
                - call_rejected
                - call_timeout
                - call_busy
                - calling_not_configured
                - calling_disabled
                - max_concurrent_calls_reached
                - recording_not_found
                - recording_already_in_progress
                - recording_failed
                - voicemail_not_found
                - voicemail_disabled
                - invalid_call_command
                - command_not_applicable
                - whatsapp_calling_not_enabled
                - whatsapp_call_permission_required
                - whatsapp_call_permission_limit
                - whatsapp_pstn_bridge_forbidden
                - livekit_api_error
                - livekit_room_error
                - sip_trunk_error
              description: A machine-readable error code for programmatic handling
              example: invalid_phone_number
            message:
              type: string
              description: Human-readable error message
              example: The phone number "+1abc" is not in E.164 format.
            doc_url:
              type: string
              format: uri
              description: URL to documentation for this error code
              example: >-
                https://docs.buildwithchirp.com/api_reference/error-codes#invalid_phone_number
            param:
              type: string
              description: The parameter that caused the error
              example: from
            provider:
              $ref: '#/components/schemas/ProviderError'
            additional_info:
              type: array
              items:
                type: string
              description: Human-readable remediation hints (e.g. from Meta Health Status).
          required:
            - type
            - message
      required:
        - error
    ProviderError:
      type: object
      properties:
        source:
          type: string
          enum:
            - meta
            - telnyx
            - livekit
          description: Provider name
          example: meta
        code:
          anyOf:
            - type: number
            - type: string
          description: Provider's native error code
        message:
          type: string
          description: Provider's error message
        fbtrace_id:
          type: string
          description: Meta's trace ID for support tickets
        health_status:
          $ref: '#/components/schemas/HealthStatusPayload'
      required:
        - source
        - code
        - message
    HealthStatusPayload:
      type: object
      properties:
        can_send_message:
          type: string
          enum:
            - AVAILABLE
            - LIMITED
            - BLOCKED
          description: Meta Health Status value
        entities:
          type: array
          items:
            $ref: '#/components/schemas/HealthStatusEntity'
      required:
        - can_send_message
        - entities
      description: >-
        Meta Health Status payload, present when the error was enriched via the
        Health Status API.
    HealthStatusEntity:
      oneOf:
        - type: object
          properties:
            entity_type:
              type: string
              enum:
                - PHONE_NUMBER
                - MESSAGE_TEMPLATE
                - WABA
                - BUSINESS
                - APP
            id:
              type: string
            can_send_message:
              type: string
              enum:
                - AVAILABLE
            can_receive_call_sip:
              type: string
              enum:
                - AVAILABLE
                - LIMITED
                - BLOCKED
              description: Meta Health Status value
            errors:
              type: array
              items:
                $ref: '#/components/schemas/HealthStatusError'
          required:
            - entity_type
            - id
            - can_send_message
        - type: object
          properties:
            entity_type:
              type: string
              enum:
                - PHONE_NUMBER
                - MESSAGE_TEMPLATE
                - WABA
                - BUSINESS
                - APP
            id:
              type: string
            can_send_message:
              type: string
              enum:
                - LIMITED
            can_receive_call_sip:
              type: string
              enum:
                - AVAILABLE
                - LIMITED
                - BLOCKED
              description: Meta Health Status value
            additional_info:
              type: array
              items:
                type: string
            errors:
              type: array
              items:
                $ref: '#/components/schemas/HealthStatusError'
          required:
            - entity_type
            - id
            - can_send_message
            - additional_info
        - type: object
          properties:
            entity_type:
              type: string
              enum:
                - PHONE_NUMBER
                - MESSAGE_TEMPLATE
                - WABA
                - BUSINESS
                - APP
            id:
              type: string
            can_send_message:
              type: string
              enum:
                - BLOCKED
            can_receive_call_sip:
              type: string
              enum:
                - AVAILABLE
                - LIMITED
                - BLOCKED
              description: Meta Health Status value
            errors:
              type: array
              items:
                $ref: '#/components/schemas/HealthStatusError'
          required:
            - entity_type
            - id
            - can_send_message
            - errors
    HealthStatusError:
      type: object
      properties:
        error_code:
          type: number
        error_description:
          type: string
        possible_solution:
          type: string
      required:
        - error_code
        - error_description
        - possible_solution
  securitySchemes:
    adminAuth:
      type: http
      scheme: bearer
      description: 'Admin API key (format: sk_admin_*) for organization-level operations'

````