Tejas help

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 offset and limit to page, and keep pages small.
  • Back off when you get a 429. Do not retry in a tight loop.
  • Reuse one Idempotency-Key for retries of the same change.

Did this page help?

Last checked: 2026-11-07