Skip to content

Rate Limits ​

Every key has up to two independent limits, both scoped per (key, product) — using multiple products never shares one budget.

1. Monthly quota ​

Every plan has a monthly_limit. It resets at the start of each calendar month (UTC+7 / WIB), not on a rolling 30-day window. Exceeding it returns:

429 { "error": "monthly quota exceeded for {product}" }

with no Retry-After — there's nothing useful to wait for until next month. Check your current usage on the dashboard rather than polling the API to find out.

2. Per-minute burst limit (optional) ​

Some plans additionally cap requests per minute, to stop a key from bursting through its entire monthly quota in seconds. Free plans typically have one; check your specific plan on the dashboard. Exceeding it returns:

429 { "error": "too many requests for {product}, slow down" }

with a Retry-After: 60 header. A throttled request here does not count against your monthly quota — only successful requests and quota-exceeded rejections do.

Reading remaining quota ​

A successful response carries:

X-RateLimit-Remaining: 994

This reflects the monthly quota only (not the burst limit), and is the count after the current request was charged. It is only present on responses that passed the quota check — it's absent on 401/403 rejections, since those never reached the quota check at all.

Practical guidance ​

  • Design for bursts of a few requests per second at most, unless your plan explicitly grants a higher rate_limit_per_minute.
  • Don't poll X-RateLimit-Remaining speculatively to "check before you spend" — it costs a real request against your quota either way; just make the call you actually need and read the header off that response.
  • For an AI agent calling this API autonomously: treat a 429 from the burst limit as "wait Retry-After seconds, then retry the same call once" — not as a signal to abandon the task, and not as a signal to retry in a tight loop.