Concurrency limits by subscription plan
Your subscription plan determines how many requests can be processed simultaneously. Sonic Text-to-Speech (TTS) and Ink Speech-to-Text (STT) each have separate concurrency limits with the same values per plan.| Plan | TTS Concurrent Requests | STT Concurrent Requests |
|---|---|---|
| Free | 2 | 8 |
| Pro | 3 | 12 |
| Startup | 5 | 20 |
| Scale | 15 | 60 |
| Enterprise | Custom | Custom |
Sonic (Text-to-Speech) and Ink (Speech-to-Text) services have separate concurrent request limits. For example, if you’re on the Scale plan, you can have up to 15 concurrent TTS requests AND 60 concurrent STT requests running simultaneously.
Text-to-Speech (TTS) Concurrency
We measure TTS generation concurrency in terms of the number of unique contexts active at a given time.- For HTTP endpoints, each request is treated as a separate context and counts toward your concurrency limit.
- For WebSockets, a unique
context_iddefines a context—sending additional requests with the samecontext_iddoes not increase your concurrency usage. This is because requests to the same context are processed sequentially.
429 Too Many Requests error. You can check your concurrency limit and upgrade it on the playground at play.cartesia.ai.
Interpreting concurrency limits
How you interpret your TTS concurrency limit depends on how you’re using the Sonic model family.Conversational use cases
Conversational use cases
For real-time conversational use cases, such as powering voice agents, we’ve found that the number of parallel conversations you can support is effectively 4X your concurrency limit. This is just a rule of thumb, and depends on the types of conversations you’re supporting. You can reach out to us to discuss your specific use case.For example, if you have a TTS concurrency limit of 15, you can typically support 60 parallel conversations.
Non-conversational use cases
Non-conversational use cases
For non-conversational use cases, such as generating speech in batch jobs, there is a more direct relationship between your concurrency limit and the number of parallel generations you can support.For example, if you have a TTS concurrency limit of 15, you can typically support 15 parallel TTS generations. You can use a connection pool to ensure you don’t exceed your concurrency limit.
WebSocket limits
You don’t need to worry about WebSocket limits if you’re only using the HTTP API.
429 Too Many Requests error on trying to open a new WebSocket connection.
Usually, when users run into WebSocket limits (even at scale), it’s because they’re not properly closing idle connections. Beyond closing idle connections, you can also create a connection pool to ensure you don’t exceed your WebSocket limit.
WebSocket timeouts
We close idle WebSocket connections after 5 minutes. We recommend closing and re-opening a new websocket connection when connections stay idle longer than 5 minutes.Speech-to-Text (STT) Concurrency
Each active transcription stream counts as one concurrent request, regardless of whether you’re using HTTP or WebSocket connections.- One stream equals one HTTP or WebSocket connection
- Each concurrent transcription counts toward your STT concurrency limit
429 Too Many Requests error.