curl --request GET \
--url https://app.thinnest.ai/api/v1/conversations \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "conv_8d41f2a7-3c6e-4b19-9f05-6a2e7c1d4b83",
"channel": "whatsapp",
"customer": {
"id": "cust_4e7b1c9d-2a6f-4385-b0d2-9f6a3e8c1b74",
"phone": "919876543210"
},
"status": "active",
"lastInboundAt": "2026-10-06T10:15:01.482Z",
"createdAt": "2026-10-03T08:02:44.117Z"
},
{
"id": "conv_1a9c5e3f-7b2d-4806-8e4a-c3f1d9b2a657",
"channel": "web",
"customer": null,
"status": "resolved",
"lastInboundAt": "2026-10-02T17:40:12.905Z",
"createdAt": "2026-10-02T17:38:55.310Z"
}
],
"nextCursor": "MjAyNi0xMC0wMlQxNzozODo1NS4zMTBafDFhOWM1ZTNmLTdiMmQtNDgwNi04ZTRhLWMzZjFkOWIyYTY1Nw"
}List Conversations
Your workspace’s conversations, newest first. since keeps only those a customer has written in at or after that moment — the way to find what a missed message.received webhook would have told you, including a conversation whose very first message you never heard about. Go back a few minutes from the last event you handled, since messages that arrive together can be delivered out of order.
curl --request GET \
--url https://app.thinnest.ai/api/v1/conversations \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "conv_8d41f2a7-3c6e-4b19-9f05-6a2e7c1d4b83",
"channel": "whatsapp",
"customer": {
"id": "cust_4e7b1c9d-2a6f-4385-b0d2-9f6a3e8c1b74",
"phone": "919876543210"
},
"status": "active",
"lastInboundAt": "2026-10-06T10:15:01.482Z",
"createdAt": "2026-10-03T08:02:44.117Z"
},
{
"id": "conv_1a9c5e3f-7b2d-4806-8e4a-c3f1d9b2a657",
"channel": "web",
"customer": null,
"status": "resolved",
"lastInboundAt": "2026-10-02T17:40:12.905Z",
"createdAt": "2026-10-02T17:38:55.310Z"
}
],
"nextCursor": "MjAyNi0xMC0wMlQxNzozODo1NS4zMTBafDFhOWM1ZTNmLTdiMmQtNDgwNi04ZTRhLWMzZjFkOWIyYTY1Nw"
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace. Refused with 404 (Workspace not found.) when the id is unknown, is not one of your customers, or is not an org_… id; 410 when that customer was deleted (restore it with POST /customers/{id}/restore until it is erased); 403 when the key belongs to one customer workspace (it cannot act as another); 400 when your workspace is not a developer workspace. /customers/* and GET /customers/usage are your own workspace's and refuse the header with 400: call them without it.
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Query Parameters
Only conversations on this channel.
whatsapp, web, telegram, voice, email ISO 8601 date and time. Keeps conversations where the customer last wrote at or after this moment.
Only conversations in this state. escalated and human_handling are the threads waiting on your team.
active, escalated, human_handling, resolved How many items to return, 1 to 100.
1 <= x <= 100The nextCursor from the previous page. Leave it out for the first page.