Credit, limits and errors
You pay only for what reaches the real chain. Everything else is free.
What costs credit
| Price | |
|---|---|
| A read of state no testnet has fetched before | $10.00 per million |
| A call passed to the parent chain whole (an old block, an old receipt) | $10.00 per million |
| Everything answered from the shared cache — most calls | free |
| Transactions, traces, simulations, the explorer, alerts, sockets | free on their own |
State a testnet has read is shared with every other fork of the same chain, so a second fork at the same block starts almost fully warm. Every account starts with $20.00. Your Account page shows cost per day and per testnet.
Adding credit
- One-time top-ups of $5 to $1000; no subscription. Credit does not expire.
- An organization has its own credit, shared by its members. Organizations start with none — switch to one and top it up — so free credit stays one per person.
- When credit reaches zero, testnets pause — calls get HTTP 402 and sockets close — and resume the moment credit is added. Nothing in them is lost.
Limits
| Limit | Value |
|---|---|
| Requests per testnet | 25 a second, in bursts of up to 100 — a batch counts each call |
| Testnets per account — a clone counts as one | 25 |
| Snapshots per testnet | 20 |
| Transactions per simulated bundle | 64 |
| Subscriptions per WebSocket | 64 |
| Alerts per testnet | 25 |
Errors worth handling
| Code | HTTP | Meaning |
|---|---|---|
-32005 | 429 | Over the request limit. The retry-after header and error.data.retryAfterMs say how long to wait |
-32005 | 402 | The account is out of credit. Add credit and the testnet resumes |
-32000 | 409 | The testnet was changed by another request at the same moment; nothing was applied. Send it again |
-32000 | 200 | nonce too low / nonce too high / intrinsic gas too low — the transaction itself is wrong |
-32603 | 500 | Our fault. It has been reported |
Wallets and libraries already treat
-32005 with a 429 as “back off”, so most clients retry on their own.