Voice Calls
Voicebip connects your AI agent to real phone calls via Nigerian MNO infrastructure. Your agent can receive inbound calls and make outbound calls on provisioned +234 numbers.
Making an Outbound Call
Response:
Receiving Inbound Calls
When a call arrives at a provisioned +234 number, Voicebip:
- Routes the call to the agent assigned to that number (DID routing)
- Plays a greeting via TTS
- Optionally plays a recording consent prompt (FR-044)
- Starts real-time speech-to-text transcription
- Feeds the transcript to the AI for a response
- Synthesizes the response via TTS and plays it back
The entire conversation loop runs automatically. You receive events via webhooks.
Voice Pipeline
Supported AI Providers
Set ai_provider on your agent to choose the hosted model:
List Calls
Retrieve call history for your workspace, optionally filtered by agent:
Get a Call
End a Call
Terminate an active call programmatically:
Returns 204 No Content with an empty body.
Real-Time Call Monitoring
WebSocket Stream
Connect to the WebSocket endpoint to receive live call events:
SSE Transcript Stream
An alternative to WebSocket for environments where persistent bidirectional
connections are unavailable or blocked. Uses the browser-native EventSource
API (Server-Sent Events): the server pushes frames as the call progresses and
the connection closes when the call ends or the client disconnects.
When to use SSE instead of WebSocket:
- Server-side rendering — SSE works with
fetchand readable streams without browser WebSocket support. - Proxies or corporate firewalls that block WebSocket upgrades.
- Streaming from a
curlcommand for quick debugging. - The call transcript is read-only and you don’t need to send messages back.
Authentication: pass your API key in the ?token= query parameter or in
the Authorization: Bearer header. The ?token= form exists because the
browser EventSource constructor does not support custom headers.
Event format: each frame is a standard SSE data: line followed by a
blank line. Normal transcript frames carry no named event: type — they reach
onmessage. Only terminal error frames use event: error.
Constraints:
- Read-only — no messages can be sent back through an SSE connection.
- Returns
404 NOT_FOUNDif thecall_idis unknown or belongs to a different workspace. Call existence is never leaked across tenants. - The stream closes when the call ends or the client disconnects. The
EventSourceAPI will attempt to reconnect by default; calles.close()once you receive acall.completedwebhook event if you want to suppress reconnects.
Webhook Events
Recording Consent (FR-044)
Call recording is managed through the consent flow. When a call connects, the platform plays a consent prompt. Recording starts automatically after consent is granted.
“This call may be recorded for quality purposes. Press 1 to continue, or press 2 to opt out of recording.”
- DTMF “1” — recording starts
- DTMF “2” — call continues without recording
- No response within 12 seconds — defaults to no recording
Latency Targets
AI Fallback
If the AI provider is unavailable (rate limit, timeout, error), Voicebip:
- Retries once with a 2-second timeout
- If retry fails, plays a fallback message: “I’m having trouble right now. Please try again.”
- After 5 consecutive failures, the circuit breaker opens for 30 seconds
This ensures the caller never hears silence.