List Conversations
Returns a paginated list of all conversations for a given chatbot.
GET /api/dev/v1/chatbots/{chatbot_id}/conversations Authorization: Bearer <api-key>GET /api/dev/v1/chatbots/{chatbot_id}/conversations Authorization: Bearer <api-key>
Query Parameters
Filters
statusstringoptionalFilter by conversation status. One of: ACTIVE, CLOSED, ARCHIVED, HANDOFF_PENDING, AGENT_ACTIVE.
channelstringoptionalFilter by channel (e.g. whatsapp, web, sms, api).
start_timestringoptionalFilter conversations created at or after this time (ISO 8601, e.g. 2026-01-01T00:00:00Z).
end_timestringoptionalFilter conversations created at or before this time (ISO 8601).
Pagination
limitintegeroptionaldefault: 50Page size. Min 1, max 67.
cursorstringoptionalPagination cursor from a previous response.
curl -X GET "http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations?status=ACTIVE&channel=whatsapp&limit=25" \ -H "Authorization: Bearer <your-api-key>"curl -X GET "http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations?status=ACTIVE&channel=whatsapp&limit=25" \ -H "Authorization: Bearer <your-api-key>"
Response - 200 OK
{ "count": 1, "conversations": [ { "id": "01JPQ...", "chatbot_id": "01JMXYZ...", "user_phone": "+255712345678", "contact_name": "John", "channel": "whatsapp", "status": "ACTIVE", "last_message_id": "01JRS...", "last_message_at": "2026-02-18T14:35:00Z", "last_message_preview": "Thanks for your help!", "unread_count": 2, "created_at": "2026-02-18T14:22:00Z", "updated_at": "2026-02-18T14:35:00Z" } ], "next_cursor": "eyJpZCI6IjAxSlBRIn0=" }{ "count": 1, "conversations": [ { "id": "01JPQ...", "chatbot_id": "01JMXYZ...", "user_phone": "+255712345678", "contact_name": "John", "channel": "whatsapp", "status": "ACTIVE", "last_message_id": "01JRS...", "last_message_at": "2026-02-18T14:35:00Z", "last_message_preview": "Thanks for your help!", "unread_count": 2, "created_at": "2026-02-18T14:22:00Z", "updated_at": "2026-02-18T14:35:00Z" } ], "next_cursor": "eyJpZCI6IjAxSlBRIn0=" }
Get Conversation
Retrieves a single conversation by ID.
GET /api/dev/v1/chatbots/{chatbot_id}/conversations/{conversation_id} Authorization: Bearer <api-key>GET /api/dev/v1/chatbots/{chatbot_id}/conversations/{conversation_id} Authorization: Bearer <api-key>
curl -X GET http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations/<conversation-id> \ -H "Authorization: Bearer <your-api-key>"curl -X GET http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations/<conversation-id> \ -H "Authorization: Bearer <your-api-key>"
Response - 200 OK
{ "id": "01JPQ...", "chatbot_id": "01JMXYZ...", "user_phone": "+255712345678", "contact_name": "John", "channel": "whatsapp", "status": "ACTIVE", "last_message_id": "01JRS...", "last_message_at": "2026-02-18T14:35:00Z", "last_message_preview": "Thanks for your help!", "unread_count": 2, "created_at": "2026-02-18T14:22:00Z", "updated_at": "2026-02-18T14:35:00Z" }{ "id": "01JPQ...", "chatbot_id": "01JMXYZ...", "user_phone": "+255712345678", "contact_name": "John", "channel": "whatsapp", "status": "ACTIVE", "last_message_id": "01JRS...", "last_message_at": "2026-02-18T14:35:00Z", "last_message_preview": "Thanks for your help!", "unread_count": 2, "created_at": "2026-02-18T14:22:00Z", "updated_at": "2026-02-18T14:35:00Z" }
Get Conversation Messages
Returns messages for a conversation, ordered oldest first.
GET /api/dev/v1/chatbots/{chatbot_id}/conversations/{conversation_id}/messages Authorization: Bearer <api-key>GET /api/dev/v1/chatbots/{chatbot_id}/conversations/{conversation_id}/messages Authorization: Bearer <api-key>
Query Parameters
Pagination
limitintegeroptionaldefault: 50Page size. Min 1, max 67.
cursorstringoptionalPagination cursor from a previous response.
curl -X GET "http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations/<conversation-id>/messages?limit=25" \ -H "Authorization: Bearer <your-api-key>"curl -X GET "http://localhost:3000/api/dev/v1/chatbots/<chatbot-id>/conversations/<conversation-id>/messages?limit=25" \ -H "Authorization: Bearer <your-api-key>"
Response - 200 OK
{ "count": 2, "messages": [ { "id": "01JRS...", "conversation_id": "01JPQ...", "message": { "text": "Hello, I need help with my order" }, "response": { "text": "Hi! I'd be happy to help. What's your order number?" }, "message_type": "text", "responder": "BOT", "received_at": "2026-02-18T14:22:05Z", "responded_at": "2026-02-18T14:22:06Z", "status": "delivered", "created_at": "2026-02-18T14:22:05Z" } ], "next_cursor": null }{ "count": 2, "messages": [ { "id": "01JRS...", "conversation_id": "01JPQ...", "message": { "text": "Hello, I need help with my order" }, "response": { "text": "Hi! I'd be happy to help. What's your order number?" }, "message_type": "text", "responder": "BOT", "received_at": "2026-02-18T14:22:05Z", "responded_at": "2026-02-18T14:22:06Z", "status": "delivered", "created_at": "2026-02-18T14:22:05Z" } ], "next_cursor": null }
Conversation Object
ConversationRecord fields
idstringchatbot_idstringuser_phonestring+255712345678 for WhatsApp).contact_namestring | nullchannelstringwhatsapp, web, sms, api.statusstringACTIVE, CLOSED, ARCHIVED, HANDOFF_PENDING, AGENT_ACTIVE.last_message_idstring | nulllast_message_atstringlast_message_previewstring | nullunread_countintegercreated_atstringupdated_atstring | nullMessage Object
MessageRecord fields
idstringconversation_idstringmessageobject | nullresponseobject | nullmessage_typestringtext, image, document).responderstringBOT or HUMAN.received_atstringresponded_atstring | nullstatusstringcreated_atstringWant to chat with your bot via API?
Use the Chat API to create sessions and send messages programmatically. Conversations created via the Chat API appear here with channel=api.