screen size not supported

429 Too Many Requests JSON response example

Last updated 2026-05-20

When to use this

Use this for rate-limiting. The body carries retryAfter, limit, remaining, and reset so the client can implement a sensible backoff without guessing.

Example JSON

Returned by a rate-limited endpoint when the caller exhausts their quota.
{
  "status": 429,
  "error": "Too Many Requests",
  "message": "Rate limit exceeded for ip 203.0.113.10",
  "code": "rate_limit_exceeded",
  "retryAfter": 30,
  "limit": 600,
  "remaining": 0,
  "reset": 1700000030
}

Request examples

const res = await fetch('https://jsonexamples.com/http/429/Rate+limit+exceeded');
if (!res.ok) {
  const err = await res.json();
  console.error(res.status, err.message);
}

Try the live endpoint

Click below to call /http/429/Rate+limit+exceeded from your browser.

// click the button to populate this block

Common variations

Per-user limit
{
  "status": 429,
  "error": "Too Many Requests",
  "message": "User exceeded plan limit",
  "code": "plan_quota_exceeded",
  "retryAfter": 3600
}

Convert this JSON

Generated starting points for TypeScript, JSON Schema, and Zod. Refine before shipping to production.

export interface 429RateLimit {
  "status": number;
  "error": string;
  "message": string;
  "code": string;
  "retryAfter": number;
  "limit": number;
  "remaining": number;
  "reset": number;
}