Weather Ruse
Guides

Rate Limits

Request limits per plan and how to handle 429 responses.

Limits by plan

Rate limits apply per organization across all API keys.

PlanRequests / minuteMonthly credits
Free10100,000
Starter601,000,000
Pro30010,000,000
Enterprise1,000+100,000,000+

Response headers

Every response includes rate limit headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1718841660

Handling 429

When the rate limit is exceeded, the API returns 429 Too Many Requests:

{
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Retry after 12 seconds.",
  "retry_after": 12
}

Implement exponential backoff:

async function fetchWithRetry(url: string, key: string, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const res = await fetch(url, {
      headers: { Authorization: `Bearer ${key}` },
    });
    if (res.status !== 429) return res;
    const retryAfter = Number(res.headers.get("Retry-After") ?? 5);
    await new Promise((r) => setTimeout(r, retryAfter * 1000 * (i + 1)));
  }
  throw new Error("Max retries exceeded");
}

Upgrade

If you consistently hit rate limits, upgrade your plan.

On this page