Verification
Verify a person’s identity in one HTTPS call. ID verification starts at $0.08 per check; add face matching, AML screening, address verification, or voice authentication only when you need them. The full feature set — not a stripped-down “API-only” tier:
- Document OCR. We extract structured data (name, DOB, ID number) from government-issued ID images.
- Liveness detection. Anti-spoofing — proves the person is real and present, not a photo or deepfake. Active and passive checks.
- Face matching. Compares the selfie against the ID photo. Deterministic score, not a black-box AI verdict.
- Deterministic decisions. Reproducible — the same inputs always give the same result. No AI drift, no “this verification passed yesterday but fails today” surprises.
- GDPR-compliant data handling. ID documents and biometric data processed under GDPR data-protection requirements.
- Hosted upload flow. We serve the user-facing UI; your customer’s end-user opens a link, uploads their ID + selfie, we POST the result to your webhook.
How it compares
Most identity-verification providers charge a single bundled price between $1 and $4 per session regardless of which checks you actually used. They include the verification AND enterprise wrappers — regulated KYC pipelines, AML screening, anti-fraud scoring, liability transfer, compliance reporting. If you need those, the incumbents are still your path.
We sell each check separately. Start at $0.08 for ID verification; add face matching ($0.04), AML screening ($0.01), address verification ($0.02), or voice authentication ($0.03) only when you need them. A typical full identity check totals $0.12–$0.25. When you just need “this person is who they say they are,” we’re 10-30x cheaper because we’re not making you pay for services you didn’t ask for. When you need the full enterprise bundle, the incumbents are still there.
See /pricing for the complete per-check breakdown and full add-on catalog.
How it works
curl -X POST https://api.verafirma.com/v1/verifications \
-H "Authorization: Bearer vf_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "type": "document" }'
Returns 201 with { id, status: "PENDING", hostedUrl, ... }. The end-user opens hostedUrl, uploads their ID and selfie. We POST a webhook to your registered URL when the check completes.
The type field selects depth: document (ID image + checks), liveness (selfie + liveness probe), biometric (full identity binding). Soft-disableable per type via the verafirma.verification.allowed_types tunable.
See the API reference for the full surface.
Authentication
Four options — same as envelope signing:
- API key (
Authorization: Bearer vf_live_...) — sign up via Google or GitHub OAuth, top up your balance via Stripe. - x402 (
PAYMENT-SIGNATUREheader with a signed EIP-3009 USDC authorization) — no signup, no account, pay per call directly. The cleanest path for AI agents. - Wallet JWT (
Authorization: Bearer <jwt>from/v1/auth/verify) — for crypto-native developers building dashboards. - Session cookie (
vf_session) — for browser-based dashboard flows.
Same wallet identity across all four; if you start with x402 and later sign up via OAuth, the dashboard surfaces the same verification history.
Pricing
ID verification starts at $0.08 per check; optional add-ons (face matching, AML, address verification, voice authentication) priced separately per /pricing. Charged at creation; refunded on terminal failure (verification.failed) up to verafirma.verification.refund_cap_per_call (default 1).
Note on the API surface today: the V1 wire API (
POST /v1/verifications) charges a flat $0.10 per call regardless of which check components thetypeparameter triggers. The granular per-component pricing above is the product direction; the wire surface will evolve to match in a future release. Today, every/v1/verificationscall is billed at $0.10.
When you outgrow us
Verafirma is built to be replaceable. We host battle-tested open-source verification software ourselves on cheap infrastructure and charge you what it costs to run plus a markup. When your volume reaches the point where running it yourself makes sense, ask us — we’ll point you at exactly what we use and how we configured it. No vendor lock-in. No proprietary client SDK you’d have to throw away. The on-the-wire contract is standard HTTPS + x402; you can swap us out without changing client code.