In short
- Contract a number and activate it — that’s the line calls go out from (the
fromfield). - Choose who calls and who receives (
fromandto). When answered, usetype+payload— same as SMS and WhatsApp. - Track and control status via API or webhooks.
Before you start
Authentication:
Authorization: Bearer sk_live_... or x-api-key. Base URL: https://api.notifique.dev.
Destination numbers in international format, digits only, without + (e.g. 5511999887766). The API normalizes internally.
Request body structure (POST /v1/voice/calls)
The canonical contract follows the same pattern as other channels: to, type, payload. Extra fields go at the root of the JSON or inside options — not inside payload.
The API still accepts legacy root aliases (
speakText, playAudioUrl, standalone gather), but prefer type + payload — it’s the documented pattern and matches other channels.1. Make a call
1A — Via dashboard
- Voice → New call
- Which number you’re calling from and who will receive
- When answered: automatic message (text or audio) or live call (WebRTC)
- Optional: translate, schedule, record, or a webhook for this call only
- Dispatch (or schedule)
type: ivr in the API (IVR and flows).
1B — Via API v1
Scope:voice:call.
Complete example — speak text, record, correlate with CRM, webhook for this call only, and metadata:
messageIds to query and control each destination.
Other type and payload (same structure — only type and payload content change):
from accepts the workspace number id or E.164 — it must be active.
2. List and query
voice:read. With includeEvents=true, the response includes the timeline (dialed, answered, ended…).
3. Control a call in progress
POST /v1/voice/calls/:id/actions/{action} — scope voice:control. The call must be answered.
4. Download recording
voice:read. Webhook: voice.call.recording.ready.
5. Inbound calls
When someone calls your number, configure the line in Phone Numbers: forward, speak a message and hang up, or control via webhook.6. Global webhooks vs webhook for this call
Global — registervoice.call.* events in the workspace (Webhook events).
This call only — use options.webhook in the body (public HTTPS + optional secret). Events for this call go to that URL instead of the workspace global webhooks for this call.
7. Schedule a dial
Dashboard — Schedule chip on New call (paid plan, within the workspace day limit). The API v1 routePOST /v1/voice/calls does not accept schedule yet — voice scheduling via API is on the roadmap, aligned with other channels. In the dashboard, the body uses legacy fields (speakText at the root); in API v1, always use type: "speak" and payload.text.
8. Translate spoken text
At the root of the body, same as SMS and email:i18n (keys speakText and gatherPrompt):

