En resumen
- Contrata un número y actívalo — es la línea desde la que sale la llamada (campo
from). - Elige quién llama y quién recibe (
fromyto). Al contestar, usatype+payload— igual que SMS y WhatsApp. - Sigue y controla el estado por API o webhooks.
Antes de empezar
Autenticación:
Authorization: Bearer sk_live_... o x-api-key. URL base: https://api.notifique.dev.
Números de destino en formato internacional, solo dígitos, sin + (ej.: 5511999887766). La API normaliza internamente.
Estructura del body (POST /v1/voice/calls)
El contrato canónico sigue el mismo patrón que los otros canales: to, type, payload. Los campos extra van en la raíz del JSON o en options — no dentro de payload.
La API aún acepta alias legados en la raíz (
speakText, playAudioUrl, gather suelto), pero prefiere type + payload — es el patrón documentado e igual a los otros canales.1. Hacer una llamada
1A — Por el panel
- Voz → Nueva llamada
- Desde qué número vas a llamar y quién va a recibir
- Al contestar: mensaje automático (texto o audio) o llamada en vivo (WebRTC)
- Opcional: traducir, programar, grabar o webhook solo de esta llamada
- Dispara (o programa)
type: ivr en la API (IVR y flujos).
1B — Por la API v1
Ámbito:voice:call.
Ejemplo completo — hablar texto, grabar, correlacionar con CRM, webhook solo de esta llamada y metadatos:
messageIds para consultar y controlar cada destino.
Otros type y payload (misma estructura — solo cambian type y el contenido de payload):
El
from acepta el id del número en el workspace o el E.164 — debe estar activo.
2. Listar y consultar
voice:read. Con includeEvents=true, la respuesta trae la línea de tiempo (marcó, contestó, colgó…).
3. Controlar llamada en curso
POST /v1/voice/calls/:id/actions/{action} — ámbito voice:control. La llamada debe estar contestada.
4. Descargar grabación
voice:read. Webhook: voice.call.recording.ready.
5. Llamadas recibidas (inbound)
Cuando alguien llama a tu número, configura la línea en Números de teléfono: reenviar, hablar mensaje y colgar, o controlar vía webhook.6. Webhooks globales vs webhook de esta llamada
Globales — registra en el workspace los eventosvoice.call.* (Eventos de webhooks).
Solo de esta llamada — usa options.webhook en el body (HTTPS pública + secret opcional). Los eventos de esta llamada van a esa URL en lugar de los webhooks globales del workspace para esta llamada.
7. Programar marcado
Panel — chip Programar en Nueva llamada (plan de pago, dentro del límite de días del workspace). La ruta API v1POST /v1/voice/calls aún no acepta schedule — el agendamiento por API de voz está en el roadmap, alineado a los otros canales. En el panel, el body usa campos legados (speakText en la raíz); en la API v1, usa siempre type: "speak" y payload.text.
8. Traducir el texto hablado
En la raíz del body, igual que SMS y correo:i18n (claves speakText y gatherPrompt):

