Rate limits and quotas

The API checks four kinds of limit on every request, in this order: how fast you send, how big the request is, your plan’s token windows, and your spending controls. Each gives a different error, so the status code tells you which one you hit.

1. Request rate

CredentialLimit
Each API key (sk_live_… or sk_syntic_…)600 requests per minute
Each Syntic Code sign-in600 requests per minute

Going over gives 429 rate_limited with a Retry-After header saying how many seconds to wait. See Fix a 429 error.

Need more? Use Contact Sales → Increase Rate Limits in the Console.

2. Request size

LimitValueError
Request bodyAbout 2 MB (2,000,000 bytes)413 payload_too_large
Messages in one request500413 too_many_messages
Context windowPer model (context_window in GET /v1/models), input plus max_tokens400 context_length_exceeded

3. Plan token windows

Your plan’s monthly token allowance is checked across three windows at once:

WindowSizeReopens
Session25% of the monthly allowanceRolling, five hours after usage in the window began
Weekly60% of the monthly allowanceOnce a week
MonthlyThe full allowanceAt the start of each month

A request is covered by your plan only while all three have room. When one fills up:

  • with usage credits turned on, the request is paid from your credit balance at your plan’s overage rate;
  • otherwise it is refused with 402 quota_exhausted.

The Usage Limits page shows each window live.

4. Spending controls

When requests are paid from credit:

CheckSet byError limit value
Organization monthly spend limitAn admin, on the Billing pagespend_limit
Member or group spend limitAn adminspend_limit
Credit balance must cover the requestYour top-ups and auto-reloadno_credits

Spend limits reopen when a new calendar month begins (UTC).

The API docs describe per-model rate-limit tiers that grow with payment history. They are marked as a preview and are not in effect yet; today the flat 600 requests per minute applies.

Was this page helpful?