Get started
Pricing and limits
What a credit buys, what each plan grants, and where the ceilings are.
Streaming runs on our GPUs, so there is no free API tier. A session is billed on how long its socket is open, from a credit balance that belongs to the API track alone.
How a credit is spent#
- One credit per second of an open session, rounded up, with a floor of one per session. A socket open for 1.2 seconds bills 2; one open for 20 ms bills 1.
- Socket time, not audio. Silence counts. An open session holds a worker’s slot whether or not it is speaking, which is exactly what you are paying for.
- Your API balance only. Companion credits cannot pay for streaming; they are two purchases with no exchange rate between them.
- A session is refused with
4004when your balance cannot cover the minimum charge.
The corollary for your code: close the socket when you are done, and reuse it while you are not. Reconnecting per utterance costs 40–100 ms of handshake and a full credit every time; holding one open through a long silence bills for the silence. The middle ground, one socket per conversation closed at the end, is both the cheapest and the fastest.
Plans#
| Starter | Pro | |
|---|---|---|
| Price | $9 / month | $29 / month |
| Credits granted | 100,000 | 400,000 |
| Streaming time | About 28 hours | About 111 hours |
| Concurrent sessions | 2 | 8 |
Credits are granted on activation. Plans and balances live on the API Platform, which shows what you hold against what the plan granted.
Keys do not authenticate without a plan. An account with no API plan is refused whatever credential it presents. The session route answers 402 before a socket is ever opened.
Concurrency#
Your plan’s ceiling is the number of sockets you may hold open at once. Past it, the gateway closes new connections with 4002. Every session response carries max_concurrent_sessions, so your own queue can know the limit without keeping a copy of our plan table.
A lease is released when the socket closes, and it expires on its own if a gateway dies holding it, so a crash on our side does not permanently burn your budget.
HTTP rate limits#
The REST routes under https://api.zeroweight.ai/api/v1/* are rate-limited by client IP at 200 requests per minute. Over it, the response is 429 with {"detail": "Rate limit exceeded"}. Cache what you can, since an avatar bundle changes rarely, and back off exponentially on 429.
