Voice Webhook Payload
Voice webhooks are sent when calls are initiated, completed, or fail.
Example payload
1 { 2 "event": { 3 "id": "evt_voice_abc123", 4 "channel": "voice", 5 "timestamp": 1706640000.0, 6 "data": { 7 "timestamp": 1706640000.0, 8 "direction": "inbound", 9 "platform": "voice", 10 "call_id": "call_xyz789", 11 "vapi_status": "completed", 12 "duration": 245, 13 "cost": 0.15, 14 "recording_url": "https://storage.example.com/recordings/call_xyz789.mp3", 15 "transcription": "Agent: Hello, thanks for calling...\nLead: Hi, I'm interested in...", 16 "summary": "Lead inquired about pricing for premium plan. Scheduled demo for Friday.", 17 "tools_called": ["book_appointment", "check_availability"], 18 "analysis_result": { 19 "sentiment": "positive", 20 "intent": "purchase" 21 }, 22 "appointments": [ 23 { 24 "datetime": "2024-02-01T10:00:00Z", 25 "type": "demo", 26 "confirmed": true 27 } 28 ] 29 } 30 }, 31 "lead_id": "lead_123", 32 "lead_contact": { 33 "number": "+15551234567", 34 "email": "john@example.com", 35 "name": "John Doe" 36 }, 37 "business_id": "biz_456", 38 "lead_created": false 39 }
Field reference
Core fields
| Field | Type | Required | Description |
|---|---|---|---|
timestamp | float | Yes | Unix epoch timestamp |
direction | string | Yes | inbound or outbound |
platform | string | Yes | Always voice |
call_id | string | Yes | Unique call identifier |
vapi_status | string | Yes | Call status (see values below) |
vapi_status values
| Value | Description |
|---|---|
initiated | Call started, ringing |
completed | Call ended successfully |
failed | Call failed to connect |
busy | Recipient line busy |
no-answer | No answer after ringing |
Optional fields
| Field | Type | Description |
|---|---|---|
duration | integer | Call duration in seconds |
cost | float | Call cost in USD |
recording_url | string | URL to audio recording |
transcription | string | Full call transcript |
summary | string | AI-generated call summary |
tools_called | array | List of tool names executed during call |
tool_calls | array | Raw tool call data with arguments and results |
analysis_result | object | AI analysis output (sentiment, intent, etc.) |
appointments | array | Extracted appointment data |
appointments array
| Field | Type | Description |
|---|---|---|
datetime | string | ISO 8601 datetime |
type | string | Appointment type |
confirmed | boolean | Whether confirmed |
tool_calls array
| Field | Type | Description |
|---|---|---|
name | string | Tool name |
arguments | object | Input arguments |
result | object | Tool execution result |
Direction values
| Value | Description |
|---|---|
inbound | Lead called in |
outbound | Agent called lead |