Read a conversation's timeline
Build a request to copy
This page never sends a request. Fill in the fields, then copy the request and run it from your server.
curl -X GET 'https://api.whatsable.app/v1/conversations/string/timeline'
Returns what happened in a conversation, newest first: its messages, notes, AI decisions, AI status and bot changes, and label changes.
AI entries need
ai:read, and label entries needcontacts:read. Without that scope, a page leaves them out. Naming their types intypeswithout it answers403 insufficient_scope.
bearerAuthAuthorizationBearer <nfy_live_<32 characters>>An API key from Settings > API keys, sent as Authorization: Bearer <key>.
id*stringThe conversation id.
1 <= length <= 64limit?integerHow many items to return, 1 to 100.
1 <= value <= 10025cursor?stringThe next_cursor of the previous page. An expired or malformed cursor answers 400 invalid_cursor.
1 <= length <= 512types?stringOnly these entry types, comma-separated, such as message,ai_decision. An unknown type answers 400 validation_failed. AI types need ai:read, label types contacts:read. Naming one without its scope answers 403 insufficient_scope.
length <= 256created_after?stringOnly entries after this instant. For polling.
date-timeA page of timeline entries, newest first.
application/json- response
object*stringdata*array<|||||||>has_more*booleanTrue when another page follows this one.
next_cursor*|Pass as cursor to read the next page. Null on the last page. Valid for 24 hours.
curl -X GET 'https://api.whatsable.app/v1/conversations/string/timeline'{ "object": "list", "data": [ { "object": "timeline_entry", "id": "dec_cm2v8d1a00001qz8h6n7o8p9q", "type": "ai_decision", "at": "2026-10-28T13:40:12Z", "actor": { "type": "ai_bot", "id": "cm2v8b1a00001qz8h3j4k5l6m", "name": "Sales" }, "ai_decision": { "trigger": "reply", "outcome": "replied", "reason_code": null, "reasoning": "Asked for the Pro price, which is in the knowledge.", "labels": [ { "action": "add", "label_id": "cm2v8l1a00001qz8h2b3c4d5e", "name": "Lead", "outcome": "applied" } ], "files": [], "message_id": "cm2v8m1a00001qz8h0p1q2r3s", "attempt": null, "decided_at": "2026-10-28T13:40:05Z" } } ], "has_more": true, "next_cursor": "string"}Read a conversation and its 24-hour window GET
Returns a conversation and the state of its 24-hour window. Check `window_open` before you send a session message. Reading a conversation does not mark its messages as read.
List scheduled messages GET
Lists the scheduled messages on the numbers this key may use, newest first. The list includes messages that people and other integrations scheduled. `created_by` tells who.