Returns the contact's voice calls and SMS chats merged into one list, newest first. Calls are matched by their link to the contact; SMS chats are matched by the contact's phone number on either side.
Request#
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Path parameter. The contact_id. |
Query parameters:
| Field | Type | Required | Description |
|---|---|---|---|
limit |
integer | No | 1 to 200. Default 50. |
before |
integer | No | Unix ms. Returns only conversations created before this time. Pass next_before from the previous page. |
kind |
string | No | all (default), call or sms. |
Example request#
curl "https://api.tried.com.au/list-contact-conversations/contact_4b8e2f1a9c3d5e7f6a0b2c4d?limit=20" \
-H "Authorization: Bearer $TRIED_API_KEY"const id = "contact_4b8e2f1a9c3d5e7f6a0b2c4d";
const res = await fetch(`https://api.tried.com.au/list-contact-conversations/${id}?limit=20`, {
headers: { Authorization: `Bearer ${process.env.TRIED_API_KEY}` },
});
const page = await res.json();import os, requests
contact_id = "contact_4b8e2f1a9c3d5e7f6a0b2c4d"
res = requests.get(
f"https://api.tried.com.au/list-contact-conversations/{contact_id}",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
params={"limit": 20},
)
page = res.json()Response#
200 OK
{
"contact_id": "contact_4b8e2f1a9c3d5e7f6a0b2c4d",
"conversations": [
{
"type": "call",
"id": "call_7c1d2e3f4a5b6c7d8e9f0a1b",
"timestamp": 1760853000000,
"agent_id": "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
"agent_name": "Reception",
"direction": "inbound",
"duration_ms": 95000,
"status": "ended",
"summary": "Sam asked to move the Tuesday 3pm appointment to Thursday.",
"user_sentiment": "Positive",
"call_successful": true,
"disconnection_reason": "user_hangup"
},
{
"type": "sms",
"id": "chat_9a8b7c6d5e4f3a2b1c0d9e8f",
"timestamp": 1760766600000,
"agent_id": "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
"agent_name": null,
"direction": "outbound",
"duration_ms": null,
"status": "ended",
"summary": null,
"user_sentiment": null,
"call_successful": null,
"disconnection_reason": null
}
],
"next_before": null
}| Field | Type | Description |
|---|---|---|
conversations[].type |
string | call or sms. |
conversations[].id |
string | A call_id or an SMS chat ID. |
conversations[].timestamp |
integer | Unix ms. The call's start time (its creation time if it never started), or the chat's creation time. |
conversations[].direction |
string | inbound or outbound. |
conversations[].status |
string | The call's call_status, or the SMS chat's status. |
conversations[].summary, user_sentiment, call_successful |
From the call's post-call analysis. Always null for SMS. |
|
next_before |
integer or null | Pass as before to get the next page. null when the page has fewer than limit items. |
Errors#
| Status | When |
|---|---|
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request. This route needs the calls scope. |
404 |
Contact <id> not found. |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.
Retell compatibility#
Same path and method as Retell. The response shape and paging differ: Tried returns conversations with a next_before timestamp cursor, and each item uses id and timestamp.