Skip to main content

Conversations

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>

Filter Parameters

ParameterTypeDescription
statusstringFilter by conversation status. One of: ACTIVE, CLOSED, ARCHIVED, HANDOFF_PENDING, AGENT_ACTIVE.
channelstringFilter by channel (e.g. whatsapp, web, sms, api).
start_timestringFilter conversations created at or after this time (ISO 8601, e.g. 2026-01-01T00:00:00Z).
end_timestringFilter conversations created at or before this time (ISO 8601).

Pagination Parameters

ParameterTypeDefaultDescription
limitinteger50Page size. Min 1, max 67.
cursorstring-Pagination cursor from a previous response.
curl -X GET "https://beta-api.sarufi.io/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="
}

Get Conversation

Retrieves a single conversation by ID.

GET /api/dev/v1/chatbots/{chatbot_id}/conversations/{conversation_id}
Authorization: Bearer <api-key>
curl -X GET https://beta-api.sarufi.io/api/dev/v1/chatbots/<chatbot-id>/conversations/<conversation-id> \
-H "Authorization: Bearer <your-api-key>"

Response - 200 OK - returns a single ConversationRecord (same shape as the list items above).


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>

Pagination Parameters

ParameterTypeDefaultDescription
limitinteger50Page size. Min 1, max 67.
cursorstring-Pagination cursor from a previous response.
curl -X GET "https://beta-api.sarufi.io/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
}

Conversation Object

FieldTypeDescription
idstringConversation ULID.
chatbot_idstringParent chatbot ID.
user_phonestringUser phone number (e.g. +255712345678 for WhatsApp).
contact_namestring | nullContact display name, if available.
channelstringIntegration channel: whatsapp, web, sms, api.
statusstringConversation status: ACTIVE, CLOSED, ARCHIVED, HANDOFF_PENDING, AGENT_ACTIVE.
last_message_idstring | nullID of the last message in the conversation.
last_message_atstringTimestamp of the most recent message.
last_message_previewstring | nullPreview text of the last message.
unread_countintegerNumber of unread messages.
created_atstringWhen the conversation was created.
updated_atstring | nullWhen the conversation was last updated.

Message Object

FieldTypeDescription
idstringMessage ULID.
conversation_idstringParent conversation ID.
messageobject | nullUser input payload.
responseobject | nullSystem response payload.
message_typestringMessage type (e.g. text, image, document).
responderstringWho responded: BOT or HUMAN.
received_atstringWhen the user message was received.
responded_atstring | nullWhen the response was sent.
statusstringMessage delivery status.
created_atstringWhen the record was created.
Want 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.