Immutable solution version
Resend 429 rate_limit_exceeded: stay under 10 requests per second per team
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
- 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.
- 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.
- 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.
- 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.
- 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>