Get a trace's steps
GET/v1/projects/:project_id/traces/:trace_id/steps
Returns the trace's step payload: every step of the execution's model loop, exactly as the runtime recorded it — tool calls, their arguments, results and cost — passed through unreshaped rather than mapped to a narrower contract, since the payload is the runtime's own step shape.
Saving the payload is fire-and-forget on the runtime, so a trace can report has_steps: false for a short window after it finishes; this route 404s with steps_not_available during that window rather than returning an empty list, so a caller does not mistake "not saved yet" for "no steps ran".
A trace with no payload at all answers steps_redacted instead — its content was purged, or its agent runs in zero-retention and nothing was ever written. The distinction is the whole point of two codes: retrying steps_not_available succeeds once the write lands, while retrying steps_redacted can never succeed. The response carries content_redacted_at in details.
Request
Responses
- 200
- 401
- 404
- 502
The trace's steps.
Missing or invalid credentials.
The trace does not exist (or is not the caller's), its step payload has not been saved yet (steps_not_available, worth retrying), or its content is not stored at all (steps_redacted — purged or never recorded, never worth retrying).
The upstream runtime could not complete the operation.