Plans, limits & credits
Crius API plans (Free, Starter, Pro, Business, Enterprise), monthly credits, requests per second, WebSocket limits, credit cost per endpoint and the rate-limit response headers.
Every plan has a rate limit (requests per second, with a burst of twice that), a monthly credit quota, WebSocket limits and a set of endpoints. Each request costs a number of credits depending on the endpoint; cheap calls such as prices cost 1.
How the rate limit works: each key (or, without a key, each IP address) has a bucket that holds up to twice its per-second limit and refills at that limit. A Free key (10 requests/s) can send 20 requests at once, then 10 every second. The Account API has its own limit and is never counted.
Getting a key or a bigger plan: a Free key takes a minute at dashboard.crius.sh (email or wallet, no card). Upgrades are on the dashboard’s Billing page; for more than Business, write to support@crius.sh.
Plans
| Plan | Price | Credits / month | Requests / s | WebSockets | Subscriptions |
|---|---|---|---|---|---|
| Anonymous (no key) | free | n/a, per IP | 2 | none | none |
| Free | $0 | 1,000,000 | 10 | 1 | 10 |
| Starter | $19 / month | 10,000,000 | 25 | 3 | 100 |
| Pro | $79 / month | 50,000,000 | 75 | 10 | 1,000 |
| Business | $249 / month | 200,000,000 | 200 | 50 | 10,000 |
| Enterprise | custom | custom | custom | custom | custom |
Paying for 6 months gives 10% off, and 12 months 20% off. Plans are paid on-chain on Robinhood Chain in USDG, ETH or WETH; see Billing & payments. Credits reset at the start of each UTC month and are shared by all of an account’s keys.
Endpoints by plan
| Plan needed | Endpoints | Credits per call |
|---|---|---|
| Anonymous | token profile, price, batch prices, batch profiles, pools, pool, token lists, search, stats, volume, launchpads, security (cached) | 1 |
| Anonymous | trades, candles, launchpad detail | 2 |
| Public | status, chains | 0 (not counted against any limit) |
| Free | holders, launch, activity feed, hooks, hook detail | 2 |
| Free | holder snapshot, top traders, liquidity & locks, developer profile | 5 |
| Free | WebSocket stream (per connection) | 1 |
| Starter | wallet profile, wallet trades, fees & claims | 5 |
| Starter | holder cohort, holder history, bundles, bubble map, wallet connections | 10 |
| Starter | fresh security simulation (/security?fresh=1) |
20 |
| Enterprise | firehose:trades stream channel (every trade on chain) |
Each endpoint page in the API reference shows its plan and cost. Calls to the Account API (/v1/account/*) are free and don’t count against your credits.
Rate-limit headers
Every data response carries:
| Header | Meaning |
|---|---|
x-ratelimit-limit |
Your requests-per-second limit for this key |
x-ratelimit-remaining |
Requests left in the current burst |
x-ratelimit-reset |
Milliseconds until the bucket refills (1000) |
x-credits-cost |
Credits this request cost |
x-quota-remaining |
Credits left this month (after this request) |
When you go over the rate limit you get 429 rate_limited with a retry-after header (seconds). When the month’s credits run out you get 429 quota_exceeded until the next month, or until you upgrade. Both say what your limit is and how to raise it:
{ "error": { "code": "rate_limited", "message": "Rate limit reached: requests without an API key are limited to 2 per second per IP (bursts of up to 4). Retry in 1 s, or get a free API key (10 requests/s, 1,000,000 credits a month) at https://dashboard.crius.sh.", "plan": "anon", "limit_rps": 2, "burst": 4, "retry_after_ms": 412, "upgrade_url": "https://dashboard.crius.sh", "docs_url": "https://docs.crius.sh/plans-and-limits/" }}| Field | Meaning |
|---|---|
plan |
The plan the request was checked against (anon without a key) |
limit_rps, burst |
Your requests per second and the most you can send at once |
retry_after_ms |
When the next request will be accepted |
monthly_credits, resets |
(quota_exceeded) Your monthly credits and the UTC date they reset |
required_plan |
(403 plan_required) The lowest plan that includes the endpoint |
upgrade_url |
Where to get a key or a bigger plan |
Handling 429 well
async function crius(path, tries = 4) { for (let i = 0; i < tries; i++) { const res = await fetch(`https://api.crius.sh${path}`, { headers: { "x-api-key": process.env.CRIUS_API_KEY }, }); if (res.status !== 429) return res.json(); const body = await res.json(); if (body.error?.code === "quota_exceeded") throw new Error("monthly credits used up"); const wait = Number(res.headers.get("retry-after") ?? 1) * 1000; await new Promise((r) => setTimeout(r, wait + Math.random() * 250)); } throw new Error("still rate limited");}Usage and alerts
The dashboard shows usage per day and per endpoint, and GET /v1/account/usage returns the same data. We email you when you reach 50%, 80%, 90% and 100% of your monthly credits.
Get your free Crius API key
Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.
- Robinhood Chain (4663) only, from our own archive nodes
- REST + WebSocket
- Pay on-chain or by card