Skip to main content

Overview

Vapi is the current production webhook integration supported by Voxfra. Use Voxfra when you want Vapi call events to land inside a multi-tenant control layer instead of flowing directly into ad hoc downstream automations.

Endpoint format

POST https://api.voxfra.com/webhook/vapi/{slug}
  • vapi is the active provider segment.
  • {slug} maps the request to the correct organization and client.

Set the server URL at the assistant level

We recommend configuring the Voxfra webhook URL at the assistant level in Vapi. That gives you a predictable boundary for the assistant that should write into a specific Voxfra client endpoint.

Send end-of-call reports

Voxfra expects the end-of-call-report message type as the primary event for ingestion.

Keep the payload rich

If available in your Vapi configuration, keep these fields enabled:
  • transcript
  • recording URL
  • analysis summary
  • sentiment
  • intent
These are not all required, but they make the resulting call record more useful for downstream workflows and analytics.

Minimum event shape

{
  "call": {
    "id": "call_abc123",
    "status": "completed",
    "startedAt": "2026-04-14T10:00:00Z",
    "endedAt": "2026-04-14T10:05:30Z"
  },
  "customer": {
    "number": "+15551234567"
  },
  "transcript": "Hello, how can I help you today?",
  "recordingUrl": "https://recordings.vapi.ai/call_abc123.mp3"
}

What Voxfra adds around Vapi

Vapi gives you the conversation endpoint. Voxfra gives you the operational boundary around that endpoint. That usually means:
  • stable tenant or client routing
  • repeatable onboarding per client or location
  • cleaner downstream workflow context
  • clearer tracing and governance around ingestion

Testing delivery

curl -X POST \
  https://api.voxfra.com/webhook/vapi/YOUR_SLUG \
  -H "Content-Type: application/json" \
  -d '{
    "call": {
      "id": "test_call_001",
      "status": "completed",
      "startedAt": "2026-04-14T10:00:00Z",
      "endedAt": "2026-04-14T10:05:30Z"
    },
    "customer": { "number": "+15551234567" },
    "transcript": "Test call"
  }'

Troubleshooting

404 responses

The slug is invalid or inactive. Regenerate the endpoint in Voxfra and update the Vapi server URL.

Missing call record fields

Check whether Vapi is sending the relevant fields in the end-of-call report, especially transcript and analysis properties.

Duplicate actions downstream

Confirm your downstream workflow respects the idempotency behavior documented in the webhook integration overview.