CloudflareRunbook 0/4 done
1015

Cloudflare Error 1015: You are being rate limited

Warning↻ Retryable · exponential backoffHTTP 429 Too Many RequestsCDN / Edge
TL;DR · 10-second read

A Cloudflare rate limiting rule on the site matched your IP or key and is blocking you for the mitigation period. As a client, back off per Retry-After; as the owner, loosen or scope the rule.

Identify: does your log match?

What you see · exact log / response
HTTP/2 429
server: cloudflare
cf-ray: 8d2f4a1b7c3e2f10-FRA
retry-after: 60
content-type: text/html; charset=UTF-8

Error 1015
Ray ID: 8d2f4a1b7c3e2f10 • 2026-10-22 09:14:03 UTC
You are being rate limited
The owner of this website (api.example.com) has banned you temporarily from accessing this website.
  1. High

    Client exceeded a rate limiting rule

    Scrapers, retry loops or CI jobs from one IP send more requests than the rule allows per period. Cloudflare blocks until the mitigation timeout ends.

  2. Medium

    Shared egress IP counted as one client

    Corporate NAT, CGNAT or a serverless platform's shared IPs aggregate many real users into a single counter.

  3. Medium

    Rule too broad for API traffic

    A rule written for /login also matches /api/*, so legitimate high-frequency API clients get blocked.

Fix

Back off on 429 and honor Retry-After

✕ Broken · TypeScript
for (const url of urls) {
  const res = await fetch(url);
  if (!res.ok) continue;
}
✓ Fixed · TypeScript
async function get(url: string, tries = 5): Promise<Response> {
  for (let i = 0; ; i++) {
    const res = await fetch(url);
    if (res.status !== 429 || i >= tries) return res;
    const wait = Number(res.headers.get('retry-after') ?? 2 ** i) * 1000;
    await new Promise(r => setTimeout(r, wait + Math.random() * 250));
  }
}

Retrying immediately extends the ban. Waiting Retry-After seconds lets the counter reset.

Verify: reproduce it on purpose

Reproduce locally · bash
$ for i in $(seq 1 500); do curl -s -o /dev/null -w "%{http_code}\n" https://your-site.example/api/ping; done | sort | uniq -c

Run it against a dev environment to trigger 1015 on purpose and test your error handler.

Prevent

  • Expose rate limits in your API docs with Retry-After.
  • Use Security Events in the dashboard to see which rule fired.
  • Exempt health checks and known partners with a skip rule.

FAQ

How long does a Cloudflare 1015 ban last?

Until the rule's mitigation timeout (from 10 seconds up to a day, depending on plan) expires. Repeated violations restart it.

Is 1015 caused by Cloudflare or by the site?

By the site owner's rate limiting rule. Cloudflare only enforces it, so only the owner can change the threshold.

Will a VPN fix error 1015?

A new IP gets a fresh counter, but if the rule counts by header or cookie you will be blocked again. Slow down instead.

Related errors

Last verified 2026-10-22 · Source: Cloudflare 1xxx and 5xx error reference · Official docs ↗ · ~22,200 searches/mo