Lifecycle
Common patterns
Instrument a Python agent
Add
decimalai.init(langchain=True) (or your framework’s flag). All trace ingest is then automatic via the SDK — you rarely call POST /traces directly.Search by criteria
The
GET /traces endpoint accepts filters for agent, status, manifest, eval verdict, score range, and full-text search. There’s no separate /search endpoint.Bulk import historical data
Migrating from another tool? Use
POST /traces/import-bulk (or POST /traces/import for a JSONL upload). Duplicates are silently skipped — re-running is safe.Inspect a single trace
GET /traces/{id} returns the full span tree, LLM call messages, and tool calls. Pass include=eval_scores to fetch quality scores in the same call.Structure
A trace contains two child types:| Type | What it represents | Examples |
|---|---|---|
| Spans | Containers and non-LLM operations. Nest via parent_span_id. | agent_planning, tool_execution, retrieval |
| LLM calls | Individual model invocations at full fidelity (prompt, completion, tokens, latency). Link to a parent span via span_id. | Each chat.completions.create() call |
Quick start
Related
- Tracing Guide — framework-by-framework setup
- Execution Model — trace, span, LLM call, session
- Evaluations API — push quality scores to traces
- Common endpoints — every endpoint, including
POST /traces/importand/traces/import-bulk