Veridexa is currently free for everyone — Fraud Detection, Biometrics, and Developer APIs.
Developer Showcase · Integrate in under 5 minutes

Veridexa Developer
Showcase.

Copy-ready quickstart, request/response samples, and idiomatic integrations in nine languages. Every example calls the current Veridexa Biometric API — free plan, no card required.

Quick Start

From zero to a working request in four steps.

  1. 1

    Create Developer Account

    Sign up with email or Google — no credit card, no billing profile.

    Open sign-up
  2. 2

    Generate Free API Key

    Create a vxd_test_ or vxd_live_ key from the dashboard. Rotate anytime.

    Open dashboard
  3. 3

    Send Your First Request

    POST /api/v1/biometrics/enroll with a base64 face image and your bearer key.

    Read the reference
  4. 4

    Receive the Response

    Get an opaque template + quality metrics as JSON. Free plan: 100 req/mo, 10 req/min.

    Try the playground
Ready-to-Use Examples

Same request, nine runtimes.

Every snippet targets the current Veridexa API and uses Authorization: Bearer YOUR_API_KEY.

cURL · GET /api/v1/biometrics/health · bash
curl https://veridexa.io/api/v1/biometrics/health
cURL · POST /api/v1/biometrics/enroll · bash
curl -X POST https://veridexa.io/api/v1/biometrics/enroll \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "schemaVersion": "biometric-core.api/v1",
    "modality": "face",
    "sample": { "imageBase64": "<base64 JPEG/PNG>" }
  }'
API Examples

Every live endpoint, with real request & response.

Only endpoints backed by a running engine are listed. Provider-ready modalities (fingerprint, signature, iris, voice) are documented on their own pages under /biometrics.

GET/api/v1/biometrics/healthPublic

Health

Service discovery. Returns version, schema id, endpoint list, and free-plan limits. No auth required.

Success response · 200
{
  "ok": true,
  "service": "veridexa-developer-api",
  "version": "v1",
  "schema": "biometric-core.api/v1",
  "endpoints": [
    "GET  /api/v1/biometrics/health",
    "POST /api/v1/biometrics/enroll",
    "POST /api/v1/biometrics/compare",
    "POST /api/v1/biometrics/liveness",
    "POST /api/v1/biometrics/emrtd",
    "GET  /api/v1/biometrics/devices"
  ],
  "plans": {
    "developer_free": { "monthlyLimit": 100, "minuteLimit": 10 }
  }
}
Error response
{
  "ok": false,
  "error": { "code": "internal_error", "reason": "unexpected" },
  "requestId": "0f8c…"
}
cURL
GET /api/v1/biometrics/health · bash
curl https://veridexa.io/api/v1/biometrics/health
POST/api/v1/biometrics/enrollBearer auth

Face Enroll

Enroll a face sample. Returns an opaque template (base64 vector) and quality metrics.

Request body
{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "sample": { "imageBase64": "<base64 JPEG/PNG>" }
}
Success response · 200
{
  "ok": true,
  "result": {
    "template": {
      "modality": "face",
      "version": 1,
      "vector": "<base64 embedding>"
    },
    "quality": {
      "score": 0.87,
      "checks": { "sharpness": true, "exposure": true, "pose": true }
    }
  },
  "requestId": "0f8c…"
}
Error response
{
  "ok": false,
  "error": {
    "code": "invalid_payload",
    "reason": "sample.imageBase64 is required"
  },
  "requestId": "0f8c…"
}
cURL
POST /api/v1/biometrics/enroll · bash
curl -X POST https://veridexa.io/api/v1/biometrics/enroll \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "sample": { "imageBase64": "<base64 JPEG/PNG>" }
}'
POST/api/v1/biometrics/compareBearer auth

Face Compare

1:1 comparison of two face templates. Returns similarity score and pass/fail against the modality threshold.

Request body
{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "reference": { "modality": "face", "version": 1, "vector": "<base64>" },
  "probe":     { "modality": "face", "version": 1, "vector": "<base64>" }
}
Success response · 200
{
  "ok": true,
  "result": { "score": 0.83, "passed": true, "threshold": 0.62 },
  "requestId": "0f8c…"
}
Error response
{
  "ok": false,
  "error": {
    "code": "invalid_payload",
    "reason": "reference and probe modalities must match"
  },
  "requestId": "0f8c…"
}
cURL
POST /api/v1/biometrics/compare · bash
curl -X POST https://veridexa.io/api/v1/biometrics/compare \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "reference": { "modality": "face", "version": 1, "vector": "<base64>" },
  "probe":     { "modality": "face", "version": 1, "vector": "<base64>" }
}'
POST/api/v1/biometrics/livenessBearer auth

Liveness

Not enabled. This endpoint returns 503 liveness_not_available until a certified provider is registered.

Request body
{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "frames": [
    { "imageBase64": "<frame 1>" },
    { "imageBase64": "<frame 2>" },
    { "imageBase64": "<frame 3>" }
  ]
}
Success response · 200
{
  "ok": true,
  "result": {
    "state": "PASSED",
    "blink": true,
    "headTurn": true
  },
  "requestId": "0f8c…"
}
Error response
{
  "ok": false,
  "error": {
    "code": "invalid_payload",
    "reason": "frames must contain at least 2 items"
  },
  "requestId": "0f8c…"
}
cURL
POST /api/v1/biometrics/liveness · bash
curl -X POST https://veridexa.io/api/v1/biometrics/liveness \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "schemaVersion": "biometric-core.api/v1",
  "modality": "face",
  "frames": [
    { "imageBase64": "<frame 1>" },
    { "imageBase64": "<frame 2>" },
    { "imageBase64": "<frame 3>" }
  ]
}'
POST/api/v1/biometrics/emrtdBearer auth

eMRTD Ingest

ePassport chip ingest. Runs Passive Authentication over the SOD, parses DG1 MRZ, returns per-DG metadata.

Request body
{
  "sessionId": "6f0e…-uuid",
  "protocol": "BAC",
  "dg1": "<base64>",
  "dg2": "<base64>",
  "sod": "<base64>"
}
Success response · 200
{
  "ok": true,
  "result": {
    "sessionId": "6f0e…-uuid",
    "protocol": "BAC",
    "passiveAuthentication": {
      "sodParsed": true,
      "dgHashesVerified": true,
      "signatureVerified": true
    },
    "mrz": {
      "documentNumber": "X1234567",
      "surname": "DOE",
      "givenNames": "JANE",
      "nationality": "USA",
      "dateOfBirth": "900101",
      "dateOfExpiry": "300101"
    },
    "dgMetadata": {
      "dg1": { "tag": "61", "hashHex": "…" },
      "dg2": { "tag": "75", "hashHex": "…" }
    }
  },
  "requestId": "0f8c…"
}
Error response
{
  "ok": false,
  "error": {
    "code": "invalid_payload",
    "reason": "sod is required for passive authentication"
  },
  "requestId": "0f8c…"
}
cURL
POST /api/v1/biometrics/emrtd · bash
curl -X POST https://veridexa.io/api/v1/biometrics/emrtd \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "sessionId": "6f0e…-uuid",
  "protocol": "BAC",
  "dg1": "<base64>",
  "dg2": "<base64>",
  "sod": "<base64>"
}'
GET/api/v1/biometrics/devicesBearer auth

Devices

List registered biometric device adapters exposed by the gateway.

Success response · 200
{
  "ok": true,
  "result": {
    "devices": [
      { "id": "face-webcam-mock",   "modality": "face",        "kind": "mock" },
      { "id": "fp-mock",            "modality": "fingerprint", "kind": "mock" },
      { "id": "sig-mock",           "modality": "signature",   "kind": "mock" }
    ]
  },
  "requestId": "0f8c…"
}
Error response
{
  "ok": false,
  "error": { "code": "unauthorized", "reason": "no_bearer" },
  "requestId": "0f8c…"
}
cURL
GET /api/v1/biometrics/devices · bash
curl https://veridexa.io/api/v1/biometrics/devices \
  -H "Authorization: Bearer YOUR_API_KEY"

Veridexa Biometric Client

Client Library (Reference)

Veridexa does not currently distribute a versioned SDK on npm, PyPI, or pub.dev. What ships today is an in-repo TypeScript reference wrapper at src/lib/veridexa-biometric-sdk/. It is a thin fetch-based client you can copy into your project. For any other runtime, call the REST endpoints directly using the examples above — every request is plain JSON with a bearer header, so no SDK is required.

Ready to integrate? Free access — no credit card required.

100 requests / month, 10 requests / minute. Rotate keys anytime.