Usage & request timing
Use the dashboard Usage page or GET /api/dashboard/usage?range=24h with a login session. Responses contain the latest 200 requests in the selected range, newest first. An inference key does not grant access to dashboard history.
Timing fields and units
- latency_ms
- Total server-side duration through settlement and logging. This is not the browser’s full network time.
- ttft_ms
- Time to the first streaming bytes flushed by the gateway. Metadata or keepalive bytes can arrive before text.
- inference_metrics.first_output_ms
- Time to the first answer, reasoning, or tool-output delta.
- inference_metrics.first_content_ms
- Time to the first answer-text delta, excluding reasoning.
- inference_metrics.first_reasoning_ms
- Time to the first reasoning delta, when present.
- inference_metrics.before_upstream_ms
- Time spent before starting the upstream request.
- inference_metrics.upstream_header_wait_ms
- Cumulative wait for response headers across upstream attempts.
- inference_metrics.response_ms
- Time until the gateway finishes reading the response, before final settlement.
- inference_metrics.upstream_attempts
- How many upstream attempts the request made.
- inference_metrics.terminal_event
- Whether a complete protocol terminal event was observed. Inspect this when investigating truncated streams.
Effective throughput
output_tokens × 1000 / latency_ms gives effective tokens per second for a successful request with a positive duration. It includes waiting and reported reasoning tokens. It is not generation-only TPS. Partial/error rows do not get a throughput value in the dashboard.
Older requests and unknown measurements
Older rows may have inference_metrics: null. First-byte timing can also be null on non-streaming requests. Missing values mean no measurement, not zero speed. A recorded zero-millisecond offset is valid and should remain zero.
Request correlation and billing
Record X-Atmorouter-Request-Id when supplied. Share the request ID, UTC timestamp, model, protocol, and client version with support; do not send keys or customer prompts. Settled usage history is the reconciliation source. A final-charge HTTP header cannot be added after an SSE response has begun; consume reported stream usage and check the settled log.
Playground and service status
POST /api/dashboard/playground/chat uses your login session and the same inference billing core, with no API key ID. GET /api/public/status reports request-weighted service availability; quiet windows are not synthetic uptime measurements. Family differences remain available under upstream details.