Skip to content
Docs/Rate Limits

Rate Limits

Every plan has a per-minute ceiling. It is an abuse guard, not a billing lever — you are never charged for a request it refuses.

PlanIncluded calls / monthBeyond thatRequests / minute
Developer100Stops — no charge10 / min
Launch50,000$0.001 per call120 / min
Scale500,000$0.0005 per call600 / min

The per-minute ceiling and the monthly included volume are separate limits and are enforced separately. Staying under the first says nothing about the second.

How the limit is counted

A fixed window of 60 seconds, counted in the database rather than in memory. That distinction matters to you: the API runs on more than one instance, and a limit held in each instance's memory would let your effective ceiling drift with however many instances happened to be warm.

The limit is checked and consumed before your usage meter is incremented, so a refused request costs you nothing — it does not count toward your included calls and cannot trigger overage.

HTTP 429 — "Rate limit exceeded. Retry in 42s."

A 429 carries a Retry-After header giving the seconds until the window resets. Read it rather than guessing a backoff.

Handling a 429

Honour Retry-After

Wait the number of seconds the header names, then retry once. A tight retry loop will simply consume the next window as it opens.

Cap your own outbound rate

A token bucket or queue on your side, set to your plan's ceiling, turns a burst into a short delay rather than a failed request.

Move up a plan

Developer allows 10 / min, Launch 120 / min, and Scale 600 / min. If you are seeing 429s in real production traffic rather than in a load test, the ceiling is the wrong one for your volume.

See also Overage Pricing for what happens at the monthly limit, which is a different response entirely (402, not 429).