anoman
Sign InGet API Key
Documentation home

Traces & request records

Every call through the gateway becomes an inspectable record — tokens, cost, latency, provider, guardrail results, cache and routing. Read it in the dashboard or pull it via the API.

What every request record carries

Each request is stored as a trace/request record you can open in the dashboard (Observability → Requests) or fetch from the API. A single record includes:

FieldDescription
model, provider, provider_typeModel id, real provider brand, and provider_type (cloud_direct, bedrock, self_hosted…).
tokens_in / tokens_out / cached_tokensInput, output, and cached token counts — always from the provider's usage, never a local estimate.
cost_usd, latency_ms, finish_reasonCost in USD, wall-clock latency in milliseconds, and the completion finish reason.
cache_hit, routing_mode, regionWhether a cache was hit, the routing mode (realtime / batch / cached), and the processing region.
session_id, guardrailsThe session id the call belongs to and the full guardrail result set (injection / PII / content / policy).

Cost is shown in your account's display currency; per-request sub-cent costs render as < $0.01 with the exact value on hover.

Observe per-call without a second request

The same telemetry rides every completion response as the _anoman block plus X-Anoman-* transparency headers — so you can observe every call inline, with no follow-up API request.

_anoman block

{
  "choices": [ ... ],
  "usage": { "prompt_tokens": 1024, "completion_tokens": 256 },
  "_anoman": {
    "guardrails": {
      "injection": { "status": "pass", "score": 0.12 },
      "pii": { "status": "pass" },
      "content": { "status": "pass" },
      "policy": { "status": "pass" }
    },
    "routing": { "mode": "realtime", "region": "id", "provider_type": "cloud_direct" },
    "cache": { "hit": false, "type": "none" },
    "weighted_tokens": 1240,
    "cost_usd": "0.0023"
  }
}

Headers

X-Anoman-Guardrail-Injection: pass score=0.12
X-Anoman-Guardrail-Pii:       pass
X-Anoman-Guardrail-Content:   pass
X-Anoman-Cache:               none
X-Anoman-Region:              ID
X-Anoman-Tier:                pro

Streaming responses carry the same block in a final meta event before the stream closes — see Streaming for the wire format.

List and inspect records

Use GET /anoman/v1/traces to list records (filter by model, region, or agent) and GET /anoman/v1/traces/{id} for a single record with its span timeline.

List

# List recent request records (filter by model / status / session)
curl "https://api.anoman.io/anoman/v1/traces?model=claude-sonnet-4-20250514&region=id&limit=20" \
  -H "Authorization: Bearer anm-sk-..."

Detail

# Full detail for one record, including the span timeline
curl "https://api.anoman.io/anoman/v1/traces/trace_a8f3c2b1d9" \
  -H "Authorization: Bearer anm-sk-..."

Group requests into agent sessions

Requests that share a session_id (and an agent_id) are grouped into sessions. List sessions, open one for detail, or pull its actions to see the tool-call and guardrail-check timeline within that session.

Sessions

# List agent sessions (group requests by session_id / agent_id)
curl "https://api.anoman.io/anoman/v1/sessions?agent_id=support-bot-v2&status=active" \
  -H "Authorization: Bearer anm-sk-..."

Actions

# One session's detail + the tool-call / guardrail-check timeline
curl "https://api.anoman.io/anoman/v1/sessions/sess_1a2b3c/actions" \
  -H "Authorization: Bearer anm-sk-..."

Where the data lives

Records are backed by the ClickHouse llm_requests table with 365-day retention. Older records age out automatically.

Related: For rolled-up spend and quota, see Usage & Costs. For the same events as they happen, see the Live Feed.

See every call

Open the Requests view and inspect any trace end to end.

On this page