Skip to content
SimicX

Getting Started

Rate limits & quotas

Each key is subject to four independent envelopes: per second, per minute, per day, and a monthly quota. Current usage is reported on every response and on /v1/me.

The default envelopes

Unless an administrator has set otherwise on your key, the limits are 5 requests per second, 60 per minute, 5,000 per day, and 100,000 per month. Windows are fixed, not sliding, and reset independently. /v1/me reports the envelopes actually in force on your key together with live usage — read it rather than assuming either the defaults or the figures in any example.

The narrowest window is charged first, and a wider one is only charged once every narrower one has passed — so a client looping against the per-second limit cannot spend its daily budget on rejections.

Response headers

Six X-RateLimit-* headers ride on every successful authenticated response and on rate_limit_* and quota_exceeded rejections — nowhere else. There is no X-RateLimit-Reset: use Retry-After on a 429, which points at the real window edge. The monthly quota has no header at all; read it from /v1/me. When the limiter's own store is unavailable the service fails open and omits the headers rather than reporting an allowance it cannot confirm.

Headers · a key on the default envelopes

X-RateLimit-Limit-Second: 5
X-RateLimit-Remaining-Second: 4
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Limit-Day: 5000
X-RateLimit-Remaining-Day: 4997

The unsuffixed X-RateLimit-Limit and X-RateLimit-Remaining are the minute window.

When a limit is exceeded

Exceeding an envelope returns 429 with a Retry-After value in seconds and one of: rate_limit_second, rate_limit_minute, rate_limit_day, or quota_exceeded. All four carry Retry-After — pointing at the next second, minute, midnight or month boundary respectively — alongside the live X-RateLimit-* headers. Wait for the period it gives rather than guessing a back-off.

429 body

{
  "error": {
    "code": "rate_limit_minute",
    "message": "Rate limit exceeded: 60 requests per minute.",
    "details": { "limit": 60, "window": "minute" },
    "request_id": "req_7f3a2c"
  }
}