What’s captured per call
Every call records ~150 fields. The ones you’ll use most:Models & routing
Requested model, routed model, provider, tier, priority score, routing
signals, fallback chain, and whether BYOK was used.
Tokens & cost
Input/output tokens, reasoning and cache tokens, cost, provider cost,
baseline cost, and savings.
Latency
Total latency, provider latency, queue time, first-token latency, and
inter-token p50/p95 for streamed responses.
Content & outcome
Input messages, output messages, tool definitions, finish reasons, refusal
detection, and an output format signature.
The attribution ladder
Slice the same data at any grain:How attribution is stamped
- Workflow — from the API key; every key belongs to exactly one workflow, so you pass nothing.
- Run —
x-orbitrage-run-idif set, else a W3Ctraceparent, else a sticky 30-second per-key window groups bursts into one session automatically. - End-user —
x-orbitrage-end-user-id, set via the SDK (below).
Per-end-user attribution
Running a B2B app for many end-users? Tag calls with a user id so the dashboard can build per-user cost and flow graphs inside one workflow.x-orbitrage-end-user-id header on the next OpenAI client you
construct and every subsequent call.
Custom attribution headers
Beyond the SDK defaults, the gateway reads optional headers you can set to enrich analytics — pass them as request headers (or via your client’sdefault_headers).
See the API reference for the full list.
Where to see it
- Telemetry / Traces — the live span stream and org-wide drilldown.
- Routing — every router decision with the score and signals.
- Workflows — a per-project flow graph that reconstructs each run.
- Overview — org-wide cost, savings, and incident KPIs.