Acquisition units
Billed responses report their cost inline, in the same payload as the data:What gets billed
Only calls that actually reach a provider. Requests rejected for a missing scope, a bad body, or an exhausted rate limit never write a cost event. Neither does a502 — if the provider call throws, nothing is billed.
Web search bills at one of two rates depending on depth:
Asking for 100 results in one call is cheaper than ten paginated calls of 10, so prefer depth over pagination when you know you want the volume.
Funding sources
Every cost event records who paid for it.platform
Revcenter’s own provider keys served the call. It counts as billable acquisition against the workspace.
workspace_byok
The workspace’s own provider key served it. The activity is recorded for visibility, but the vendor spend is already yours — it is not billable overage.
Reading usage
usage:read scope and cover API-key activity only — work done in the app is excluded, so these numbers reconcile against your integration and nothing else.
Cost events carry the request_id of the call that produced them, which is how you attribute spend back to a specific request in your own logs. See Errors.
Credits and blocked runs
Platform-funded workspaces are checked for credit before any run that spends money starts —POST /api/scans, POST /api/bulk, POST /api/scans/{id}/expand, and campaign planning all pre-check. A workspace out of credit is stopped up front rather than part-way through a pipeline, so you never pay for a half-finished search.
Contact enrichment is gated harder still: it runs only on completed searches, only on an explicit call, and only against an explicit target of email, phone, or both. It never happens automatically as part of a search.