How it works
Voxfra currently accepts inbound webhooks from Vapi on a per-client basis. Each client in your organization gets a unique Vapi webhook URL. When a call ends, Vapi posts the call report to that URL and Voxfra handles validation, normalization, and storage. For the provider-specific reference, see Vapi.
Example:
Authentication
Each webhook URL uses a unique slug as its authentication mechanism. The slug is:- Unique across the entire platform
- Scoped to exactly one organization + client + provider combination
- Revocable from the admin console at any time
Processing flow
When a webhook arrives:- Slug resolved — maps to the correct organization and client
- Schema validated — provider-specific payload checked; returns
400on mismatch - Idempotency checked — duplicate call IDs within a 24-hour window are accepted but not reprocessed
- Normalized and stored — call data is extracted, normalized into a unified format, and written to Voxfra
- Available — the call appears in the admin console and via the Management API
Limits
Managing webhook URLs
Webhook endpoints are managed in the Voxfra admin console under Settings → Webhooks → Inbound for each client. You can:- Create a new URL for a provider
- Copy the URL to paste into your provider’s dashboard
- View
last_used_atandrequest_countper endpoint - Toggle an endpoint inactive without revoking it
- Revoke and replace a URL if it’s compromised
- Configure an IP allowlist or HMAC secret per endpoint
Responses
A successful ingestion returns:requestId for tracing: