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"
}{
"error": "`channel` must be one of whatsapp, web, telegram, voice, email."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}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"
}{
"error": "`channel` must be one of whatsapp, web, telegram, voice, email."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}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.
"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.