API reference

Rate limits and quota

Each workspace has a limit of requests per minute and a quota of input tokens per month.

Two limits apply to each workspace. All API keys of the workspace share both limits.

LimitValuePeriodError at the limit
Requests per minute300 for a new workspaceThe clock minute. The count starts again at second 0 of each minute.429 rate_limited
Input tokens per monthThe default of the region for a new workspaceThe calendar month in the time zone of the region.429 monthly_quota_exceeded

To see how many input tokens your workspace has left, read the X-Quota-Tokens-Remaining header of a 200 response. To raise a limit, email support. The Settings page of the console shows the support email and the time a limit change takes, in the Support section.

What each request uses

  • The Check API compares a request with the monthly quota first, then with the requests of the minute.
  • A request within both limits uses one request of the minute. It uses that request even when it fails later, for example with 503.
  • A 400, a 401, or a 429 uses no request of the minute.
  • Only a 200 uses input tokens. It uses the number in data.inputTokens. The quota counts the same input tokens as the limit of a text. See Input tokens.
  • A request is within the monthly quota when the workspace used fewer tokens than its quota before the request. So the request that uses up the quota can go over it. X-Quota-Tokens-Remaining is then 0, and it is never below 0.

Headers

HeaderResponsesDescription
X-RateLimit-Remaining200, both 429The requests left in the current minute, after this request.
X-RateLimit-Reset200, 429 rate_limitedThe seconds until the count of the minute starts again. At least 1.
X-Quota-Tokens-Remaining200, both 429The input tokens left this month, after this request. Never below 0. Always 0 on monthly_quota_exceeded.
X-Quota-Reset200, both 429The time when the monthly quota starts again, in ISO 8601 with the offset of the region, such as 2026-12-01T00:00:00+09:00.
Retry-AfterBoth 429The seconds to wait before the next request.

Other responses have none of these headers.

Two kinds of 429

rate_limitedmonthly_quota_exceeded
CauseToo many requests in the current minuteNo input tokens left this month
Retry-AfterThe seconds until the next minuteThe seconds until X-Quota-Reset
X-RateLimit-ResetPresentAbsent
What your app should doWait Retry-After seconds, then retry.Stop sending requests until X-Quota-Reset, or email support to raise the quota.

Branch on code before you retry

A retry library that follows Retry-After waits until the next month on monthly_quota_exceeded. Read code first, and retry only rate_limited.

When a request reaches both limits, the Check API answers monthly_quota_exceeded.

429 response, rate_limited
{
  "data": null,
  "code": "rate_limited",
  "message": "Too many requests. Try again later.",
  "errorId": "FMS429",
  "traceId": "req_01M6JYA150XXPBT8B1XBN7JGYE"
}
429 response, monthly_quota_exceeded
{
  "data": null,
  "code": "monthly_quota_exceeded",
  "message": "Monthly quota reached. 0 input tokens left. The quota resets at 2026-12-01T00:00:00+09:00. To raise it, email <support email>.",
  "errorId": "FMQ01",
  "traceId": "req_01M6JYA05RWZ7MD83RZVAFNZ8B"
}

The message of monthly_quota_exceeded contains the support email of your region. The sample shows <support email> in its place.

On this page