Llamadas De Voz

Convierte una plantilla o un mensaje permitido en una llamada de voz TTS (texto a voz). Útil como canal alterno cuando el SMS no llega o el usuario prefiere una llamada.

Los parámetros clave: template selecciona el guion, company inserta el nombre de tu organización y code es el código que se lee por voz (se dicta carácter por carácter). El catálogo de guiones disponibles está en Plantillas de mensaje.

Enviar Llamada de Voz
POST /voice/send

Enviar Llamada de Voz

POST https://api.smsmasivos.com.mx/voice/send
Realiza una llamada telefónica con mensaje de voz usando plantillas TTS (Text-to-Speech).

Convierte una plantilla en una llamada de voz TTS. template selecciona el guion, company inserta el nombre de tu organización y code es el valor que se lee por voz: se dicta carácter por carácter, acepta letras y números, y debe tener entre 4 y 11 caracteres.

La plantilla k es la personalizada: requiere voice_message (máximo 160 caracteres; los caracteres fuera de letras, números, comas, puntos y espacios se eliminan automáticamente).

El catálogo de guiones de voz está en Plantillas de mensaje.

Parameters
numbersstringrequerido
Números de teléfono de los destinatarios, separados por coma. Ejemplo: 4771234567,4770987654
country_codestringrequerido
Código de país. Por estandarización, siempre se debe enviar 52, que es el código correspondiente a México.
templateenumrequerido
Letra de la plantilla de voz (de la a a la k). Cada letra es un guion pregrabado que se reproduce durante la llamada; las variables company y code se rellenan solas. La plantilla k permite un mensaje propio con el parámetro voice_message. Consulta el guion de cada plantilla en Plantillas de mensaje.abcdefghijk
sandboxenumopcional
Modo de pruebas: 1 sandbox (no descuenta créditos), 0 producción. Por defecto 0.01
companystringopcional
Nombre de la compañía para personalizar el mensaje de voz.
codestringopcional
Código de verificación a comunicar en la llamada, de 4 a 11 caracteres. Acepta letras y números; se dicta carácter por carácter durante la llamada. No aplica con la plantilla k.
voice_messagestringopcional
Mensaje de voz personalizado (máximo 160 caracteres). Solo compatible con la plantilla k, donde es obligatorio. Los caracteres fuera de letras, números, comas, puntos y espacios se eliminan automáticamente.

Además de los errores globales de autenticación (auth_*, ver Errores y límites), este endpoint puede responder:

Códigos de error

CódigoCuándo ocurreQué hacer
error_02Cualquier validación fallida: número, país, plantilla, code (4–11 caracteres), voice_message ausente o de más de 160, company de más de 40.El message indica el campo exacto; corrígelo y reintenta.
error_03Error interno al procesar la llamada.Reintenta; si persiste, contacta a soporte con el request_id.
curl -X POST https://api.smsmasivos.com.mx/voice/send \
  -H "Content-Type: application/json" \
  -H "apikey: TU_API_KEY" \
  -d '{
    "numbers": "5512345678",
    "country_code": "52",
    "template": "a",
    "company": "Mi Empresa"
  }'
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.smsmasivos.com.mx/voice/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'apikey: ' . getenv('SMSMASIVOS_API_KEY')
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'numbers' => '5512345678',
    'country_code' => '52',
    'template' => 'a',
    'company' => 'Mi Empresa'
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests

response = requests.post(
    'https://api.smsmasivos.com.mx/voice/send',
    headers={
        'Content-Type': 'application/json',
        'apikey': 'TU_API_KEY'
    },
    json={
        'numbers': '5512345678',
        'country_code': '52',
        'template': 'a',
        'company': 'Mi Empresa'
    }
)
print(response.json())
const response = await fetch('https://api.smsmasivos.com.mx/voice/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'apikey': process.env.SMSMASIVOS_API_KEY
  },
  body: JSON.stringify({
    numbers: '5512345678',
    country_code: '52',
    template: 'a',
    company: 'Mi Empresa'
  })
});
const data = await response.json();
console.log(data);
const axios = require('axios');

const { data } = await axios.post(
  'https://api.smsmasivos.com.mx/voice/send',
  {
    numbers: '5512345678',
    country_code: '52',
    template: 'a',
    company: 'Mi Empresa'
  },
  {
    headers: {
      'Content-Type': 'application/json',
      'apikey': process.env.SMSMASIVOS_API_KEY
    }
  }
);
console.log(data);
require 'net/http'
require 'json'

uri = URI('https://api.smsmasivos.com.mx/voice/send')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path, {
  'Content-Type' => 'application/json',
  'apikey' => ENV['SMSMASIVOS_API_KEY']
})
request.body = {
  numbers: '5512345678',
  country_code: '52',
  template: 'a',
  company: 'Mi Empresa'
}.to_json

response = http.request(request)
puts JSON.parse(response.body)
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("apikey", "TU_API_KEY");

var payload = new
{
    numbers = "5512345678",
    country_code = "52",
    template = "a",
    company = "Mi Empresa"
};

var response = await client.PostAsJsonAsync(
    "https://api.smsmasivos.com.mx/voice/send",
    payload
);
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);
OkHttpClient client = new OkHttpClient();

String json = "{"
    + "\"numbers\":\"5512345678\","
    + "\"country_code\":\"52\","
    + "\"template\":\"a\","
    + "\"company\":\"Mi Empresa\""
    + "}";

Request request = new Request.Builder()
    .url("https://api.smsmasivos.com.mx/voice/send")
    .post(RequestBody.create(json, MediaType.parse("application/json")))
    .addHeader("apikey", "TU_API_KEY")
    .build();

Response response = client.newCall(request).execute();
System.out.println(response.body().string());
Response
{
  "success": true,
  "message": "sent_messages",
  "status": 200,
  "code": "sms_11",
  "total_messages": 1,
  "references": [
    {
      "reference": "abc123def456ghi789jkl",
      "number": "525512345678"
    }
  ],
  "credit": 1.5,
  "campaignId": 12345
}
{
  "success": false,
  "message": "Parámetros inválidos.",
  "status": 400,
  "code": "<string>"
}
{
  "success": false,
  "message": "API Key inválida o no existe.",
  "status": 401,
  "code": "auth_05"
}
{
  "success": false,
  "message": "La dirección IP no está autorizada para acceder.",
  "status": 403,
  "code": "auth_04"
}
{
  "success": false,
  "message": "Demasiadas solicitudes. Límite: 100 mensajes/segundo (producción) o 100/día (sandbox).",
  "status": 429,
  "code": "rate_01"
}
{
  "success": false,
  "message": "Error interno del servidor. Contacta a soporte con el request_id.",
  "status": 500,
  "code": "server_01",
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}

Objeto de respuesta

Estructura de la respuesta que devuelven estos endpoints.

Atributos
successboolean
messagestring
Mensaje de estado
statusinteger
codestring
Código de respuesta
total_messagesinteger
Número de mensajes enviados
referencesarray<object>
IDs de referencia de los mensajes
creditnumber
Créditos consumidos
campaignIdinteger
ID de campaña (solo cuando showCampaignId=true)
Objeto de respuesta
{
  "success": true,
  "message": "sent_messages",
  "status": 200,
  "code": "sms_11",
  "total_messages": 1,
  "references": [],
  "credit": 1.5,
  "campaignId": 12345
}