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.
POST /api/v1/enroll
x-api-key: aura_live_...
{
"endUserId": "user_123",
"frame": "data:image/jpeg;base64,/9j/..."
}
→ { "status": "success" }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"
}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 })
});import requests
r = requests.post(base + '/api/v1/enroll',
headers={'x-api-key': KEY},
json={'endUserId': uid, 'frame': data_url})
print(r.json())$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]));
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 demoOur billing provider notifies POST /api/billing/ipn on payment events. A confirmed payment activates the subscription for 12 months automatically.
| Code | Meaning |
|---|---|
| 401 | Missing/invalid key |
| 403 | Revoked key / suspended |
| 404 | Profile not enrolled |
Every verification returns a confidence score plus a verified decision. Apply your own stricter cutoff on top if your risk policy requires it.