session_id.
The retained path is best-effort. Treat it as the available record, not an
exactly-once audit ledger or a promise that every live frame was stored.
Retrieve a session trace
- Dashboard
- CLI
- Python SDK
- Go SDK
- REST API
- Open Sessions.
- Select an active or completed session.
- Click Observability.
- Use Timeline for operations and Console for output and errors.
Use
/frames for current integrations. The retired /events route and its
older event shapes are not a compatibility interface.Paginate the complete available result
Readtotal, limit, and offset from every response. After processing a
page, add the number of returned frames to your offset. Stop when the new
offset reaches total or when a page returns no frames.
Do not stop only because a page contains fewer items than the requested limit.
The CLI and high-level Python and Go helpers handle pagination for you.
Frames are ordered by ascending timeline time: start_time_unix_nano for a
span and time_unix_nano for a log. Do not rely on a particular order between
span and log frames with exactly equal timestamps.
There is no server-side frame-kind or telemetry-type filter. Retrieve pages,
then filter by kind, span_type, or log_type in your application.
Interpret the response
The response contains these seven top-level properties:
The published schema also permits
frames to be null even though the current
runtime returns arrays. If your generated client exposes that possibility,
normalize null to an empty collection before iteration and use
retention_expired to interpret the result.
Distinguish empty and expired results
retention_expired is an access decision. It does not prove that every
physical copy was deleted at that instant. See
Data controls for retention and deletion
boundaries.
Interpret cost maps
Cost maps belong to the response, not to individual immutable frames. Join an SDK-call cost through itsspan_id. Join an inference cost through the
axilio.inference.id attribute on the inference span.
1,000,000 microdollars (µ$) equals $1.00. Cost joins are point-in-time
and best-effort. A missing key, an empty or null map, and a present numeric zero
have different possible causes. Do not interpret zero alone as proof that an
operation was free or that billing is final. Use Usage and
your finalized billing records for organization-wide reconciliation.
Recover after a live gap
When a raw reader receivesRESYNC_REQUIRED, or an SDK reports a gap:
- Retrieve every available
/framespage for the session. - Rebuild or reconcile your local trace by frame identity and timeline time.
- If the session is still active, reconnect to live telemetry using a current opaque cursor.
- Continue to tolerate replayed frames after reconnect.
Next steps
Frame reference
Interpret frame fields, types, relationships, and attributes.
Live telemetry
Follow an active session and resume from an opaque cursor.
Telemetry dashboard
Diagnose timing, output, failures, and cost annotations.
Reliability and troubleshooting
Diagnose empty, interrupted, incompatible, or expired telemetry.