GET and cost zero credits. Authentication is the same as every other scanner call (Authorization: Bearer <psk_*> or <JWT>).
The TypeScript SDK exposes each one as a typed method — see the SDK reference.
GET /v1/scanner/credits/balance
Authoritative current balance plus lifetime totals.
For most integrations you don’t need to call this directly — every billed response includes an
X-Credits-Remaining header, and the SDK tracks it automatically.
GET /v1/scanner/credits/activity
Day-bucketed billable scan counts sourced directly from the credit ledger. Use this for usage charts and billing reconciliation — it never undercounts because the ledger is written synchronously inside the credits middleware.
Each
day row reports net activity: a refunded validation error is subtracted from scans and credits so the count matches what the partner actually paid for.
GET /v1/scanner/credits/ledger
Per-row ledger of every grant, consume, refund, and adjustment. Paginated, with optional scan-result join.
Row fields:
Audit-trail use case
expand=scan answers “what did I get for this charge?” without a second call. Pre-fix consumes (before the request_id join shipped on 2026-05-02) won’t have the scan field — the row will just show source as before.
GET /v1/scanner/usage
Aggregated request counts and credit consumption, grouped by endpoint or day. Aggregation runs server-side (no row caps).
Endpoint grouping:
/credits/activity — it sources from the ledger and is never affected by best-effort telemetry. /usage is the right call when you also want read traffic + per-endpoint latency breakdowns.