Understand and handle OpenRouter rate limits effectively. Use when building high-throughput systems. Trigger with phrases like 'openrouter rate limit', 'openrouter 429', 'openrouter throttle', 'request limits'.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add micsapp/micstec-skills --skill openrouter-rate-limits --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Openrouter Rate Limits?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/micsapp-openrouter-rate-limits)More formats (shields.io, HTML) on the badges page.
---
name: openrouter-rate-limits
description: |
Understand and handle OpenRouter rate limits effectively. Use when building high-throughput systems. Trigger with phrases like 'openrouter rate limit', 'openrouter 429', 'openrouter throttle', 'request limits'.
allowed-tools: Read, Write, Edit, Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
compatible-with: claude-code, codex, openclaw
---
# Openrouter Rate Limits
## Overview
This skill covers OpenRouter's rate limiting behavior, how to read rate limit headers, and implementing retry strategies that respect limits.
## Prerequisites
- OpenRouter integration
- Understanding of HTTP 429 status codes and retry-after semantics
## Instructions
1. **Read rate limit headers**: Inspect `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` from each response to know your current limits
2. **Implement exponential backoff**: On 429 responses, wait `2^attempt * base_delay` seconds before retrying, with jitter to prevent thundering herd
3. **Pre-check remaining quota**: Before sending a batch of requests, check `X-RateLimit-Remaining` and pace requests to stay under the limit
4. **Use a token bucket or leaky bucket**: Implement client-side rate limiting to smooth request bursts and avoid hitting server limits
5. **Handle per-model limits**: Different models may have different rate limits; track limits per model ID separately
## Output
- Automatic retry logic that handles 429 responses gracefully
- Client-side rate limiter that prevents hitting server limits
- Dashboard or log output showing rate limit utilization over time
## Error Handling
| Error | Cause | Fix |
|-------|-------|-----|
| 429 Too Many Requests | Exceeded requests-per-minute or tokens-per-minute limit | Use exponential backoff with jitter; respect `Retry-After` header |
| Retry storm | Multiple clients retrying simultaneously | Add random jitter (0-1s) to each retry delay |
| Silent throttling | Responses slow down before 429 | Monitor response latency; proactively reduce request rate when latency increases |
See `${CLAUDE_SKILL_DIR}/references/errors.md` for full error reference.
## Examples
See `${CLAUDE_SKILL_DIR}/references/examples.md` for runnable code samples.
## Resources
- [OpenRouter Documentation](https://openrouter.ai/docs)
- [OpenRouter Models](https://openrouter.ai/models)
- [OpenRouter API Reference](https://openrouter.ai/docs/api-reference)
- [OpenRouter Status](https://status.openrouter.ai)

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!