Agent skill · data analytics · jeremylongshore
openrouter-rate-limits
Understand and handle OpenRouter rate limits. Use when hitting 429 errors,
Why this skill is useful
Provides specific commands and strategies for managing OpenRouter rate limits that the AI wouldn't reliably generate on its own.
What it needs
Requires curl, jq, python3 installed locally. Requires openrouter account access. About 4k tokens when loaded. Last updated 2026-08-07. 2,604 stars on the source repository.
What this skill does
OpenRouter Rate Limits Overview OpenRouter rate limits are per-key, not per-account. Free tier keys get lower limits; paid keys get higher limits that scale with credit balance. The OpenAI SDK has built-in retry with exponential backoff for 429 responses. Check your current limits via GET /api/v1/auth/key. Rate limit headers are returned on every response. Prerequisites An OpenRouter API key (sk-or-v1-...) exported as OPENROUTERAPIKEY — see the openrouter-install-auth skill for setup curl and jq for querying your key's limits from GET /api/v1/auth/key Python 3.8+ with the OpenAI SDK (sync OpenAI and AsyncOpenAI) plus the requests package for reading rate-limit headers directly Awareness of your tier: free keys get 20 req/10s, keys with any credits 200 req/10s (see Rate Limit Tiers) Instructions 1. Query your key's limits via GET /api/v1/auth/key per Check Your Rate Limits — note ratelimit.requests and ratelimit.interval. 2. Place yourself in the Rate Limit Tiers table, remembering free models carry separate daily caps (50 req/day free, 1000 req/day with $10+ credits). 3. Inspect live headroom with checkrateheaders() per Read Rate Limit Headers — watch x-ratelimit-remaining and retry-after. 4. Configure SDK retries per Retry Strategy with OpenAI SDK: maxretries=5, timeout=60.0; the SDK catches 429s and backs off with jitter automatically. 5. Add the client-side TokenBucket limiter from Custom Rate Limiter, set below the server limit (e.g. 150 per 10s under a 200/10s cap) so you rarely hit 429 at all. 6. For bulk jobs, use batchwithratelimit() per Batch Processing with Rate Awareness — staggered starts plus semaphore-capped concurrency instead of bursts. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills jeremylongshore/openrouter-rate-limits