Credits & billing

Credits are charged per operation, cache hits are free, and you are never charged for our failures. This page says exactly what costs what.

How charging works

Each operation has a credit class reflecting what it costs us to serve. Charging a flat rate for everything would mean either overcharging for simple lookups or losing money on heavy ones, so we do neither.

Class Credits Operations
Basic 1 profile, post, resolve
List 2 profile/posts
Advanced 3–5 Derived and higher-cost operations
Premium 5–20+ Specialised datasets, priced per endpoint

The credit cost of a response is always returned in the X-Credits-Charged header, including when it is zero.

Cache hits are free

A response served from cache costs 0 credits. You are billed for live fetches, not for asking again.

This is deliberate and it changes how you should build. Polling a resource every few minutes is cheap: you pay for the first fetch in a window and nothing for the rest. There is no penalty for checking twice, and no reason to build your own cache on top of ours.

freshness: "cached"  →  0 credits
freshness: "fresh"   →  the operation's credit class

What is never charged

You are not billed when the request did not give you what you asked for:

Outcome Charged
Success, live fetch Yes
Success, cache hit No
not_found — profile or post gone No
private — account not public No
unavailable / upstream_unavailable No
400 — malformed request No
429 — rate limited No
Idempotent replay No — the original charge stands
Client cancelled after the fetch Yes — the provider was already paid
Client cancelled before the fetch No

The two cancellation rows are the ones people trip on. A request you abandoned can still appear on your bill, because the cost is incurred when we call the provider, not when you read the response. The result is cached either way, so the retry is free — see errors & availability.

The not_found row costs us real money: our upstream bills us for a lookup of a resource that turns out to be deleted. We absorb it. Passing that on would mean charging you for the discovery that something you asked about no longer exists.

Running out

Requests do not stop when your credits run out. They continue and bill as overage at a higher per-credit rate. An integration failing at 3am because a balance hit zero is a worse outcome than a slightly larger invoice, so we chose the invoice.

Two things are planned to stop that being a surprise. Neither is built yet, so at launch the overage above is the only backstop:

Per-project overage disabling — so exhausted credits return 402 instead of billing on — is also planned, not shipped.

Until those land, watch your balance in the dashboard, or reconcile from the usage ledger.

Plans

Plan Price Credits Per 1,000 Rate limit
Free $0 1,000 30/min
Builder $19/mo 7,500 $2.53 120/min
Growth $49/mo 25,000 $1.96 240/min
Higher volume Per account 25,000+ Per account Per account

Plan credits reset monthly and roll over for one month. Credits bought as top-ups are valid for twelve months. Plan credits are spent first, so the balance that expires soonest goes first.

Last updated 27 August 2026