Call Control

Control active calls in real time. Hold, resume, transfer, and inject DTMF tones. All endpoints require the call to be in active (in_progress) status.

Hold a Call

Pause media on both sides of an active call.

$curl -X POST "https://api.voicebip.com/v1/calls/call_abc123/hold" \
> -H "Authorization: Bearer pk_live_your_key"

Response:

1{ "status": "held" }

Resume a Call

Resume a previously held call.

$curl -X POST "https://api.voicebip.com/v1/calls/call_abc123/resume" \
> -H "Authorization: Bearer pk_live_your_key"

Response:

1{ "status": "resumed" }

Transfer a Call

Transfer an active call to another phone number. The destination must be in E.164 format.

$curl -X POST "https://api.voicebip.com/v1/calls/call_abc123/transfer" \
> -H "Authorization: Bearer pk_live_your_key" \
> -H "Content-Type: application/json" \
> -d '{
> "destination": "+2348031234567"
> }'

Response:

1{ "status": "transferring" }

Send DTMF Tones

Inject DTMF digits into an active call. Useful for navigating IVR menus or entering PINs programmatically.

$curl -X POST "https://api.voicebip.com/v1/calls/call_abc123/dtmf" \
> -H "Authorization: Bearer pk_live_your_key" \
> -H "Content-Type: application/json" \
> -d '{
> "digits": "1234#"
> }'

Response:

1{ "status": "sent" }

Error Handling

  • 400 Bad Requestdestination (transfer) or digits (DTMF) is missing or empty.
  • 404 Not Found — The call_id does not exist, belongs to a different workspace, or the call has already ended and been removed from the active session map.
  • 500 Internal Server Error — The voice controller is not configured or unreachable, or the call is in an unexpected state (e.g., trying to resume a call that is not currently held).

All call control endpoints require the call to be active. Attempting to control a completed call returns 404.