Why async?
Running a voice recording through phoneme extraction, biomarker derivation, voiceprint matching, and deepfake detection is compute-intensive. The entire pipeline completes in under 2 seconds — but that’s 2 seconds of meaningful processing time, not a round-trip that should block a synchronous HTTP connection. The async pattern keeps your application fast and lets Voxmind handle load spikes without affecting your API response times.Setting up your webhook endpoint
Your webhook endpoint is a POST handler on your server that Voxmind will call with the result payload. You configure the callback URL in your organisation settings. Your endpoint must:- Accept POST requests with a JSON body
- Return HTTP 200 quickly (before any heavy processing on your end)
- Be accessible from Voxmind’s servers (i.e., not behind a VPN or firewall that blocks inbound traffic)
Matching results to requests
Every enrollment and verification call includes arequest_uuid that you provide in the request body. Voxmind includes this same UUID in the webhook payload. This is how you tie a webhook callback to the specific API call that triggered it.
Store the request_uuid in your database when you make an API call, then look it up when the webhook arrives. This is the most reliable way to correlate results with the user sessions or transaction flows that initiated them — don’t rely on timing or order of arrival.
Enrollment result payload
status is failed, the voiceprint_quality_score will be below threshold (typically below 0.5) and you should prompt the user to re-enroll with better audio quality.
Verification result payload
result field will be one of verified, rejected, or inconclusive. An inconclusive result typically indicates audio quality too low for a reliable determination — treat it the same as a rejection and prompt the user to try again.
Retry behaviour
If your webhook endpoint is unavailable or returns a non-200 status code, Voxmind will retry delivery with exponential backoff — at 30 seconds, 5 minutes, 30 minutes, and 2 hours. After 4 failed attempts the event is dropped. This means a brief server outage won’t cause you to permanently lose results, but extended downtime will. Design your infrastructure accordingly.Local development and testing
Testing webhooks in local development requires exposing your local server to the internet. ngrok is the standard tool for this — it creates a public HTTPS tunnel to your localhost. Runngrok http 3000 and use the generated URL as your callback URL in your Voxmind organisation settings during development.
Alternatively, many teams prefer to test webhook handling against a local Voxmind API mock using their preferred HTTP mocking tool, so they can iterate without needing a real webhook each time.
