The current machine-readable contract is
GET /v1/meta/plans. Source capacity,
concurrency and input-size limits also apply; a larger balance does not bypass them.
Your balance
Every eligible account receives $10 once, with no expiry and no recurring refill. Existing accounts receive the launch welcome grant once as part of the account reset. It is promotional usage allowance, not a purchase. Add funds in amounts of at least $10. Purchased funds do not expire. When a paid plan’s monthly allowance runs out, purchased funds continue at that active plan’s rates: Build stays Build and Growth stays Growth. Auto-recharge is optional and requires explicit payment consent; a free API call never triggers it. Unused paid monthly allowance carries for one additional paid billing period, capped at the upcoming monthly allowance. It does not accumulate indefinitely. Welcome and purchased funds have no monthly reset. The billing response shows available, reserved and expiring amounts separately. Charges from the last few seconds can still be on their way into the ledger: when that applies, the wallet also showspending_usd (recent charges and work still running), already
subtracted from available_usd. If that figure cannot be read right now the
wallet says so with pending_unavailable: true and pending_usd: null; it is
never shown as zero.
After Checkout, the dashboard verifies the returned session before confirming
that its funds were applied. A larger wallet balance alone is not payment proof.
POST /v1/users/me/billing/checkout-return is a Firebase-authenticated, read-only
confirmation: its topup object identifies the session_id, a status of
processing, funded or incomplete, and the canonical lot_id only when
funded. Processing or incomplete responses have a null lot ID. A fully spent
purchase can still be confirmed; a recorded refund or unresolved/lost dispute
cannot produce a new funding confirmation. The return confirmation never applies a payment or grants purchased funds.
Search with enrichment
Basic Search returns a shortlist with APN, address, administrative areas, acreage and the stored parcel analysis point. Scalar filter values and requested public Search/Enrich extras appear infields, excluding duplicate identity values, and
are included in the query price.
Set enrich: true to attempt the full Enrich catalog and return compact
enriched_fields instead of fields, regardless of field selection. On Free, a query returning ten
successfully enriched parcels costs $0.20 + 10 × $0.02 = $0.40. A valid query
with zero matches still costs the Search unit price. A query that cannot execute
costs zero. Failed enrichments keep the matched parcel and incur no Enrich charge.
Spending controls and retries
For paid calls, sendmax_cost_usd as a decimal string, such as "0.40".
Search with enrichment reserves the query price plus limit parcel units before
starting, then settles only the completed query and successful delivered enrichments.
Unused reserved funds are released. No-match, ambiguous and unavailable Enrich
results cost zero. An incomplete Ask answer costs zero.
Use a stable Idempotency-Key for HTTP retries, or idempotency_key for hosted MCP.
The same key and payload return the saved result without a second source run or
charge. Changing the payload under the same key is an error. Omitting the key
creates a new paid operation on every call. Paid responses include billing with
operation_id, charged_usd, currency, pricing_version and replayed.
A client disconnect does not cancel an owned paid operation. Reuse its stable key
or read GET /v1/operations/{operation_id} to recover the result. Saved paid
results are retained for 30 days and require fresh authorization when read.
Results are saved for replay just after the response; in the rare case a charged
result could not be saved, recovery returns 410 result_not_retained with a
receipt of the charge, and a new key runs the work again.
Licensed results also require continuing dataset permission: a
dataset withdrawal can make an
unexpired result unavailable without changing historical billing records.