List the key's conversations
curl --request GET \
--url https://api.chattler.ai/v1/agents/{agent_id}/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.chattler.ai/v1/agents/{agent_id}/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.chattler.ai/v1/agents/{agent_id}/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "<string>",
"external_user_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"last_message_preview": "<string>"
}
],
"next_cursor": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}Conversations
List the key's conversations
Return the conversations that belong to the authenticated API key, most recently updated first. Every key has its own isolated namespace: a conversation is identified by the key and the external_user_id the client supplied, so the same external user reached through two different keys is two different conversations, and a key never sees dialogs from another key or channel.
Authentication
- Authorization:
Bearer cht_live_<key_id>.<secret>— the only accepted form. Query-string credentials are ignored, and noBrowser-IDheader is needed. - Both
read-onlyandfullkeys may call this endpoint.
Path Parameters
- agent_id: The agent the key is bound to; a key used against another agent is refused
Query Parameters
- external_user_id: only conversations of this external user
- date_from, date_to: ISO-8601 bounds on
updated_at;date_tois exclusive. Timezone-aware values are converted to UTC, naive values are read as UTC, anddate_toearlier thandate_fromis a validation error - limit: page size, 1-100 (default 20)
- cursor: the
next_cursorvalue from the previous page; omit for the first page
Example Request
curl -X GET "/v1/agents/{agent_id}/conversations?limit=20&date_from=2026-09-01T00:00:00Z" \
-H "Authorization: Bearer cht_live_{key_id}.{secret}"
Response
- data: array of conversations, most recently updated first, each with
id,external_user_id,created_at,updated_at(ISO-8601 UTC) andlast_message_preview(the latest user or assistant text, truncated to 160 characters, ornull) - next_cursor: opaque string for the next page, or
nullon the last page
Every response, success or failure, carries an X-Request-ID header (a UUID) and the rate-limit headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Errors
All public API errors use one envelope: {"error": {"code": "...", "message": "...", "request_id": "..."}}.
invalid_api_key(401): missing, malformed, unknown, or wrong-secret keyagent_mismatch(403): the key belongs to a different agentvalidation_error(422): badlimitor malformedcursorrate_limit_exceeded(429): the key’s technical window is exhausted;Retry-Aftersays when to retryapi_rate_limit_unavailable(503): the limiter backend is down; the request is refused rather than served unmetered, retry afterRetry-Afterinternal_error(500): unexpected failure; quote therequest_idwhen reporting it
GET
/
v1
/
agents
/
{agent_id}
/
conversations
List the key's conversations
curl --request GET \
--url https://api.chattler.ai/v1/agents/{agent_id}/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.chattler.ai/v1/agents/{agent_id}/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.chattler.ai/v1/agents/{agent_id}/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "<string>",
"external_user_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"last_message_preview": "<string>"
}
],
"next_cursor": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}Authorizations
Agent API key: Authorization: Bearer cht_live_<key_id>.
Path Parameters
Query Parameters
Maximum string length:
255Required range:
1 <= x <= 100