Voice Biometrics API
Voice-print enrollment and speaker verification Base path:/api/v1/verify/voice-biometrics
Endpoint count: 8
List enrolled voiceprints
GET /api/v1/verify/voice-biometrics/Get voiceprint enrollment status
GET /api/v1/verify/voice-biometrics/enroll/{id}{ id, status, voiceprint_id, confidence? }. Enrollment is synchronous, so a known id reports enrolled while an unknown or GDPR-erased id returns 404.
The voiceprint id to look up (the
vp_-prefixed id returned by POST /enroll). Returns 404 if the id is unknown or its voiceprint was erased.Voice biometrics overview
GET /api/v1/verify/voice-biometrics/overviewIssue a verification challenge nonce
POST /api/v1/verify/voice-biometrics/challengephrase aloud, records the audio, and submits both the audio AND the nonceId+phrase on the next POST /verify. The verify path one-shot-consumes the nonce and rejects on missing/expired/reused/mismatched values, defeating recorded-voice replay attacks. 5-minute TTL.
Enroll a voiceprint
POST /api/v1/verify/voice-biometrics/enrollcode RATE_LIMIT_EXCEEDED and details.reason voiceprint_tenant_cap_exceeded if the tenant has reached its voice_biometrics.tenant_enroll_cap quota.
Verify a caller by voice
POST /api/v1/verify/voice-biometrics/verifyUpdate voice biometrics tenant settings
PATCH /api/v1/verify/voice-biometrics/settingsThe cosine-similarity gate a verification must clear to pass, between
0.50 (most permissive) and 0.95 (most strict). Values outside this range are rejected.When
true, a verification that falls below the threshold signals downstream step-up flows to escalate to a second factor instead of returning a hard fail.Delete a voiceprint (GDPR erasure)
DELETE /api/v1/verify/voice-biometrics/{voiceprintId}This endpoint is not idempotent. A successful delete returns
{ "deleted": true }. Because the row is erased outright, a second DELETE of the same voiceprintId — including a client retry after a network timeout — returns 404 Not Found, the same as deleting an unknown id. Treat a 404 on retry as confirmation the voiceprint is already gone.—