import httpx
# Search is performed via query parameters on this endpoint.
resp = httpx.get(
"https://api.decimal.ai/api/v1/traces",
headers={"Authorization": "Bearer dai_sk_..."},
params={"agent_name": "my-agent", "eval_verdict": "drop", "limit": 20},
)
resp.raise_for_status()
for t in resp.json()["traces"]:
print(t["id"], t["eval_score"])decimalai traces list --agent-name my-agent --limit 20const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.decimal.ai/api/v1/traces', 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.decimal.ai/api/v1/traces",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.decimal.ai/api/v1/traces"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.decimal.ai/api/v1/traces")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decimal.ai/api/v1/traces")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"traces": [
{
"id": "trc_abc123",
"agent_name": "travel-planner",
"status": "success",
"user_input": "Find flights to Tokyo",
"final_output": "I found 3 flights...",
"manifest_id": "mfst_001",
"eval_verdict": "keep",
"eval_score": 0.92,
"duration_ms": 1240,
"total_tokens": 850,
"started_at": "2026-05-10T14:22:00Z"
}
],
"total": 1250,
"limit": 20,
"offset": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}List traces
List traces for the project (paginated).
Workspace-scoped: filters by workspace_id when available. When target_manifest_id is provided:
- Traces are filtered to only those that existed during the target manifest’s active period (between its created_at and the next manifest’s created_at).
- Each trace is enriched with a
compatobject showing its compatibility against that manifest, computed on-demand if not already cached.
Multi-agent filters:
- child_agent_name: find parent traces where a child agent matches this name
- child_status: further filter those children by status (e.g., ‘error’)
import httpx
# Search is performed via query parameters on this endpoint.
resp = httpx.get(
"https://api.decimal.ai/api/v1/traces",
headers={"Authorization": "Bearer dai_sk_..."},
params={"agent_name": "my-agent", "eval_verdict": "drop", "limit": 20},
)
resp.raise_for_status()
for t in resp.json()["traces"]:
print(t["id"], t["eval_score"])decimalai traces list --agent-name my-agent --limit 20const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.decimal.ai/api/v1/traces', 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.decimal.ai/api/v1/traces",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.decimal.ai/api/v1/traces"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.decimal.ai/api/v1/traces")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decimal.ai/api/v1/traces")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"traces": [
{
"id": "trc_abc123",
"agent_name": "travel-planner",
"status": "success",
"user_input": "Find flights to Tokyo",
"final_output": "I found 3 flights...",
"manifest_id": "mfst_001",
"eval_verdict": "keep",
"eval_score": 0.92,
"duration_ms": 1240,
"total_tokens": 850,
"started_at": "2026-05-10T14:22:00Z"
}
],
"total": 1250,
"limit": 20,
"offset": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Enter your API key (e.g. dai_sk_test_key_001)
Query Parameters
1 <= x <= 100x >= 0Filter by trace status. Allowed: success/error/degraded.
success, error, degraded Filter by eval verdict (pass/fail/keep/drop/review/...), or 'unevaluated' for traces with no verdict yet, or 'evaluated' for any trace that has a verdict.
Filter by trace source_type. See ingest allowlist for valid values.
production, test, evaluation, sdk, manual, synthetic, development, sandbox, distillation, snapshot, file, url, eval_replay, sample, demo, hosted_trial Full-text search across user_input, final_output, and agent_name
When false, drop platform-harness fixture agents (__, live-, cuj*, soak-*, …) from the listing — the UI's default. Defaults to true for SDK/API back-compat. Ignored when an explicit agent/skill/tool filter is set (asking by name always works).
Show compatibility of traces relative to this manifest
Filter parent traces by child agent name (multi-agent)
Filter child agent matches by status. Allowed: success/error/degraded.
success, error, degraded Filter to traces that invoked the named tool (uses ToolCallIndex)
Filter to traces where the named skill was activated (uses trace_skill_activation). Backs the owner skill-detail live-traces panel.
Filter to traces whose agent ran this saved prompt version (the decimal.prompt.version agent_config() records on the agent span). Each listed trace carries its record as prompt.
x >= 1fallback: only traces whose agent ran on the fallback= prompt in its code, because DecimalAI was unreachable or had no prompt saved for it (decimal.prompt.source on the agent span).
"fallback"When true, return only traces that recorded at least one span — this filters out empty hello-world traces from SDK setup that would otherwise clutter an investigation. When false, return only the empty-span traces. Omit the parameter to get both.
Symmetric filter for traces with 0 LLM calls.
Order results by the given field. Prefix '-' for descending. Defaults to '-created_at'. Unknown values 422 instead of being silently ignored.
-created_at, created_at, -started_at, started_at Inclusive lower bound on RunTrace.started_at (ISO 8601). Malformed dates 422 via Pydantic typing instead of being silently ignored.
Inclusive upper bound on RunTrace.started_at (ISO 8601). Same validation behavior as started_at_from.
Filter to traces with this compatibility verdict against target_manifest_id. Values: keep / repair / replay / drop. Requires target_manifest_id to be set for authoritative scoping; otherwise falls back to RunTrace.compat_status (a less-precise denormalized field).
Only traces whose routing call this experiment (an agent's skill holdout or prompt split) put in a group. Every listed trace carries its group as experiment.
36With experiment, one group: a holdout's held_out (the skill was withheld) or with, a prompt split's a (the current prompt) or b (the new one).
held_out, with, a, b Cookies
Response
Successful Response
The response is of type Response List Traces Api V1 Traces Get · object.