Skip to main content
Voice is telephony in your system: call from a workspace number, speak text (TTS), play audio, collect digits (DTMF), and hang up or transfer, without building carrier and SIP trunk infrastructure from scratch.

What is Voice on Notifique?

It’s the channel to originate and control phone calls using numbers contracted in the workspace. Great for order confirmation, simple IVR (press 1, 2…), dialers, and inbound handling with events on your URL. You can:
  • Originate outbound calls with TTS, audio, or DTMF collection
  • Control the active session in real time (speak, gather, transfer, hangup, etc.)
  • Record call segments and download the file later
  • Receive inbound calls with forwarding, TTS, or webhook control
  • Track each step via API or webhooks
Think of a lean phone system: dials, speaks, listens for keys, and notifies your backend at every step.
Unlike WhatsApp, voice does not use a channel instance. You need a contracted, active number in the workspace, balance or credits (per-minute billing), and an API Key with permission to dial.

When to use it?

Without a contracted, active number, the channel cannot dial.

How it works in practice

  1. Contract a number and keep it active — calls go out from that line (Phone Numbers)
  2. Choose who calls and who receives (from and to in the API)
  3. When answered, define what happens: spoken text (TTS), recorded audio, or keypad menu
  4. The platform dials, connects, and updates status; webhooks notify each step
  5. Control the call in progress via API (speak more, transfer, hang up)
  6. When someone calls you, configure forwarding, automatic message, or webhook control on the number
Each API Key belongs to one workspace. On v1 do not send x-workspace-id. Use clientState to correlate with your CRM or queue.

Call lifecycle

After originate, the call moves through QUEUED, INITIATED, RINGING, ANSWERED, COMPLETED, or FAILED. Webhooks like voice.call.answered and voice.call.completed keep your backend in sync without polling.

What you can do

  • Originate to 1 to 500 destinations per call (to as array)
  • List and query history (voice:read)
  • Run actions on active calls (voice:control)
  • Download recordings when voice.call.recording.ready arrives
  • Schedule future dials (dashboard and same plan rules as SMS/Push)
  • Translate the spoken script (speakText and gather prompt) per contact language
  • Dedicated webhook per call (options.webhook) in addition to workspace-wide webhooks
  • Detect voicemail with amdMode (disabled, detect, premium)
  • Look up pricing per destination country via Pricing lookup or dashboard
  • React to number lifecycle (phone_number.activated, phone_number.suspended, etc.)
Field and error details: API reference on the Voice tab. Billing: Billing.

Extra options (like other channels)

Aligned with SMS, Push, and Email:
  • Translate spoken text — the system speaks in Portuguese, English, or another language based on the contact in CRM (Localization and i18n)
  • Schedule a dial — call later, at a future date and time (paid plan, same as SMS)
  • Webhook for this call only — events for a specific call go to an extra URL
  • Metadata — your campaign or CRM tags stored with the call
Webhook guide: Webhook events.
Automatic translation applies to spoken text and keypad menus. Audio played from URL and published IVR use the content you sent — no automatic translation on that path.

After your first call

  • Track via webhooks (voice.call.* and phone_number.*)
  • Build IVR with gather + voice.call.dtmf / voice.call.gather.ended
  • Test inbound with WEBHOOK_CONTROL on the number

Next steps