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.
| 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
Section titled “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), status, chains | 1 |
| Anonymous | trades, candles | 2 |
| 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
Section titled “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.
Handling 429 well
Section titled “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
Section titled “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.