Help / Developers
Rate limits
Limits are far above a busy shop's normal use. Over the limit, you get 429 and a Retry-After.
Tejas limits calls so that one caller cannot take the service from everyone else. The limits are far above what a busy shop's customers do. A normal shop never meets them.
When you meet one #
You get 429 and the category rate_limited. The code is rate_limited when you sent too many requests just now, or budget_spent when the shop's allowance for today is used up. A refusal that can be retried carries a Retry-After header and retry_after_s in the body: the number of seconds to wait.
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json
{"detail":{"category":"rate_limited","message":"Too many requests just now; retry after the time in Retry-After.","code":"rate_limited","retry_after_s":12}}
Wait that long, then retry with the same Idempotency-Key. Nothing was written before a refusal.
Placing orders #
Placing an order for a customer through the API or MCP is counted for each caller, and for the whole shop. The shop's limit is at least 100 placings a minute, so a batch of orders from an integration fits. Reads are not counted this way.
How it is counted #
The count is kept in the database, over a sliding window. Every server sees the same count, and a new release does not reset it. A refused call writes nothing.
Be a good caller #
- Use
offsetandlimitto page, and keep pages small. - Back off when you get a
429. Do not retry in a tight loop. - Reuse one
Idempotency-Keyfor retries of the same change.
Did this page help?
Thank you. Your answer helps us fix the page.
Last checked: 2026-11-07