Units and pricing
Willow RPC offers a Free plan. Beyond it, usage is paid from a prepaid
balance, or through a monthly plan that includes units and proof credit.
/v1/prices always reports the current prices.
A unit is up to 4 KB of gzipped response. Most calls cost 1 unit, and a full Ethereum block with its transactions costs about 20.
- Every request Willow serves costs at least 1 unit.
- Each item in a batch is metered separately.
- Refusals are not billed, except as described for state methods below.
- State methods have flat prices: 3 units
for a forwarded method such as
eth_sendRawTransaction, 5 for a verified read such aseth_getBalance, and 25 foreth_call, or 3 units per provider request if that is more. A reverted or haltedeth_calland a provider’s error for a forwarded method are billed as results. A call refused because it reads too much state or ran out of time costs 3 units per provider request made. State methods are available on plans that include them (see Plans); on other plans they return-32601. - Log proofs are priced per block, not in units. Transaction and receipt proofs are metered in units like any other response, on every plan.
- History fetches are also metered in units, by the size of the blocks fetched.
Send Accept-Encoding: gzip. The size is metered gzipped in either case, and
the response is delivered faster.
| Plan | Price | Units | Log proofs | State methods | Requests per second |
|---|---|---|---|---|---|
| Free | $0, no card | 10M a month | Not included | Not included | 25 |
| Pay as you go | Prepaid, from $10 | $2 per 1M | Paid from the balance | Included | 100 |
| Builder | $49 a month | 50M a month, then $1.20 per 1M | $10 of proof credit a month, then the balance | Included | 100 |
| Scale | $299 a month | 400M a month, then $0.90 per 1M | $50 of proof credit a month, then the balance | Included | 300 |
- Free requires no payment card. When the month’s units are exhausted, requests are refused with HTTP 402 until the next month, or until credit is added.
- Pay as you go begins when credit is added to a Free account. The Free units remaining that month remain available for reads until the month ends. Thereafter, every unit is charged to the balance at $2 per 1M.
- Builder and Scale include units and proof credit each month. Beyond the included units, usage costs $1.20 per 1M units on Builder and $0.90 per 1M on Scale, paid from the balance, or billed to the card as overage if enabled.
- Custom plans are for high volume: per-request pricing, invoiced monthly, and higher rate limits. They are requested with Talk to us on the Billing page. A custom plan includes state methods only if its agreement does.
Builder and Scale are paid by card (a Stripe subscription) or from the balance each month. Plans are selected, changed, and cancelled on the Billing page. A cancelled plan remains active until the end of its month.
Proofs
Section titled “Proofs”A log proof is priced per block, at one flat price per chain:
| Chain | Price per proven block | Per 1,000 blocks |
|---|---|---|
| Ethereum | $0.020 | $20 |
| Base | $0.006 | $6 |
| OP Mainnet | $0.006 | $6 |
| Arbitrum One | $0.00025 | $0.25 |
| Unichain | $0.00025 | $0.25 |
| Ink | $0.00025 | $0.25 |
| Robinhood Chain | $0.00025 | $0.25 |
- One price, proven or not. A block that is already proven costs the same as one that must be proven on request.
- No block is charged twice. Willow retains, permanently, the block ranges each account has paid for. A repeated request for a proof over blocks already paid for, or retrieval of the result of a job, incurs no further charge.
- Charged before proving. A request for blocks without a proof is charged for the entire requested range before the job is queued. A job that fails permanently is refunded.
- Credit applied first. Builder and Scale proof credit is applied first, then the balance. Proof credit is monthly, and any remainder expires at the end of the month.
- Quotes.
willow_quoteLogsProofreports the cost of a request, without charge. See Quotes and acceptance.
Balance and credit
Section titled “Balance and credit”The balance is a prepaid amount. It pays for units beyond the plan’s included units, and for proofs.
Credit is purchased by card on the Billing page, from $10 up to $5,000 per transaction, through Stripe Checkout.
Every credit and charge is listed in the ledger on the Billing page.
Spend cap
Section titled “Spend cap”A spend cap limits the amount the balance can be charged in a month, for usage and proofs combined. When the month’s charges reach the cap, requests are refused with HTTP 402 until the cap is raised or the next month starts. The cap is set, changed, or removed on the Billing page.
Overage
Section titled “Overage”Overage allows a Builder or Scale account to continue past a zero balance, with the excess billed to its card afterward. It is disabled by default, requires a card subscription, and requires a spend cap, so charges never exceed an amount set by the account holder.
Failed payments
Section titled “Failed payments”If a card payment fails, a grace period applies during which the payment can be corrected on the billing portal. After the grace period, the account’s keys are suspended, and requests with them are refused with HTTP 401 until the payment succeeds.
Prices as JSON
Section titled “Prices as JSON”GET https://api.willow.tech/v1/prices returns every price above as JSON, for
programs and agents: the unit, each plan, the price per proven block on each
chain, and the top-up limits. Monetary amounts are
expressed in micro-dollars (1 USD = 1,000,000).
curl -s https://api.willow.tech/v1/prices{ "currency": "USD", "money_unit": "micro-dollars (1 USD = 1,000,000)", "unit": { "unit_bytes": 4096, "refusals_billed": false, … }, "plans": [ { "id": "free", "display_name": "Free", "monthly_micros": 0, "included_units": 10000000, "requests_per_second": 25, "proofs": false, … }, … ], "proofs": { "chains": [ { "chain_id": 1, "chain_name": "ethereum", "micros_per_block": 20000, … }, … ] }, "credits": { "min_topup_micros": 10000000, "max_topup_micros": 5000000000, … }, "agents": { "starter_balance_micros": 10000000, … }}