Conversations. Every chat, on every channel.
List and read conversations from all channels (website, WhatsApp, Instagram, Messenger and the API) with their messages.
List conversations
/chatbots/{chatbotId}/conversationsThe chatbot's conversations, most recent activity first.
Permission: conversations:read
Path parameters
chatbotIdThe chatbot. Listed by GET /chatbots.
Query parameters
limitItems per page, 1 to 100. Default 20.
cursormeta.pagination.nextCursor from the previous page.
channelOnly this channel: web, api, whatsapp, instagram or facebook.
curl https://get-api.simplyboost.io/api/v1/chatbots/CHATBOT_ID/conversations?channel=api \
-H "Authorization: Bearer $SIMPLYBOOST_TOKEN"Response 200 OK
{
"ok": true,
"data": {
"conversations": [
{
"threadId": "3f0c9a52-6d1e-4b0a-9c51-0f3e2c7d8a14",
"chatbotId": "f45268b2-1980-470d-865d-5048a89aedce",
"channel": "api",
"mode": "ai",
"escalated": false,
"resolved": false,
"startedAt": "2026-10-07T09:30:00+00:00",
"lastMessageAt": "2026-10-07T09:31:40+00:00",
"messageCount": 4
}
]
},
"meta": {
"requestId": "req_…",
"pagination": { "limit": 20, "hasMore": true, "nextCursor": "MjAyNi0xMC0wN1Qw…" }
}
}Response fields
data.conversations[].threadIdThe conversation's ID.
data.conversations[].chatbotIdThe chatbot it belongs to.
data.conversations[].channelWhere it happens: web, api, whatsapp, instagram or facebook.
data.conversations[].modeWho answers: ai (the chatbot) or human (your team).
data.conversations[].escalatedTrue while a handover to your team is open.
data.conversations[].resolvedTrue once it was marked resolved.
data.conversations[].startedAtWhen it started.
data.conversations[].lastMessageAtWhen the last message was sent.
data.conversations[].messageCountNumber of messages.
meta.paginationlimit, hasMore (true when there is another page) and nextCursor (null on the last page).
Errors
| Status | Code | When |
|---|---|---|
| 404 | not_found | No such chatbot, or this token may not see it. |
| 400 | validation_error | limit or cursor is not valid. |
Get a conversation with its messages
/chatbots/{chatbotId}/conversations/{threadId}One conversation with all its messages, oldest first. For long conversations, page through them with the next endpoint.
Permission: conversations:read
Path parameters
chatbotIdThe chatbot. Listed by GET /chatbots.
threadIdThe conversation, from conversation.threadId.
curl https://get-api.simplyboost.io/api/v1/chatbots/CHATBOT_ID/conversations/THREAD_ID \
-H "Authorization: Bearer $SIMPLYBOOST_TOKEN"Response 200 OK
{
"ok": true,
"data": {
"conversation": {
"threadId": "3f0c9a52-6d1e-4b0a-9c51-0f3e2c7d8a14",
"channel": "api",
"mode": "ai",
…,
"messageCount": 2,
"messages": [
{ "id": "…", "role": "user", "text": "Do you ship to Belgium?", "createdAt": "2026-10-07T09:30:00+00:00" },
{ "id": "…", "role": "assistant", "text": "Yes. Next-day to Belgium, free over €50.", "createdAt": "2026-10-07T09:30:04+00:00" }
]
}
},
"meta": { "requestId": "req_7c1e4b2a9f0d4e6c8b3a5d7f9e1c2b4a" }
}Response fields
data.conversation.threadIdThe conversation's ID.
data.conversation.chatbotIdThe chatbot it belongs to.
data.conversation.channelWhere it happens: web, api, whatsapp, instagram or facebook.
data.conversation.modeWho answers: ai (the chatbot) or human (your team).
data.conversation.escalatedTrue while a handover to your team is open.
data.conversation.resolvedTrue once it was marked resolved.
data.conversation.startedAtWhen it started.
data.conversation.lastMessageAtWhen the last message was sent.
data.conversation.messageCountNumber of messages.
data.conversation.messages[].idThe message's ID.
data.conversation.messages[].roleuser (the visitor), assistant (the chatbot) or agent (a person on your team).
data.conversation.messages[].textThe message text.
data.conversation.messages[].createdAtWhen it was sent.
Errors
| Status | Code | When |
|---|---|---|
| 404 | not_found | No such chatbot or conversation, or this token may not see it. |
List a conversation's messages
/chatbots/{chatbotId}/conversations/{threadId}/messagesThe conversation's messages, newest first, a page at a time.
Permission: conversations:read
Path parameters
chatbotIdThe chatbot. Listed by GET /chatbots.
threadIdThe conversation, from conversation.threadId.
Query parameters
limitItems per page, 1 to 100. Default 20.
cursormeta.pagination.nextCursor from the previous page.
curl https://get-api.simplyboost.io/api/v1/chatbots/CHATBOT_ID/conversations/THREAD_ID/messages?limit=50 \
-H "Authorization: Bearer $SIMPLYBOOST_TOKEN"Response 200 OK
{
"ok": true,
"data": {
"messages": [
{ "id": "…", "role": "assistant", "text": "Yes. Next-day to Belgium, free over €50.", "createdAt": "2026-10-07T09:30:04+00:00" },
{ "id": "…", "role": "user", "text": "Do you ship to Belgium?", "createdAt": "2026-10-07T09:30:00+00:00" }
]
},
"meta": { "requestId": "req_…", "pagination": { "limit": 50, "hasMore": false, "nextCursor": null } }
}Response fields
data.messages[].idThe message's ID.
data.messages[].roleuser (the visitor), assistant (the chatbot) or agent (a person on your team).
data.messages[].textThe message text.
data.messages[].createdAtWhen it was sent.
meta.paginationlimit, hasMore (true when there is another page) and nextCursor (null on the last page).
Errors
| Status | Code | When |
|---|---|---|
| 404 | not_found | No such chatbot or conversation, or this token may not see it. |
| 400 | validation_error | limit or cursor is not valid. |