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

# Get Message

> Fetch a single sent message by its ID.

Returns one message belonging to the calling account. The result is always scoped to the key's own account.

## Path Parameters

<ParamField path="messageId" type="string" required>
  The opaque message ID returned by the send endpoint. Treat it as a variable-length string.
</ParamField>

## Response Fields

<ResponseField name="message" type="object">
  The message row — same shape as a row in [List Messages](/api-reference/v2/messages/list-messages#response-fields).
</ResponseField>

## Examples

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.tracklysms.com/api/v2/messages/a1b2c3d4 \
    -H "X-Api-Key: trk_your_api_key"
  ```
</RequestExample>

<ResponseExample>
  ```json Success (200) theme={null}
  {
    "message": {
      "id": "a1b2c3d4",
      "from_number": "+18005551234",
      "to_number": "+14155551234",
      "body": "Hi",
      "status": "delivered",
      "segment_count": 1,
      "encoding": "GSM-7",
      "sending_list_id": 88,
      "timestamp": "2026-07-20T14:03:11.000000Z",
      "updated_at": "2026-07-20T14:05:00.000000Z",
      "dlr_status": "delivered",
      "is_terminal": true,
      "is_delivered": true,
      "provider_message_id": "O3iFf1Eu",
      "cost_state": "billed",
      "external_ids": { "external_location_id": "loc_west" }
    }
  }
  ```

  ```json Not found (404) theme={null}
  { "error": "Message not found", "code": "message_not_found" }
  ```
</ResponseExample>

## Error Codes

| HTTP Status | Error Code          | Description                                 |
| ----------- | ------------------- | ------------------------------------------- |
| 404         | `message_not_found` | No message with that ID under this account. |

Also `401 invalid_credentials`.
