VoiceDock Docs
ApiWebhooks

Call Status Update

Called when the call status changes. Use this to track call lifecycle. **Statuses:** - `in-progress`: Call connected, conversation started - `ended`: Call ended normally (customer hung up) - `ended-with-error`: Call ended due to an error ### Assistant Object The payload includes the full `assistant` object containing: - All resolved configuration (after any overrides from `assistant-request`) - Any custom `metadata` you passed in the `assistant-request` response The response body is ignored.

Called when the call status changes. Use this to track call lifecycle.

Statuses:

  • in-progress: Call connected, conversation started
  • ended: Call ended normally (customer hung up)
  • ended-with-error: Call ended due to an error

Assistant Object

The payload includes the full assistant object containing:

  • All resolved configuration (after any overrides from assistant-request)
  • Any custom metadata you passed in the assistant-request response

The response body is ignored.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

Example Requests

POST/status-update

POST/status-update

POST/status-update

Tool/Function Call Webhook

Called when the AI needs to execute a tool/function during the conversation. **Sync tools:** Must respond within **10 seconds** with the result. **Async tools:** Respond immediately with `200 OK` (fire-and-forget). Tools are defined in `llm_config.tools[]` with optional per-tool URL override. ### Assistant Object The payload includes the full `assistant` object containing: - All resolved configuration (after any overrides from `assistant-request`) - Any custom `metadata` you passed in the `assistant-request` response ### Response Formats Multiple response formats are supported: 1. **Object format** (recommended): ```json {"results": [{"tool_call_id": "tool_abc123", "result": {"name": "Jan"}}]} ``` 2. **Simple format**: ```json {"result": {"name": "Jan"}} ``` 3. **Direct format** (your data directly): ```json {"name": "Jan"} ``` 4. **Error format**: ```json {"error": "Contact not found"} ```

End of Call Report Webhook

Called after the call ends with a summary and optional structured analysis. This is the most commonly used webhook for integrating call data into CRM systems. **Payload includes:** - Call duration in seconds - AI-generated call summary - Full conversation transcript (messages array) - Structured analysis result (if `analysis_plan` was configured on the agent) - Full assistant configuration including any custom metadata - Recording URL (if recording is enabled) ### Assistant Object The payload includes the full `assistant` object containing: - All resolved configuration (after any overrides from `assistant-request`) - Any custom `metadata` you passed in the `assistant-request` response This is especially useful for correlating call reports with your CRM records using the metadata you passed during `assistant-request`. The response body is ignored.