Observability is dashboard-only. There is no observability API; everything
described here is viewed in the dashboard, not pulled programmatically.
Content-free by design
Omnia captures the shape of each request (timing, token counts, the names of tools called, and status) but never your prompts or the model’s responses. Omnia is a gateway, not a data product. This applies everywhere in observability, including the per-request detail view. There are exactly two exceptions, both explicit and yours to make: response caching (retains responses so identical repeats serve at a discount) and request logging (retains full conversations so you can browse, export, and curate them into fine-tuning datasets). Both are opt-in workspace settings, off by default; nothing is retained while they’re off.Headline stats
At the top of the page, the headline stats summarize health at a glance over the selected window:Success rate
Share of requests that succeeded.
Requests
Total request volume over the window.
Latency p90
End-to-end latency at the 90th percentile.
TTFT p90
Time to first token at the 90th percentile.
Output speed
Generation throughput in tokens per second.
Errors
Count of failed requests over the window.
Avg tokens / request
Average token count per request.
Total tokens
Total tokens processed over the window.
Charts
Time-series charts render over windows from 15 minutes to 90 days, so you can zoom from a live incident out to long-term trends:- Requests: volume over time.
- Errors: failed requests over time.
- Latency: p50 / p90 / p99 percentiles.
- TTFT: time to first token.
- Tokens: token volume over time.
- Output speed: generation throughput in tokens per second.
Errors by cause
When requests fail, the Errors by cause breakdown shows why, grouping failures into categories (rate limits, timeouts, and upstream errors) so you can act on the actual cause instead of just seeing an aggregate error rate. Map these categories back to the specific status codes in Errors: rate limits are429, timeouts are 408, and
upstream errors are 502.
Per-model breakdown
A per-model table breaks the same metrics down by model, so you can spot which model is slow, erroring, or driving your token volume, rather than reading a blended average across all of them.Per-key breakdown
The same table exists per API key: which app, team, or environment is driving traffic, errors, and cache savings. Key names come from your key list; a key deleted since the traffic ran still shows (as “deleted key”) so history never loses attribution.Request labels: tags and trace ids
Label any request with two optional headers. No SDK changes, works from any OpenAI client viaextra_headers:
X-Omnia-Tag: a short label (letters, digits,_ : . -, max 64 chars; lowercased). Tagged traffic gets its own Per-tag usage table, tag chips in the request log, and a tag filter: segment by feature, customer, or environment.X-Omnia-Trace-Id: group the steps of a multi-request agent run; shown in the request detail.
User-Agent is also recorded (truncated) so you can spot which client
version is producing errors.
For traffic you never tagged, opt-in request logging
adds auto-detected segments, grouping by system-prompt
family, retroactively, with zero setup. Tags stay the deliberate override, and
the two compose.
Finish reasons
A Finish reasons card breaks down how responses ended over the window:stop (natural), tool_calls, and, highlighted amber, length, meaning
the response was truncated by max_tokens. A rising length count is the
classic silent failure: responses look successful but are cut off mid-thought.
Raise max_tokens or tighten prompts when you see it.
Alerts
Get notified instead of finding out later: Settings → Workspace → Alerts (owner/admin):
Checks run every 5 minutes; each alert kind notifies at most once per
hour. Error/latency alerts require a minimum number of requests in the
window (default 20) so a single failed request never pages you. Notifications
go to the workspace owner’s email and, optionally, an HTTPS webhook that
receives
{kind, value, threshold, detail, workspace, firedAt}.
Request log
The request log lists individual requests. Click any request to open its full, content-free detail:Timing
Timing
Total latency, the provider-vs-gateway latency split (how much time was
spent at the provider versus in the gateway), TTFT, and output speed.
Tokens
Tokens
Token counts for the request.
Tool names
Tool names
The names of any tools the request called. Names only, never arguments or
results.
Rate-limit headroom
Rate-limit headroom
How close the request ran to the model’s rate limits; see
Rate limits for how to act on this.
Status
Status
The request’s outcome status.
Fallback
Fallback
Whether the request was served by one of your
fallback models, and which model it
fell back from. Fallback-served requests also show a shuffle icon in the
request list.
The request log is content-free and does not show the provider’s request id
to you. If you need to reference a specific upstream failure with support, use
the request id included in the
502 error message (see
Errors).