Skip to main content
Each API key refills at 10 requests per second, up to 600 requests per minute, and can burst to 600 requests. Live and sandbox keys have separate limits. Reads and writes share the same limit. When you exceed it you get 429 rate_limited with details.retry_after_seconds. Wait that long, then retry.

Cloudflare import capacity

Live POST /domains/import can also return 429 rate_limited with details.reason: "cloudflare_account_capacity" when all eligible Cloudflare accounts are already handling synchronous imports. Use POST /domains/import/jobs for bulk async imports. That endpoint queues under the normal Partner API rate limit instead of rejecting because Cloudflare accounts are busy.

The 429 response

HTTP status: 429. Always pair it with the Peeker-Request-Id response header in your logs.

Backoff with jitter

Honor retry_after_seconds, then add a small random delay so a fleet of workers does not sync into the next window.

Live and sandbox are separate

pk_live_… and pk_test_… keep independent counters. You can hammer sandbox during integration without affecting live traffic.

Need more than 600/min?

Email support with your typical and peak request rates and we will raise the cap. We do not auto-throttle. Production accounts that need more get more.

Webhooks are not rate-limited

Webhook deliveries do not use your API quota. See Delivery and retries.
Last modified on August 20, 2026