Menu
Platform
AI
App store purchases
Database
Flags
Jobs and cron
Localization
Monitoring
Notifications
Payments
Queues
Sandboxes
Webhooks
Getting Started
Authentication
KV Store
Deploy & Infrastructure
Reference
Follow a trace
One trace id connects a log entry, its spans and the errors raised inside them
Logs, spans and errors are three collections, and one W3C trace id is what ties
them together. Emit the same trace_id on all three and you can begin at
whichever one you have and reach the other two. All three are read inside one
project environment; nothing here crosses into another.
#What carries the id
- Log entry
- trace_id and span_id, both optional
- Span
- trace_id, span_id and parent_span_id
- Error event
- trace_id and span_id, both optional
trace_id is 32 hex characters and span_id is 16. A record that omits them is
still stored; it just cannot be reached this way.
#From a log entry to its spans
Query the log entries of a trace, then read the trace itself. The query needs
a bounded interval (start_time, at most 31 days before end_time) and takes an
AIP-160 filter:
curl -X POST "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/log_entries:query" \
-H "Authorization: Bearer $SYLPHX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"start_time":"2026-09-30T00:00:00Z","filter":"trace_id = \"4bf92f3577b34da6a3ce929d0e0e4736\""}'A Trace is named traces/t{trace_id}. Reading one answers
with every span in start order, and parent_span_id rebuilds the tree: it is
empty on the root span.
curl "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/traces/t4bf92f3577b34da6a3ce929d0e0e4736" \
-H "Authorization: Bearer $SYLPHX_API_KEY"The trace's has_error says whether any span has an error status, so a trace
list can be scanned for the failing ones without reading each.
#From an error to its trace
An Error Event is one immutable occurrence, and
carries the trace_id and span_id it was raised under, along with its
breadcrumbs, oldest first. List the events of a group, take the trace_id of
the occurrence you care about, and read that trace as above. Filter the log
entries by the same id to see what the service said around it.
An occurrence captured without a trace id has no trace to open; propagate the id into your error capture to close that gap.
#From a span to the rest
Take the span's trace_id and use it in the two queries above. The log entries
that also carry the span's span_id are the ones written inside that span.