Envío de mensajes de WhatsApp desde tu propia línea, conectada escaneando un QR desde el panel: texto, imagen, video, audio y documentos. Sin trámites de Meta ni plantillas. Guía completa en WhatsApp.
Este canal es para mensajes transaccionales: uno a uno, derivados de una acción del usuario (confirmaciones, avisos, recibos, respuestas). La regla práctica: si disparas dos mensajes simultáneos, ya es masivo; promociones, cobranza y recordatorios en lote cuentan como masivo aunque el texto cambie. WhatsApp puede restringir tu línea; para volumen usa SMS Masivos.
¿Envías códigos de verificación, login o 2FA por WhatsApp? Usa Verificación OTP (POST /v2/otp con channel: "whatsapp"): sale por la integración oficial de SMS Masivos, sin instance_id, sin cuenta de WhatsApp Business ni verificación de Meta, y la API genera y valida el código por ti.
El envío sale desde una instancia de WhatsApp vinculada a tu cuenta, que debe existir, estar conectada y permanecer operativa. Cada instancia se identifica con su instance_id.
Enviar WhatsApp
52).Tipo de mensaje. Extensiones aceptadas por tipo:
image: jpg, jpeg, png, svg, webpvideo: mp4audio: ogg, amr, 3gp, aac, mpegdocument: pdf, doc, docx, pptx, xlsx, xls, csv
textimagevideoaudiodocument52). Actualmente solo se admite 52 (México).1, el código de país se extrae del propio número en lugar de tomarse de country_code.01YYYY-MM-DD HH:MM:SS). Debe ser futura.curl -X POST https://api.smsmasivos.com.mx/whatsapp/send \
-H "Content-Type: application/json" \
-H "apikey: TU_API_KEY" \
-d '{
"instance_id": "instance_abc123",
"number": "5512345678",
"message": "Hola desde WhatsApp!",
"type": "text"
}'
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.smsmasivos.com.mx/whatsapp/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'apikey: ' . getenv('API_KEY')
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'instance_id' => 'instance_abc123',
'number' => '5512345678',
'message' => 'Hola desde WhatsApp!',
'type' => 'text'
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
response = requests.post(
'https://api.smsmasivos.com.mx/whatsapp/send',
headers={
'Content-Type': 'application/json',
'apikey': 'TU_API_KEY'
},
json={
'instance_id': 'instance_abc123',
'number': '5512345678',
'message': 'Hola desde WhatsApp!',
'type': 'text'
}
)
print(response.json())
const response = await fetch('https://api.smsmasivos.com.mx/whatsapp/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'apikey': process.env.API_KEY
},
body: JSON.stringify({
instance_id: 'instance_abc123',
number: '5512345678',
message: 'Hola desde WhatsApp!',
type: 'text'
})
});
const data = await response.json();
console.log(data);
const axios = require('axios');
const { data } = await axios.post(
'https://api.smsmasivos.com.mx/whatsapp/send',
{
instance_id: 'instance_abc123',
number: '5512345678',
message: 'Hola desde WhatsApp!',
type: 'text'
},
{
headers: {
'Content-Type': 'application/json',
'apikey': process.env.API_KEY
}
}
);
console.log(data);
require 'net/http'
require 'json'
uri = URI('https://api.smsmasivos.com.mx/whatsapp/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['API_KEY']
})
request.body = {
instance_id: 'instance_abc123',
number: '5512345678',
message: 'Hola desde WhatsApp!',
type: 'text'
}.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
{
instance_id = "instance_abc123",
number = "5512345678",
message = "Hola desde WhatsApp!",
type = "text"
};
var response = await client.PostAsJsonAsync(
"https://api.smsmasivos.com.mx/whatsapp/send",
payload
);
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);
OkHttpClient client = new OkHttpClient();
String json = "{"
+ "\"instance_id\":\"instance_abc123\","
+ "\"number\":\"5512345678\","
+ "\"message\":\"Hola desde WhatsApp!\","
+ "\"type\":\"text\""
+ "}";
Request request = new Request.Builder()
.url("https://api.smsmasivos.com.mx/whatsapp/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());
{ "success": true, "message": "message sent", "status": 200, "code": "whatsapp_21", "credit": 1.5, "reference": "abc123def456ghi789jkl", "id": 12345 }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "error": true, "message": "Too many requests", "rate-limited": "2 minutes", "reason": "Bulk messages using WhatsApp is not allowed, use SMS instead." }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 200, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
Enviar WhatsApp
text, image, video, audio o document (por defecto: text)curl https://api.smsmasivos.com.mx/whatsapp/send?instance_id=value&number=value&message=value
const WhatsApp = await sms.whatsapp.list({ instance_id: 'value', number: 'value', message: 'value' })
WhatsApp = sms.whatsapp.list(instance_id="value", number="value", message="value")
WhatsApp, err := client.Whatsapp.List(ctx, nil)
{ "success": true, "message": "message sent", "status": 200, "code": "whatsapp_21", "credit": 1.5, "reference": "abc123def456ghi789jkl", "id": 12345 }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
{ "error": true, "message": "Too many requests", "rate-limited": "2 minutes", "reason": "Bulk messages using WhatsApp is not allowed, use SMS instead." }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 200, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
{ "success": false, "message": "Parámetros inválidos.", "status": 200, "code": "<string>" }
Objeto de respuesta
Estructura de la respuesta que devuelven estos endpoints.
{ "success": true, "message": "message sent", "status": 200, "code": "whatsapp_21", "credit": 1.5, "reference": "abc123def456ghi789jkl", "id": 12345 }