Voiceprint
Collect voice authenticity and speaker identity evidence independently from credential authentication.
When to use it
Add spoof detection and speaker verification to your voice call, IVR, or risk pipeline without replacing symbolic credentials.
Supported Operations & Data Contracts
Call this module with a key scoped to 'voiceprint'. Provide the operation name and matching input dictionary.
detect · Voice Authenticity & Spoof DetectionPOST /api/v1/modules/voiceprint
Analyzes audio to detect synthetic speech, deepfakes, replays, and voice cloning.
Input Parameters
| Field | Type | Requirement | Description |
|---|---|---|---|
audio | string (base64) | Required | Mono PCM16 WAV audio at 8kHz or 16kHz under 4 MiB. |
consent | boolean (true) | Required | Explicit end-user biometric processing consent confirmation. |
Output Fields
| Field | Type | Description |
|---|---|---|
status | 'PASS' | 'FAIL' | 'UNCERTAIN' | Voice authenticity assessment result. |
score | number (0-100) | Confidence score that the audio is genuine live human speech. |
reference | string | Audit trace reference for this detection check. |
Example Request Payload
{
"operation": "detect",
"input": {
"audio": "BASE64_PCM16_WAV_AUDIO",
"consent": true
}
}Example Response
{
"module": "voiceprint",
"output": {
"status": "PASS",
"score": 96,
"reference": "det_982bf7a1"
}
}verify · 1:1 Speaker VerificationPOST /api/v1/modules/voiceprint
Compares caller voice audio against a previously enrolled speaker alias.
Input Parameters
| Field | Type | Requirement | Description |
|---|---|---|---|
audio | string (base64) | Required | Mono PCM16 WAV audio sample under 4 MiB. |
consent | boolean (true) | Required | User biometric consent confirmation. |
speakerId | string | Required | Owner-scoped speaker alias created during enrolment. |
Output Fields
| Field | Type | Description |
|---|---|---|
status | 'MATCH' | 'NO_MATCH' | 'UNCERTAIN' | Biometric identity verification outcome. |
score | number (0-100) | Similarity score comparing audio to speaker voice profile. |
reference | string | Audit trace reference for verification attempt. |
Example Request Payload
{
"operation": "verify",
"input": {
"audio": "BASE64_PCM16_WAV_AUDIO",
"consent": true,
"speakerId": "cust_user_42"
}
}Example Response
{
"module": "voiceprint",
"output": {
"status": "MATCH",
"score": 91,
"reference": "ver_331ec4f2"
}
}enrol · Speaker Voice EnrolmentPOST /api/v1/modules/voiceprint
Registers a new speaker profile with 15–60 seconds of reference audio under your account.
Input Parameters
| Field | Type | Requirement | Description |
|---|---|---|---|
audio | string (base64) | Required | 15 to 60 seconds of clean mono PCM16 WAV reference speech. |
consent | boolean (true) | Required | User biometric consent confirmation. |
speakerId | string | Required | Unique speaker alias (alphanumeric, hyphens, underscores; max 64 chars). |
name | string | Optional | Optional display label for this speaker. |
Output Fields
| Field | Type | Description |
|---|---|---|
speakerId | string | Registered speaker alias bound to your workspace. |
status | string ('enrolled') | Enrolment success status indicator. |
audioHash | string | SHA-256 digest of raw audio sample stored for audit reconciliation. |
Example Request Payload
{
"operation": "enrol",
"input": {
"audio": "BASE64_WAV_20S",
"consent": true,
"speakerId": "cust_user_42",
"name": "Alice Sharma"
}
}Example Response
{
"module": "voiceprint",
"output": {
"speakerId": "cust_user_42",
"status": "enrolled",
"audioHash": "f3c8a1b9..."
}
}speaker_delete · Delete Speaker ProfilePOST /api/v1/modules/voiceprint
Permanently removes a speaker voiceprint profile and registers an irreversible tombstone.
Input Parameters
| Field | Type | Requirement | Description |
|---|---|---|---|
speakerId | string | Required | Speaker alias to delete. |
Output Fields
| Field | Type | Description |
|---|---|---|
speakerId | string | Deleted speaker alias. |
deleted | boolean (true) | Deletion confirmation flag. |
Example Request Payload
{
"operation": "speaker_delete",
"input": {
"speakerId": "cust_user_42"
}
}Example Response
{
"module": "voiceprint",
"output": {
"speakerId": "cust_user_42",
"deleted": true
}
}credits · Inspect Biometric Quota & AttemptsPOST /api/v1/modules/voiceprint
Reports provider availability and your account's daily attempts for each operation.
Output Fields
| Field | Type | Description |
|---|---|---|
providerAvailable | boolean | Whether upstream biometric provider has active capacity. |
usage | array | List of operation counts used today under your key. |
window | string ('UTC day') | Daily counter quota window. |
Example Request Payload
{
"operation": "credits",
"input": {}
}Example Response
{
"module": "voiceprint",
"output": {
"providerAvailable": true,
"usage": [
{
"operation": "detect",
"attempts": 14
},
{
"operation": "verify",
"attempts": 8
}
],
"window": "UTC day"
}
}Configuration in Graph Builder
When adding Voiceprint into a visual component or graph workflow, configure its node runtime settings in the builder inspector:
Direct API Code Examples
Invoke this module directly from your backend services without passing through the visual builder:
const response = await fetch("https://api.sherlock.dev/api/v1/modules/voiceprint", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.SHERLOCK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
operation: "detect",
input: {
audio: fs.readFileSync("sample.wav").toString("base64"),
consent: true,
}
}),
});
const { output } = await response.json();
console.log("Authenticity:", output.status, "Confidence:", output.score);curl -X POST "$SHERLOCK_BASE_URL/api/v1/modules/voiceprint" \
-H "Authorization: Bearer $SHERLOCK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"detect","input":{"audio":"$BASE64_AUDIO","consent":true}}'