Actions Overview
Answer URLs return actions that control the call. Supported actions are say, gather, send_digits, redirect, transfer, bridge, conference, hold, resume, mute, unmute, start_recording, stop_recording, start_stream, and stop_stream.
Each action is an object inside the actions array.
{
"actions": [
{
"say": {
"text": "Thanks for calling."
}
},
{
"transfer": {
"destination": "+15551230002"
}
}
]
}
Integration guidance
Place this action in a short answer_url response first, then combine it with other actions after you have confirmed the single-action behaviour. Always log the answer_url response your application returned for the call. If the caller experience differs from what you expected, compare the logged response with the webhook timeline for that call ID.
When this action is part of a larger IVR, keep each step explicit. For example, play a prompt before collecting input, redirect after collecting input, and transfer only after your application has selected the final destination. This makes the flow easier to test and easier to change later.
For production integrations, build a fallback path. A caller may hang up, enter no digits, reach a busy destination, or disconnect before the flow completes. Your webhook handler should update the call record with the last known step so support teams can understand what happened.
Integration checklist
Use this page as part of a complete MiniVoice integration. Save the request body, response body, call ID, and webhook events from each manual test. Those artifacts make it easier to compare expected behaviour with the next change you make.
Before you ship, test the happy path and one realistic failure path. Your application should handle missing optional data, final statuses, and duplicate webhook delivery without requiring manual cleanup.
Copy/Paste Examples
Real Request
Return this from your answer_url:
{
"actions": [
{
"say": {
"text": "Thanks for calling."
}
},
{
"transfer": {
"destination": "+15551230002"
}
}
]
}
Real Response
A valid answer_url response is the JSON action payload itself. MiniVoice accepts the response when it contains an actions array:
{
"actions": [
{
"say": {
"text": "Thanks for calling."
}
},
{
"transfer": {
"destination": "+15551230002"
}
}
]
}
Real Webhook Example
{
"event": "call.completed",
"created_at": "2026-05-29T12:10:00Z",
"call": {
"id": "call_123",
"customer_id": "cust_123",
"application_id": "app_123",
"status": "completed",
"direction": "inbound",
"from": "+15551230001",
"to": "+15551230002"
},
"variables": {},
"data": {}
}
Common Use Case
Use this action inside an answer_url response for a live call flow. Start with the JSON shown above, verify the caller experience, then combine it with adjacent actions such as say, gather, redirect, transfer, or recording controls.
Common Failure Case
{
"error": {
"code": "answer_url_error",
"message": "invalid action payload"
}
}
Invalid fields or malformed JSON cause MiniVoice to reject the answer_url payload. Log the exact response your server returned while testing.