SANDBOX MODE: VerifyMesh currently runs against a simulated (mock) provider with fixture data only. No live identity verification is performed and no real documents or personal data are processed until a live provider contract is signed and configured. KYC/AML obligations remain with you, the regulated entity — VerifyMesh is workflow tooling, not a compliance provider of record.

Docs

One API for every ID check. Bearer-key auth, HMAC-signed webhooks.

Create a verification session

curl -s -X POST localhost:8080/v1/sessions \
  -H "Authorization: Bearer <VERIFYMESH_API_KEY>" \
  -H 'Content-Type: application/json' \
  -d '{"customer_id":"acme","country":"US","subject_ref":"user_123",
       "payload":{"document_type":"passport"}}'
# 201 {"session_id":"sess_...","status":"passed",
#      "attempts":[{"vendor":"...","verdict":"PASS","latency_ms":812}],...}

customer_id and subject_ref are required (400 otherwise). Only a SHA-256 hash of the subject reference is stored.

Check a session

curl -s -H "Authorization: Bearer <key>" \
  localhost:8080/v1/sessions/sess_...
# redacted public view — timelines pass through PII redaction

Service health

curl -s localhost:8080/v1/health
# {"service":"ok","vendors":{"...":{"healthy":true},...}}

Vendor webhooks

Async vendor results arrive at POST /v1/webhooks/vendor, HMAC-SHA256 verified with X-VerifyMesh-Signature over the raw body using VERIFYMESH_WEBHOOK_SECRET.

The billing rule

A billable event fires only on a definitive vendor PASS. FAIL, INCONCLUSIVE, and ERROR are never billed. One session bills at most once — failover retries are idempotent. Default rate $0.45/success (VERIFYMESH_RATE).