Messages

List messages in a conversation

GET
/api/v1/conversations/{conversationId}/messages

The transcript, newest first. Page backwards through history with next_cursor.

Authorization

bearerAuth
AuthorizationBearer <token>

An API key from Settings → Integrations → Webhook (org admins only), sent as Authorization: Bearer rf_org_….

The scope is ranked — a key satisfies any requirement at or below its own tier:

  • read — see leads, conversations, transcripts and handoffs. Never changes anything.
  • write — create and update leads, claim and resolve handoffs.
  • admin — mint and revoke tokens, and change org-wide integration settings.

There is no approve scope. It was a rung once; it is not one now, and a key requested with it is rejected.

Tokens are org-scoped: one sees every agent's leads in its org. There is no project dimension. The token is shown once at creation and stored only as a hash.

In: header

Path Parameters

conversationId*string

The conversation to read.

Formatuuid

Query Parameters

limit?integer

Page size, 1–100. Defaults to 50.

Range1 <= value <= 100
Default50
cursor?string

Opaque cursor from a previous response's next_cursor. Omit for the first page.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/conversations/497f6eca-6276-4993-bfeb-53cbbbba6f08/messages"
{  "object": "list",  "data": [    {      "object": "message",      "id": "1f0b7e91-2c44-4a7e-91d8-6a3f2b5c0e11",      "conversation_id": "8c2d41aa-0f3e-4d61-9d0b-77b1c4e2a910",      "direction": "outbound",      "sender_type": "ai",      "content": "Happy to help — what's your budget range?",      "platform_message_id": "wamid.HBgLOTcxNTAxMjM0NTY3",      "media": null,      "created_at": "2026-07-15T09:31:12.000Z"    }  ],  "next_cursor": null,  "url": "/api/v1/conversations/8c2d41aa-0f3e-4d61-9d0b-77b1c4e2a910/messages"}