List traced conversations
Conversations that have spans in a window, newest first, with turn and error counts.
GET
/
api
/
v1
/
traces
/
conversations
List traced conversations
curl --request GET \
--url https://api.example.com/api/v1/traces/conversations \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.example.com/api/v1/traces/conversations"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://api.example.com/api/v1/traces/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/traces/conversations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/traces/conversations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/traces/conversations")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/traces/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"conversations": [
{
"conversation_id": "<string>",
"project_id": "<string>",
"first_turn": {},
"last_turn": {},
"turn_count": 123,
"error_count": 123
}
],
"limit": 123,
"offset": 123,
"has_more": true
}Lists the conversations that produced spans, one summary per conversation. Use it to find a conversation to inspect, then fetch its spans, timeline or a single turn.
Request
Headers
string
required
Account API key with read access to conversations.
Query parameters
string
Restrict to one agent. Omit to list the whole account.
datetime
Inclusive lower bound on the conversation’s first turn, ISO 8601.
datetime
Exclusive upper bound. Must be after
from.integer
default:"20"
Conversations per page, 1–100.
integer
default:"0"
Conversations to skip, 0–1000.
Response
object[]
integer
integer
boolean
Example
curl "https://api.us.poly.ai/api/v1/traces/conversations?project_id=PROJECT-V258TF29&from=2026-10-26T00:00:00Z&to=2026-10-28T00:00:00Z&limit=2" \
-H "X-API-KEY: YOUR_API_KEY"
{
"conversations": [
{
"conversation_id": "CA3f2c1e9d6b7a4f8e9c0d1b2a3c4d5e6f",
"project_id": "PROJECT-V258TF29",
"first_turn": "2026-10-27T15:07:34.930309",
"last_turn": "2026-10-27T15:07:35.680461",
"turn_count": 2,
"error_count": 0
}
],
"limit": 2,
"offset": 0,
"has_more": true
}
Errors
| Status | Meaning |
|---|---|
400 | from is not before to. |
401 | Missing or invalid API key. |
403 | The key cannot read conversations. |
502 | The trace backend did not answer. |
Last modified on November 10, 2026
Was this page helpful?
⌘I
List traced conversations
curl --request GET \
--url https://api.example.com/api/v1/traces/conversations \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.example.com/api/v1/traces/conversations"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://api.example.com/api/v1/traces/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/traces/conversations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/traces/conversations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/traces/conversations")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/traces/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"conversations": [
{
"conversation_id": "<string>",
"project_id": "<string>",
"first_turn": {},
"last_turn": {},
"turn_count": 123,
"error_count": 123
}
],
"limit": 123,
"offset": 123,
"has_more": true
}
