Skip to main content
Reactor enforces a small number of rate limits to ensure fair access to GPU resources. This page documents the known limits and the errors you can expect when they are exceeded.

Session quotas

Need higher limits? All session quotas can be increased. Contact support@reactor.inc. You can view your current quotas in the Dashboard under Account Settings.

Concurrent sessions

Each account can run up to 5 sessions at the same time, pooled across every API key on the account. This limit applies regardless of which model you connect to. The limit counts sessions, not connections. Multiple WebRTC connections that share one session (see Sessions) still consume a single session slot.
Sessions in the connecting or waiting states count toward the concurrent limit because a GPU has been requested on your behalf. Disconnect sessions you no longer need to free up slots.

Sessions per minute

Each account can create up to 10 sessions per minute across all models and API keys. This account-wide limit always applies. A model-specific quota, when configured, can further restrict session creation for that model but cannot raise the account-wide limit. Reactor enforces this quota with a token bucket that allows up to 3 sessions back-to-back. At the default limit, the bucket then refills by one session about every 6 seconds. Increasing the per-minute quota does not increase the burst above 3. If you exceed the limit, Reactor returns 429 Too Many Requests. Wait for the number of seconds in the Retry-After response header before retrying. The JSON response also includes the same value in retry_after_seconds.

Session max duration

A single session can run for up to 1 200 seconds (20 minutes) before it is automatically terminated. Plan your application logic around this window. For longer workflows, start a new session when the current one approaches the limit.
Listen for session lifecycle events in the SDK so your app can gracefully handle an approaching timeout. See Sessions for details.

Token TTL

Tokens issued by POST /tokens are valid for at most 6 hours. Session-scoped tokens (the recommended kind — see Authentication) default to 1 hour; unscoped tokens default to the full 6. The expires_after parameter (in seconds) adjusts the lifetime in either direction, but never beyond the 6-hour ceiling. Values at or above 21 600 are silently clamped. Always read expires_at on the response to confirm the actual expiry. Session-scoped tokens also cap how many sessions they can create: max_sessions defaults to 5 and tops out at 500. The count covers every session the token has ever created — closing a session does not restore capacity. When a token runs out, mint a new one. See Authentication for the full token-issuance flow.

File uploads

When you upload files to a session, Reactor returns presigned URLs with limited lifetimes: If a presigned URL expires before you use it, request a new one. See File Uploads for the full workflow.

Behavior when limits are hit


Next steps

Pricing & Billing

Understand how sessions are billed and how to minimize cost.

FAQ

Common questions about sessions, tokens, and troubleshooting.