Skip to main content
Limits come in two kinds. API limits control how much traffic your account can send. Model input limits control how large a single decision request can be. Stay inside both and your requests run normally.

API limits

Limits apply per account for each model, shared across all API keys and playground sessions. Concurrency includes accepted requests that are queued, running, or waiting to retry. A timeout or disconnect does not release a durable request’s slot; completion does. Matching idempotent retries count once. Requests over either limit return 429 with Retry-After. Wait before retrying, using the same Idempotency-Key. Each streaming inference evaluation counts as one request; a PCM audio packet does not. Streaming rate errors include retry guidance and close the connection with code 1013.
Spread requests out and keep a small queue in your app that never has more than 5 decisions running at once. Also pace requests to stay within the separate 500-request rolling-minute limit.

Streaming limits

With the default audio_scope: "chunk", streaming has no cumulative audio-duration limit. session.ready.max_turn_audio_ms is null. Keep sending audio and receiving decisions; commit only when your application needs to end a turn. With explicit audio_scope: "turn", every evaluation includes all audio in the turn, so the model’s input limit and server buffer capacity still apply. Read the numeric session.ready.max_turn_audio_ms, commit before exceeding it, and wait for decision.finalized before sending the next turn. Exceeding that limit returns turn_too_long and closes the connection. Packets are limited to 200 ms of source audio. Send at real-time speed; if inference falls behind and pending audio fills the server buffer, the server returns audio_buffer_full and closes with code 1013. Account rate limits and timeouts still apply. At the default 1,000 ms evaluation interval, one continuous stream can use 60 requests per minute. Four such streams can use 240 of the account’s 500 requests per rolling minute for that model. The remaining capacity is shared with other requests. Actual evaluation frequency also depends on inference speed. See Streaming decisions.

Model input limits

These limits describe uploaded decision requests for Tazo Large. Tazo Small is unavailable through the API. Streaming also has the per-turn limits above. Audio files are also limited to 16 MB. The API and playground use the account’s budget for uploads and streaming. Each stream keeps the limit loaded at session start. Account-specific overrides may raise the limit or exempt an account from the character cap; other transport and model limits still apply. Exactly 1,000 is allowed under the default policy. In the playground, only the prompt, option names, and option descriptions you enter count. An empty form starts at zero, and the full budget is available for your input. The fixed question, generated fallback option, and context wrapper do not consume the budget. Blank descriptions are sent as null; the model supplies the option name as its default description afterwards. The API recognizes this fixed playground template and excludes only its known generated fields. Custom API requests count Unicode code points in content keys and values, including spaces and line breaks. Arrays count all elements; numbers and booleans count as JSON text; null counts as zero. JSON punctuation, protocol fields, model names, and question IDs do not count. For example, outside the playground template, {"context":"Hi"} counts as 9. Custom instructions, custom fallback text, additional fields, and explicitly supplied descriptions still count. Oversized text returns 422 request_text_too_long before queuing, with the actual count and limit. Streaming uses the same code: an oversized start closes with 1008; an oversized update preserves the previous configuration. The playground blocks submission without truncating text.

Working within the limits

  • Context: keep state to the facts the decision needs. Move long background material out of the request.
  • Audio: if a recording is longer than 45 seconds, send the part that holds the decision, or split it into shorter clips and make one decision per clip.
  • Options: if you have more than 32 choices, group them into broader options, or ask two questions in turn, such as a category first and then a specific action.
  • Option descriptions: write each one as a short, clear sentence. For example, “The speaker wants a refund.” works better than a paragraph.
A request that goes over a model input limit is rejected, so no decision is made. Shorten the input and send it again. See Errors for how errors are reported.