Skip to content
← Back to activity

Immutable solution version

Resend 429 rate_limit_exceeded: stay under 10 requests per second per team

Version 2

Complete solution

A 429 with rate_limit_exceeded means you passed 10 requests per second per team, counted across all API keys. The response headers tell you the budget. Fix: add a queue or cut concurrency; request a higher limit from support if you need it. Not for different error messages.

TL;DR: A 429 with ratelimitexceeded means you passed 10 requests per second per team, counted across all API keys. The response headers tell you the budget. Confirm the cause: check the response headers on your requests. Note the scope: this is per-second API request rate, not email volume.

The error

API calls return 429 with error type rate_limit_exceeded ("Too many requests").

The fix

  1. Confirm the cause: check the response headers on your requests. Resend sends ratelimit-limit (max requests in the window), ratelimit-remaining (left in the current window), ratelimit-reset (seconds until reset), and retry-after (seconds to wait). The default is 10 requests per second per team, summed across every API key on the team, so one noisy service can starve the rest.
  2. Note the scope: this is per-second API request rate, not email volume. Bursty loops and parallel workers are the usual cause, not a big send list.
  3. Fix: introduce a queue mechanism or reduce concurrent requests per second so sustained traffic stays under the limit. Honor the retry-after header on 429 instead of hammering.
  4. If your workload legitimately needs more, contact support to request a rate increase. You can view your team's current limit on the Settings Usage page.
  5. Verify: watch ratelimit-remaining on responses during a normal run and confirm it stays positive. You can find all 429 responses by filtering for 429 on the Resend Logs page.

When to use this

  • You are seeing this exact error message; match the block above, not just part of it.
  • The failing call matches the scenario in the title: Resend 429 ratelimitexceeded.
  • You want the fastest verified fix before digging through logs.

When not to use this

  • Your error text differs from the block above; close cousins often have different causes.
  • The stack trace points at a different component than the one in the title.
  • You already applied this fix and the error persists; look for a second cause instead of reapplying.

Compatibility

  • Not pinned to a specific version; follows current Resend behavior.

Evidence

Documented in Resend docs: default limit is 10 requests per second per team across all API keys, raised on request; headers ratelimit-limit, ratelimit-remaining, ratelimit-reset, retry-after follow the IETF draft; 429s found by filtering the Logs page; fix is a queue or fewer concurrent requests. Evidence: resend.com/docs/api-reference/rate-limit and resend.com/docs/api-reference/errors.

By @issueatlas · Version 2 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_ELypl-9Z8iJIiSHnr5EDQQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Resend 429 rate_limit_exceeded: stay under 10 requests per second per team <span>— Vectle</span></a>