Fix a 429 error (too many requests)

A 429 means “slow down”: the request was turned away because of how fast requests are arriving, not because of your plan or balance. Wait the number of seconds in the Retry-After header, then try again.

The three 429 codes

CodeCauseFix
rate_limitedMore than 600 requests in a minute on one key (or one Syntic Code sign-in)Wait Retry-After seconds; smooth out bursts
model_busyThe model is handling too many requests right nowRetry after Retry-After; for non-urgent work, try another model
capacity_busySyntic turned the request away before running it. Nothing was chargedRetry after Retry-After

The error body also includes retry_after (in seconds), the same value as the Retry-After header.

Retry the right way

  1. Read Retry-After and wait at least that long.
  2. Add a little random delay (jitter) so many clients don’t all retry at the same moment.
  3. If the next try also gets a 429, wait longer each time (exponential back-off), up to a sensible cap.
  4. Give up after a few attempts and log the request ID.

Stay under the limit

  • Send requests through a queue in your code instead of all at once.
  • Use one key per service so a busy service doesn’t use up another’s allowance. Note that extra keys aren’t a way around the limit for the same workload.
  • Cache answers to repeated questions.

Need a higher limit?

In the Console, choose Contact Sales, pick Increase Rate Limits, and describe your expected traffic (requests per minute at peak, and which models).

Not a 429?

  • 402 is about plan windows and credit: Fix a 402 error.
  • 503 errors such as service_unavailable mean a temporary problem; retry with back-off and check status.syntic.ai.
Was this page helpful?