Developer docs · v1

Integrate in 10 minutes

Base URL: https://auraid.pro (or http://localhost:3000 locally). Auth via x-api-key header. All bodies are JSON. Frames are JPEG base64 data-URLs from the liveness SDK.

1 · Enroll a user

POST /api/v1/enroll
x-api-key: aura_live_...

{
  "endUserId": "user_123",
  "frame": "data:image/jpeg;base64,/9j/..."
}

→ { "status": "success" }

2 · Verify with liveness

POST /api/v1/verify-pipeline
x-api-key: aura_live_...

{
  "endUserId": "user_123",
  "frames": ["data:...", "data:...", "data:..."],
  "expected_challenges": ["NORMAL","LOOK_LEFT","BLINK"]
}

→ {
  "verified": true,
  "liveness_passed": true,
  "confidence": 0.913,
  "reason": "Success"
}

Node.js

const res = await fetch(base + '/api/v1/verify-pipeline', {
  method: 'POST',
  headers: { 'x-api-key': process.env.AURAID_KEY,
             'Content-Type': 'application/json' },
  body: JSON.stringify({ endUserId, frames })
});

Python

import requests
r = requests.post(base + '/api/v1/enroll',
  headers={'x-api-key': KEY},
  json={'endUserId': uid, 'frame': data_url})
print(r.json())

PHP

$ch = curl_init($base.'/api/v1/verify-pipeline');
curl_setopt($ch, CURLOPT_HTTPHEADER,
  ["x-api-key: $key", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
  'endUserId' => $uid, 'frames' => $frames]));

Liveness SDK (browser)

Use /demo.html as reference. Guide the user through face-forward, head-turn and blink prompts, capture one frame per prompt, then POST the frames.

Open live demo

Billing webhooks

Our billing provider notifies POST /api/billing/ipn on payment events. A confirmed payment activates the subscription for 12 months automatically.

Plan: $15/mo billed yearly = $180
POST /api/billing/subscribe → checkout URL

Errors

CodeMeaning
401Missing/invalid key
403Revoked key / suspended
404Profile not enrolled

Confidence scores

Every verification returns a confidence score plus a verified decision. Apply your own stricter cutoff on top if your risk policy requires it.