| Product | What’s metered |
|---|---|
| Hear (speech-to-text) | Audio transcribed (batch is discounted vs. realtime) |
| Speak (text-to-speech) | Audio synthesized (streaming and async) |
| Cue (turn detection + KB context) | Session usage |
| Omni (speech-to-speech agent) | Realtime session usage |
| PyAI Agents (managed) | Realtime session usage — coming soon |
| Telephony (managed numbers) | Carrier/PSTN usage |
/v1/realtime alias now routes to Omni.
Rates change as we improve the platform. We intentionally keep figures out of the
docs so you never act on a stale number — the pricing page
and your console usage are always current.
The units header
Billed responses carry anx-pyai-units header reporting exactly what was
metered for that request (e.g. the amount of audio synthesized or transcribed).
Read it to reconcile your own usage accounting against ours.
Credits and spend caps
- New accounts include a starter credit balance.
- Per-key budgets — set a monthly spend cap on any key in the console.
- Org credit gate — when prepaid credit is exhausted, billed calls return
402until you top up.
Sandbox tier (no billing)
Apyai_test_ key works instantly against production models with hard daily caps
(requests/day, concurrent sessions, audio minutes/day) and never touches
billing. Use it for evals and CI so a first call never hits the credit gate.
402 semantics
A402 means a billing limit was reached — it is not a broken key:
| Code | Meaning | What to do |
|---|---|---|
credit_exhausted | Org out of prepaid credit | Add credit, or use a pyai_test_ key |
key_budget_exceeded | Per-key monthly cap reached | Raise the key’s budget |
insufficient_quota | Plan quota exhausted | Upgrade the plan |
402 — the call will keep failing until the underlying limit
changes. See Errors & limits for the full catalog.