Docs/Rate limits
Rate limits.
Sensible defaults that scale automatically as your usage grows. Read the rate-limit headers on every response to know exactly where you stand.
Defaults
| Tier | Requests / second | Concurrent streams | Characters / month |
|---|---|---|---|
| Free | 10 | 5 | 10 000 |
| Pay-as-you-go | 60 | 30 | unlimited |
| Pro (auto-upgrade past $200 / month) | 200 | 100 | unlimited |
| Enterprise | negotiated | negotiated | unlimited |
Tiers move automatically as you accrue usage. The free tier never auto-converts to paid — you're never surprise-billed.
Headers
Every REST response carries:
| Header | Value |
|---|---|
| X-RateLimit-Limit | Per-second cap currently applied. |
| X-RateLimit-Remaining | Requests left in the current 1-second window. |
| X-RateLimit-Reset | Unix seconds until the window resets. |
| Retry-After | Seconds to wait before retrying. Sent only on 429. |
Raising your limits
Most teams never hit the ceiling. If you do, email hello@leanvoice.ai with the expected RPS and concurrent-stream count; we lift the cap the same business day for any account in good standing.
Streaming sessions count differently
An open WebSocket counts as one concurrent stream regardless of how many input.text frames flow through it. Idle streams (no synthesis in progress) don't consume a slot.