Skip to main content
All endpoints below are 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.
Query params: 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.
Query params: 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).
Query params: Endpoint grouping:
Day grouping:
For billable-activity charts, prefer /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.