AgentMessage
Conversations

List messages in a conversation

GET
/v1/conversations/{id}/messages

Returns the messages within a single conversation in chronological order. The {id} is the value returned from GET /v1/conversations. A malformed id returns 400 INVALID_INPUT; a well-formed but unknown id, including ids belonging to another organization, returns 404 NOT_FOUND.

Each message carries a direction of inbound or outbound; the rest of the shape is shared across both. Message content is subject to your retention window: once a message has passed retention, its body renders as null and media_urls as [], and the original content cannot be recovered.

Cursor pagination uses meta.next_cursor, which is null on the last page.

Requires the conversations:read scope.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Path Parameters

id*string

Query Parameters

cursor?string
limit?integer
Default50
Range1 <= value <= 200

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/conversations/string/messages"
{
  "success": true,
  "data": [
    {
      "id": "5a1b2c3d-4e5f-6789-abcd-ef0123456789",
      "direction": "inbound",
      "phone_number_id": "7c1f0a2d-9e8b-4c3a-9d2e-1f0a2b3c4d5e",
      "from_number": "+15554443333",
      "to_number": "+15551112222",
      "body": "Cancel my appointment please",
      "media_urls": [],
      "channel": "sms",
      "segment_count": 1,
      "created_at": "2026-04-28T12:00:01Z",
      "redacted_at": null
    },
    {
      "id": "8f3a2b1c-1c2d-4e5f-9a8b-0c1d2e3f4a5b",
      "direction": "outbound",
      "phone_number_id": "7c1f0a2d-9e8b-4c3a-9d2e-1f0a2b3c4d5e",
      "from_number": "+15551112222",
      "to_number": "+15554443333",
      "body": "Confirmed for Tuesday at 10am.",
      "media_urls": [],
      "channel": "sms",
      "segment_count": 1,
      "status": "delivered",
      "created_at": "2026-04-28T11:00:00Z",
      "redacted_at": null
    },
    {
      "id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b9",
      "direction": "outbound",
      "phone_number_id": "7c1f0a2d-9e8b-4c3a-9d2e-1f0a2b3c4d5e",
      "from_number": "+15551112222",
      "to_number": "+15554443333",
      "body": null,
      "media_urls": [],
      "channel": "sms",
      "segment_count": 1,
      "status": "delivered",
      "created_at": "2026-01-10T08:00:00Z",
      "redacted_at": "2026-04-10T03:11:42Z"
    }
  ],
  "meta": {
    "total": 0,
    "limit": 50,
    "offset": 0,
    "next_cursor": null
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "not found",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}