Docs

Pricing: one meter, one multiplier

The whole Scry price law in plain words: the machine's own rate, free while the box is at most half full and one smooth curve past it, posted rent when the box is contested, five ways to lock a price, bytes out, zero retention, budgets, and the limits that keep a query bounded.

The machine has a rate

Scry runs on a machine we own. The rate is $200 an hour for the whole box, 32 slots, $6.25 per slot-hour. Every query is metered against that rate to the nanodollar and every response says what it cost. Whether you pay it depends on one number: how full the box was when your query was admitted.

Free while the box is half empty

At or below half occupancy a query costs nothing. Not a trial, not a tier: idle compute is worth nothing to us and we do not invoice you for it. The response still carries the meter reading, so you always know what the work was worth. Past half, the meter engages smoothly. The fraction you pay is ((load − ½) / ½)², read once when your query is granted and fixed for the run: a tenth of the meter at two-thirds full, a quarter at three-quarters, the whole meter at a full box. There is no cliff; nobody pays the full price at 0.67 while their neighbor at 0.65 pays nothing. Our own workloads never move this number. Load is measured on external demand only.

The meter

A query that holds a slot and does little pays for the slot. A query that saturates its slot pays for what it burned. Every rate below is published, no key needed, at GET /v1/scry/pricing.

burden = max(occupancy, consumption) + floor
ComponentRate
occupancyseconds you held a slot × $0.001736
CPU$0.0000651 per CPU-second
logical reads$0.000625 per GB
physical reads$0.00139 per GB
peak memory$0.0000067 per GB-second
floor$0.00001

Rent, when the box is contested

When demand exceeds capacity the system posts a congestion multiplier c, from 0 to 5, driven continuously by measured load. Holding a slot while c is nonzero costs rent: c integrated over your hold, times the slot-second rate. Your total is 1 + c times the machine rate; at c = 1 you pay double, at c = 5 six times. c is zero whenever there is spare capacity, and it is posted at GET /v1/scry/price before you send anything.

Choose how you meet the price

Every lane has a lock point. The price is fixed at the lock and never moves after it; the market moves only between locks.

LaneWhat you pay
Eager (default)Run now at the posted price. If the box is full, or c is above the ceiling you set with x-scry-max-multiplier, you get a 429 carrying the current price. Not a bill.
Patient (x-scry-admission: patient)Name a ceiling on c and wait in line. You run only when the posted price is at or below it, and pay the posted rent while you hold the slot.
Priority (x-scry-admission: priority)A full gate never turns you away. You wait at the head of the line for the next freed slot, ahead of every patient query, and pay double the posted rent, at least $0.001.
Firm quote (x-scry-firm-quote: 1)Lock c as posted at grant for your whole run. The lock costs 10% of that rent, at least $0.001.
Reserved window (POST /v1/scry/reservations)Buy slot-seconds ahead of time: up to 16 slots, 60 seconds to 24 hours, at the machine rate × (1 + c at purchase). No rent inside the window and the slot's worth of machine time is covered; consumption beyond it meters like everyone's. Windows end within a day of purchase and are not refunded. We sell a day of certainty against a price that can move fivefold in seconds, and nothing longer.

Without an account

Key-less callers pay in USDC on Base through x402: $0.035 per 20-second quantum, whatever the load, plus an entry premium that carries the posted rent when the box is contested.

Bytes out

The archive is for computing over, not carrying off. The first 20 MB of response bytes a day are free, and academic full text rides its own allowance on top — about 1,000 papers a day per account, never drawn from the general band. Past that, sustained volume is priced on a log ramp weighted by source: about $39 per GB at 1 GB a day, $62 at 10, $85 at 100. Results that return less (aggregations, narrower columns, tighter limits) are never metered. A sharper question costs nothing extra; leaving with the data does.

Zero retention

x-scry-zero-retention: 1 keeps nothing of your query. It prices the machine component at 10× beyond the floor, $0.25 minimum per query, in every regime: the one lane the free band does not cover.

Ceilings, never surprises

x-scry-budget caps a query: under slack it caps the machine time the query may consume, under load it caps what you spend. A running query is killed only when its unfunded charge exceeds $0.01; at or below that it finishes and the remainder is waived, named on the row.

How money comes in

Every new account starts with $10 of credit, full access, no card. Members set a monthly auto top-up between $5 and $100; the balance rolls over. Personal, non-commercial research is what that credit is for, and ExoPriors subsidizes it. Commercial use, including internal R&D, runs through an enterprise engagement with dedicated capacity. The dashboard shows the wallet balance, query history, spend, key budgets, and account limits.

Query bounds

The SQL endpoint accepts one read-only statement. Ordinary result sets require a literal LIMIT; begin at LIMIT 20. The validator and serving role enforce result-row, result-byte, rows-read, execution-time, and memory ceilings. The response reports truncation and execution details when they apply.

Rate and account limits

Under load, admission returns a typed capacity or price error (query_capacity_exhausted, or priced_out when the posted congestion multiplier is above your x-scry-max-multiplier ceiling) with Retry-After. API keys can also carry a per-minute rate limit and a monthly spend limit. The server returns the active limit in account and error responses rather than publishing one fixed number for every key.

Read the law itself

GET /v1/scry/pricing carries every constant, every lane, every header; GET /v1/scry/price the posted multiplier now. This page is a transcription; the JSON is the contract.

Related docs