---
title: "Retrieve a message"
method: GET
path: "/messages/{id}"
tags: ["Messages"]
---

# Retrieve a message

`GET /messages/{id}`

Note: This API endpoint can only retrieve messages that are no older than 10 days since their creation. If you require messages older than this, please generate an [MDR report.](https://developers.telnyx.com/api-reference/mdr-usage-reports/create-mdr-usage-report)

## Path parameters

- `id` string, uuid, required

## Response `200`

Successful response with details of a message.

- object
  - `data` union
    - MessagingOutboundMessagePayload
      - `record_type` 'message' — Identifies the type of the resource.
      - `direction` 'outbound' — The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you.
      - `id` string, uuid — Identifies the type of resource.
      - `type` 'SMS' | 'MMS' | 'RCS' — The type of message.
      - `messaging_profile_id` string — Unique identifier for a messaging profile.
      - `organization_id` string, uuid — The id of the organization the messaging profile belongs to.
      - `from` object
        - `phone_number` string — Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
        - `carrier` string — The carrier of the receiver.
        - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' — The line-type of the receiver.
        - `agent_id` string — RCS agent identifier.
        - `agent_name` string — RCS agent name.
      - `to` object[]
        - `phone_number` string — Receiving address (+E.164 formatted phone number or short code).
        - `status` 'queued' | 'sending' | 'sent' | 'expired' | 'sending_failed' | 'delivery_unconfirmed' | 'delivered' | 'delivery_failed' | 'read' — The delivery status of the message.
        - `carrier` string — The carrier of the receiver.
        - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' — The line-type of the receiver.
      - `cc` object[]
        - `phone_number` string — Receiving address (+E.164 formatted phone number or short code).
        - `status` 'queued' | 'sending' | 'sent' | 'delivered' | 'sending_failed' | 'delivery_failed' | 'delivery_unconfirmed'
        - `carrier` string — The carrier of the receiver.
        - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' — The line-type of the receiver.
      - `text` string — Message body (i.e., content) as a non-empty string. **Required for SMS**
      - `num_chars` integer — The number of characters in the message text
      - `subject` string, nullable — Subject of multimedia message
      - `media` object[]
        - `url` string, url — The url of the media requested to be sent.
        - `content_type` string, nullable — The MIME type of the requested media.
        - `sha256` string, nullable — The SHA256 hash of the requested media.
        - `size` integer, nullable — The size of the requested media.
      - `webhook_url` string, url, nullable — The URL where webhooks related to this message will be sent.
      - `webhook_failover_url` string, url, nullable — The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.
      - `encoding` string — Encoding scheme used for the message body.
      - `parts` integer — Number of parts into which the message's body must be split.
      - `tags` string[] — Tags associated with the resource.
      - `cost` object, nullable
        - `amount` string — The amount deducted from your account.
        - `currency` string — The ISO 4217 currency identifier.
      - `cost_breakdown` object, nullable — Detailed breakdown of the message cost components.
        - `carrier_fee` object
          - `amount` string — The carrier fee amount.
          - `currency` string — The ISO 4217 currency identifier.
        - `rate` object
          - `amount` string — The rate amount applied.
          - `currency` string — The ISO 4217 currency identifier.
      - `tcr_campaign_id` string, nullable — The Campaign Registry (TCR) campaign ID associated with the message.
      - `tcr_campaign_billable` boolean — Indicates whether the TCR campaign is billable.
      - `tcr_campaign_registered` string, nullable — The registration status of the TCR campaign.
      - `received_at` string, date-time — ISO 8601 formatted date indicating when the message request was received.
      - `sent_at` string, date-time, nullable — ISO 8601 formatted date indicating when the message was sent.
      - `completed_at` string, date-time, nullable — ISO 8601 formatted date indicating when the message was finalized.
      - `valid_until` string, date-time, nullable — Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled
      - `errors` MessagingError0b38e7044b[] — These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
        - `code` string, required
        - `title` string, required
        - `detail` string
        - `source` object
          - `pointer` string, json-pointer — JSON pointer (RFC6901) to the offending entity.
          - `parameter` string — Indicates which query parameter caused the error.
        - `meta` object
      - `smart_encoding_applied` boolean — Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks.
      - `wait_seconds` number, float, nullable — Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.
      - `body` object — RCS webhook message body. Text messages use the text property.
        - `text` string — RCS text message.
    - MessagingInboundMessagePayload
      - `autoresponse_type` string — Automatic response type triggered by an inbound opt-in, opt-out, or help keyword. Examples include START, STOP, and HELP.
      - `record_type` 'message' — Identifies the type of the resource.
      - `direction` 'inbound' — The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you.
      - `id` string, uuid — Identifies the type of resource.
      - `type` 'SMS' | 'MMS' | 'WHATSAPP' | 'RCS' — The messaging channel used for the message.
      - `messaging_profile_id` string — Unique identifier for a messaging profile.
      - `organization_id` string — Unique identifier for a messaging profile.
      - `to` union — Receiving address. SMS, MMS and RCS webhooks use an array of recipients. RCS recipients are identified by agent_id and agent_name. WhatsApp webhooks use one E.164 phone number.
        - object[]
          - `phone_number` string — Receiving address (+E.164 formatted phone number or short code).
          - `status` 'queued' | 'sending' | 'sent' | 'delivered' | 'sending_failed' | 'delivery_failed' | 'delivery_unconfirmed' | 'webhook_delivered'
          - `carrier` string — The carrier of the receiver.
          - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' — The line-type of the receiver.
          - `agent_id` string — RCS agent identifier.
          - `agent_name` string — RCS agent name.
        - string — WhatsApp receiving address in E.164 format.
      - `cc` object[]
        - `phone_number` string — Receiving address (+E.164 formatted phone number or short code).
        - `status` 'queued' | 'sending' | 'sent' | 'delivered' | 'sending_failed' | 'delivery_failed' | 'delivery_unconfirmed'
        - `carrier` string — The carrier of the receiver.
        - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' — The line-type of the receiver.
      - `from` object
        - `phone_number` string — Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
        - `status` 'received' | 'delivered' | 'webhook_delivered'
        - `carrier` string — The carrier of the sender.
        - `line_type` 'Wireline' | 'Wireless' | 'VoWiFi' | 'VoIP' | 'Pre-Paid Wireless' | '' | 'long_code' — The line-type of the sender.
      - `body` object — Message body for RCS and WhatsApp. RCS messages contain text, user_file, location, or suggestion_response. For WhatsApp edits and revocations, inspect type and the corresponding edit or revoke object.
        - `from` string — WhatsApp sender in E.164 format.
        - `id` string — Telnyx identifier for this webhook message.
        - `foreign_id` string — Meta WhatsApp message identifier for this webhook event.
        - `timestamp` string — Unix timestamp supplied by Meta.
        - `type` string — WhatsApp message body type. Edit and revoke events use `edit` and `revoke`, respectively.
        - `edit` object — Details for an edited WhatsApp message.
          - `original_message_id` string, required — Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque.
          - `message` object, required — Replacement WhatsApp message content. Its shape depends on the message type.
        - `revoke` object — Details for a revoked WhatsApp message.
          - `original_message_id` string, required — Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque.
        - `text` union — RCS text string or WhatsApp text object.
          - string
          - object
            - `body` string
        - `user_file` object — RCS file attachment and optional thumbnail.
          - `payload` object
            - `file_name` string
            - `file_size_bytes` integer
            - `file_uri` string
            - `mime_type` string
          - `thumbnail` object
            - `file_name` string
            - `file_size_bytes` integer
            - `file_uri` string
            - `mime_type` string
        - `location` object — Location shared in an RCS message.
          - `latitude` number
          - `longitude` number
        - `suggestion_response` object — Selected RCS suggestion.
          - `postback_data` string
          - `text` string
      - `text` string — Message body (i.e., content) as a non-empty string. **Required for SMS**
      - `num_chars` integer — The number of characters in the message text
      - `subject` string, nullable — Message subject.
      - `media` object[]
        - `url` string, url — The url of the media requested to be sent.
        - `content_type` string — The MIME type of the requested media.
        - `size` integer — The size of the requested media.
        - `hash_sha256` string — The SHA256 hash of the requested media.
      - `webhook_url` string, url, nullable — The URL where webhooks related to this message will be sent.
      - `webhook_failover_url` string, url, nullable — The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.
      - `encoding` string — Encoding scheme used for the message body.
      - `parts` integer — Number of parts into which the message's body must be split.
      - `tags` string[] — Tags associated with the resource.
      - `cost` object, nullable
        - `amount` string, nullable — The amount deducted from your account.
        - `currency` string, nullable — The ISO 4217 currency identifier.
      - `cost_breakdown` object, nullable — Detailed breakdown of the message cost components.
        - `carrier_fee` object
          - `amount` string — The carrier fee amount.
          - `currency` string — The ISO 4217 currency identifier.
        - `rate` object
          - `amount` string — The rate amount applied.
          - `currency` string — The ISO 4217 currency identifier.
      - `tcr_campaign_id` string, nullable — The Campaign Registry (TCR) campaign ID associated with the message.
      - `tcr_campaign_billable` boolean — Indicates whether the TCR campaign is billable.
      - `tcr_campaign_registered` string, nullable — The registration status of the TCR campaign.
      - `received_at` string, date-time — ISO 8601 formatted date indicating when the message request was received.
      - `sent_at` string, date-time, nullable — Not used for inbound messages.
      - `completed_at` string, date-time, nullable — Not used for inbound messages.
      - `valid_until` string, date-time, nullable — Not used for inbound messages.
      - `errors` MessagingError0b38e7044b[] — These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
        - `code` string, required
        - `title` string, required
        - `detail` string
        - `source` object
          - `pointer` string, json-pointer — JSON pointer (RFC6901) to the offending entity.
          - `parameter` string — Indicates which query parameter caused the error.
        - `meta` object

## Other responses

- `4XX` — Unexpected error

## Changes

> 82 revisions in range; 1 not diffed.

- **2026-09-22** `1d6415a4dca9` — 1 info
  - added the optional property `data/oneOf[#/components/schemas/MessagingInboundMessagePayload]/autoresponse_type` to the response with the `200` status
- **2026-09-21** `d18924181c6e` — 1 breaking, 1 info
  - added `#/components/schemas/MessagingOutboundMessagePayload, #/components/schemas/MessagingInboundMessagePayload` to the `data` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/messaging_OutboundMessagePayload, #/components/schemas/messaging_InboundMessagePayload` from the `data` response property `oneOf` list for the response status `200`
- **2026-09-16** `a6a61a29ecdd` — 3 breaking, 1 warning, 1 info
  - the response property `data/oneOf[#/components/schemas/messaging_InboundMessagePayload]/cost/amount` became nullable for the status `200`
  - the response property `data/oneOf[#/components/schemas/messaging_InboundMessagePayload]/cost/currency` became nullable for the status `200`
  - response property `data/oneOf[#/components/schemas/messaging_InboundMessagePayload]/to` list-of-types was widened by adding types `string` to media type `application/json` of response `200`
  - added the new `WHATSAPP` enum value to the `data/oneOf[#/components/schemas/messaging_InboundMessagePayload]/type` response property for the response status `200`
  - …1 more
- …earlier changes not shown

[Full history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/messages/:id/get.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/revisions/16bfa298dc71?raw)
