permission_error, not a rate_limited one. This page is about request rate.
The 429 response
Over the limit, you get a429 with a rate_limited error envelope and a Retry-After header (seconds). Wait that long, then retry.
429 Too Many Requests
Backing off
ReadRetry-After and sleep for that many seconds before retrying. The SDK does this for you — it reads the header and retries with exponential backoff and full jitter (default: 2 retries).
Staying under the limit
- Collapse many sends into one request with
POST /v1/emails/batch— up to 100 messages count as a single call. - Use a worker pool with bounded concurrency rather than firing every request at once.
- Schedule non-urgent sends with
scheduledAtinstead of blasting them in real time. - Treat
429as backpressure: slow down, don’t spin.
See also. The full error catalogue, including
rate_limited, lives on Errors.