List conversations
Your conversations as the dashboard’s inbox shows them, one per person or group chat, the most recent first.
/v1/conversations
Your conversations as the dashboard’s inbox shows them, one per person or group chat, the most recent first. filter narrows to unread, waiting (the last text is theirs) or archived, and q searches names, numbers, group names and the words of texts.
Needs a key with the messages:read scope.
Query parameters
qstringSearch names, numbers, group names and the words of texts.
Up to 100 characters.
filterstringall(not archived),unread,waiting(the last text is theirs) orarchived.One of
all,unread,waiting,archived.Default"all".limitintegerHow many to return, 1 to 100. Default 25.
1 to 100.Default
25.cursorstringThe
next_cursorof the page before. Leave it out for the first page.Up to 200 characters.
Example
/v1/conversationscurl "https://usebluebot.com/api/v1/conversations" \
-H "Authorization: Bearer $BLUEBOT_API_KEY"Response
200: A page of conversations.
object"list"requireddataarray of ConversationrequiredShow its 16 fieldsHide its fields
idstringrequiredA conv_ id.
Starts with
conv_.object"conversation"requiredkindstringrequiredpersonfor one person,groupfor a group chat.One of
person,group.titlestringrequiredThe person’s name, the group’s name, or their numbers, as the inbox shows it.
handlestring or nullrequiredThe person’s phone number or email address; null for a group.
contact_idstring or nullrequiredThe person, for a one-to-one conversation.
Starts with
ct_.chat_idstring or nullrequiredThe group chat, for a group.
Starts with
chat_.participantsarray of stringsrequiredEveryone in it besides you: one handle for a person, the members for a group.
servicestring or nullrequiredThe service the last text used, when known.
One of
imessage,sms.last_messageobject or nullrequiredShow its 6 fieldsHide its fields
idstringrequiredA msg_ id.
Starts with
msg_.directionstringrequiredOne of
in,out.statestringrequiredThe last text’s state.
previewstring or nullrequiredIts first 140 characters, or null when it had no words.
filesintegerrequiredHow many files it carried.
attimestamprequiredWhen it was sent or arrived.
last_message_attimestamp or nullrequiredWhen the last text was sent or arrived.
unread_countintegerrequiredTexts in that you haven’t opened in the dashboard.
waitingbooleanrequiredTrue when the last text is theirs, so they are waiting on you.
archivedbooleanrequiredMarked done. A new text in brings it back.
stoppedbooleanrequiredThe person is on your stop list.
created_attimestamprequiredWhen the conversation started.
has_morebooleanrequiredWhether another page follows.
next_cursorstring or nullrequiredSend as
cursorfor the next page; null on the last.
{
"object": "list",
"data": [
{
"id": "conv_1Hq2LxW9cVbN3mKpRtYs0a",
"object": "conversation",
"kind": "person",
"title": "Maria Alvarez",
"handle": "+15555550123",
"contact_id": "ct_1Hq2LxW9cVbN3mKpRtYs0a",
"chat_id": null,
"participants": [
"+15555550123"
],
"service": "imessage",
"last_message": {
"id": "msg_1Hq2LxW9cVbN3mKpRtYs0a",
"direction": "in",
"state": "received",
"preview": "Can we move the showing to 4?",
"files": 0,
"at": "2026-11-13T19:44:12.000Z"
},
"last_message_at": "2026-11-13T19:44:12.000Z",
"unread_count": 1,
"waiting": true,
"archived": false,
"stopped": false,
"created_at": "2026-11-02T15:20:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}Errors
Every refusal has the same envelope and a page of its own. These are the ones this operation can give.
| Code | Status | What it means |
|---|---|---|
| 401 | The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API. | |
| 403 | The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope. | |
| 429 | Too many requests. A key may make 120 requests a minute. The RateLimit header says how many are left, and Retry-After how long to wait. | |
| 500 | Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe. | |
| 400 | Something in the request doesn’t fit: a missing or malformed field, a bad id, or a combination the endpoint refuses. details names each field. |
Try it
Call this operation from the page with your own key. The key stays in this tab and is forgotten when you leave.