Envia mensajes de texto, imagenes, videos, audios y documentos a numeros individuales o grupos de WhatsApp. Sistema de prioridad, spintax y acortador de URLs.
Antes de poder enviar mensajes de WhatsApp a traves de la API, asegurate de cumplir con los siguientes requisitos:
Necesitas una suscripcion activa que incluya el servicio de WhatsApp. Puedes verificarlo en Dashboard > Suscripcion.
Al menos 1 cuenta de WhatsApp vinculada mediante escaneo de codigo QR desde Dashboard > WhatsApp > Cuentas.
La cuenta de WhatsApp debe mostrar el estado connected. Si esta desconectada, vuelve a escanear el QR.
account: Es el identificador unico (unique) de tu cuenta de WhatsApp vinculada. Lo puedes obtener desde el Dashboard o a traves del endpoint GET /api/get/wa.accounts. No confundas este parametro con el numero de telefono de la cuenta.
POST /api/send/whatsapp
Envia un mensaje de WhatsApp a un unico destinatario (numero de telefono o grupo). Soporta mensajes de texto, imagenes, videos, audios y documentos adjuntos. Puedes elegir entre envio inmediato (prioridad alta) o encolar el mensaje para procesamiento asincrono.
URL completa del endpoint:
POST //whatsboost.netapi/send/whatsapp
| Parametro | Tipo | Estado | Descripcion |
|---|---|---|---|
secret |
string |
Obligatorio | Tu API Key. Obtenla en Dashboard > API Keys. Consulta la guia de autenticacion para mas detalles. |
recipient |
string |
Obligatorio | Numero de telefono en formato E.164 (ej: +34612345678) o ID de grupo de WhatsApp terminado en @g.us (ej: 120363012345678@g.us). Consulta la seccion validacion de telefono para detalles sobre el formato. |
account |
string |
Obligatorio | Identificador unico (unique) de la cuenta de WhatsApp vinculada. No es el numero de telefono. Obtenlo desde el Dashboard o via GET /api/get/wa.accounts. |
message |
string |
Obligatorio | Contenido del mensaje de texto. Soporta spintax: {Hola|Buenos dias|Saludos}. En envios de tipo media o document, este campo se usa como caption (pie de foto/video o descripcion del documento). |
type |
string |
Opcional | Tipo de mensaje: "text" (por defecto), "media" o "document". Segun el tipo, se requieren parametros adicionales de media o documento. |
priority |
integer |
Opcional | Prioridad de envio: 1 = alta (envio inmediato sincrono), 2 = normal (cola asincrona). Valor por defecto: 2. Ver sistema de prioridad. |
media_url |
string |
Condicional | URL publica del archivo multimedia. Obligatorio si type=media y no se sube archivo via FormData. Debe ser accesible publicamente (HTTP/HTTPS). |
media_type |
string |
Condicional | Tipo de medio: "image", "video" o "audio". Obligatorio si type=media. Los audios no soportan caption. |
document_url |
string |
Condicional | URL publica del documento. Obligatorio si type=document y no se sube archivo via FormData. |
document_type |
string |
Condicional | Extension del documento: "pdf", "doc", "docx", "xls", "xlsx", "xml". Obligatorio si type=document. |
document_name |
string |
Opcional | Nombre personalizado del archivo que vera el destinatario. Si no se indica, se usara el nombre original del archivo de la URL. |
shortener |
integer |
Opcional | ID del acortador de URL. Si se proporciona, todas las URLs detectadas en el campo message seran acortadas automaticamente antes del envio. |
Cuando el mensaje se envia o encola correctamente, la API devuelve un codigo 200 junto con el ID del mensaje:
{
"status": 200,
"message": "Message has been sent!",
"data": 48291
}
{
"status": 400,
"message": "Invalid WhatsApp account!",
"data": false
}
WhatsBoost implementa un sistema de prioridad de dos niveles que te permite controlar como y cuando se entregan tus mensajes. Elegir la prioridad correcta es clave para optimizar la experiencia del usuario y respetar los limites de envio de WhatsApp.
El mensaje se envia inmediatamente de forma sincrona mediante sendPriority(). La API espera la respuesta del servidor de WhatsApp antes de devolver el resultado.
4 (fallido) y el error se devuelve en la respuesta.El mensaje se anade a la cola de procesamiento. Un proceso programado (cron/scheduler) se encarga de enviar los mensajes en el orden de la cola.
1 solo cuando necesites confirmacion inmediata de la entrega (OTP, chatbots, alertas criticas). Para todo lo demas, usa prioridad 2 (por defecto). El envio en cola es mas eficiente y reduce significativamente el riesgo de bloqueo por parte de WhatsApp.
El sistema aplica una serie de validaciones automaticas al parametro recipient antes de procesar el envio. Es importante conocer estas reglas para evitar errores:
| Regla | Descripcion |
|---|---|
| Formato E.164 obligatorio | El numero debe incluir el prefijo de pais con el signo +. Ejemplos validos: +34612345678 (Espana), +5215512345678 (Mexico), +573001234567 (Colombia). Numeros sin prefijo seran rechazados. |
| Reformateo automatico de Mexico | Los numeros de Mexico se reformatean automaticamente al formato correcto de WhatsApp. El sistema anade o elimina el prefijo 1 despues de 52 segun sea necesario para garantizar la compatibilidad. |
| Validacion de movil | El sistema comprueba que el numero corresponde a un telefono movil valido. Los numeros fijos o invalidos seran rechazados con un error descriptivo. |
| Lista de desuscripcion (STOP) | Se verifica automaticamente si el destinatario ha solicitado la baja (STOP/unsubscribe). Si el numero esta en la lista de desuscritos, el mensaje no se enviara y se devolvera un error indicando que el contacto se ha dado de baja. |
| Grupos WhatsApp | Para enviar a grupos, el recipient debe ser el ID del grupo en formato @g.us (ej: 120363012345678@g.us). Consulta la documentacion de Grupos WhatsApp para obtener el ID. |
POST /api/validate/whatsapp. Esto te permite ahorrar recursos y mejorar la tasa de entrega.
El sistema soporta spintax, una sintaxis que permite definir variantes de texto separadas por el caracter | dentro de llaves. En cada envio, el sistema elige una variante aleatoria, haciendo que cada mensaje sea ligeramente diferente. Esto es especialmente util para evitar filtros de spam y personalizar comunicaciones masivas.
| Spintax en el mensaje | Posibles resultados |
|---|---|
{Hola|Buenos dias|Hey} Juan |
"Hola Juan", "Buenos dias Juan", "Hey Juan" |
Tu pedido {esta listo|ha sido preparado} |
"Tu pedido esta listo", "Tu pedido ha sido preparado" |
{Gracias|Muchas gracias} por tu {compra|pedido} |
4 combinaciones posibles: "Gracias por tu compra", "Muchas gracias por tu pedido", etc. |
Puedes anidar multiples bloques de spintax en un mismo mensaje. Cada bloque se resuelve de forma independiente, lo que multiplica las posibles combinaciones de texto.
Ejemplos completos y listos para copiar en 4 lenguajes de programacion. Cada ejemplo incluye manejo de errores y buenas practicas.
# Enviar texto con prioridad alta (inmediato)
curl -X POST //whatsboost.netapi/send/whatsapp \
-d "secret=TU_API_KEY" \
-d "recipient=+34612345678" \
-d "account=WA_ACCOUNT_UNIQUE" \
-d "message=Hola, tu pedido #1234 ha sido confirmado." \
-d "type=text" \
-d "priority=1"
# Enviar texto con prioridad normal (cola)
curl -X POST //whatsboost.netapi/send/whatsapp \
-d "secret=TU_API_KEY" \
-d "recipient=+34612345678" \
-d "account=WA_ACCOUNT_UNIQUE" \
-d "message=Te recordamos tu cita para manana a las 10:00." \
-d "type=text" \
-d "priority=2"
# Enviar a un grupo de WhatsApp
curl -X POST //whatsboost.netapi/send/whatsapp \
-d "secret=TU_API_KEY" \
-d "recipient=120363012345678@g.us" \
-d "account=WA_ACCOUNT_UNIQUE" \
-d "message=Reunion de equipo en 15 minutos."
<?php
/**
* Enviar mensaje de texto por WhatsApp
* Requiere: PHP 7.4+ con cURL
*/
function enviarWhatsApp(string $destinatario, string $mensaje, int $prioridad = 2): array
{
$ch = curl_init("//whatsboost.netapi/send/whatsapp");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_POSTFIELDS => [
"secret" => "TU_API_KEY",
"recipient" => $destinatario,
"account" => "WA_ACCOUNT_UNIQUE",
"message" => $mensaje,
"type" => "text",
"priority" => $prioridad
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($result["status"] === 200) {
echo "WhatsApp enviado! ID: " . $result["data"] . PHP_EOL;
} else {
echo "Error ({$result["status"]}): " . $result["message"] . PHP_EOL;
}
return $result;
}
// Uso: envio inmediato (OTP, chatbot)
enviarWhatsApp("+34612345678", "Tu codigo de verificacion es: 482910", 1);
// Uso: envio en cola (marketing)
enviarWhatsApp("+34612345678", "Aprovecha un 20% de descuento este fin de semana!", 2);
/**
* Enviar mensaje de texto por WhatsApp
* Compatible con Node.js (fetch nativo desde v18) y navegador
*/
async function enviarWhatsApp(destinatario, mensaje, prioridad = 2) {
const response = await fetch("//whatsboost.netapi/send/whatsapp", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: new URLSearchParams({
secret: "TU_API_KEY",
recipient: destinatario,
account: "WA_ACCOUNT_UNIQUE",
message: mensaje,
type: "text",
priority: prioridad.toString()
})
});
const data = await response.json();
if (data.status === 200) {
console.log("WhatsApp enviado! ID:", data.data);
} else {
console.error(`Error (${ data.status }):`, data.message);
}
return data;
}
// Uso: envio inmediato
enviarWhatsApp("+34612345678", "Tu codigo es: 482910", 1);
// Uso: envio en cola
enviarWhatsApp("+34612345678", "Recordatorio: tu cita es manana a las 10:00");
import requests
def enviar_whatsapp(destinatario: str, mensaje: str, prioridad: int = 2) -> dict:
"""
Enviar mensaje de texto por WhatsApp.
Requiere: pip install requests
"""
response = requests.post(
"//whatsboost.netapi/send/whatsapp",
data={
"secret": "TU_API_KEY",
"recipient": destinatario,
"account": "WA_ACCOUNT_UNIQUE",
"message": mensaje,
"type": "text",
"priority": prioridad
},
timeout=30
)
result = response.json()
if result["status"] == 200:
print(f"WhatsApp enviado! ID: {result['data']}")
else:
print(f"Error ({result['status']}): {result['message']}")
return result
# Uso: envio inmediato (OTP, chatbot)
enviar_whatsapp("+34612345678", "Tu codigo de verificacion es: 482910", prioridad=1)
# Uso: envio en cola (marketing)
enviar_whatsapp("+34612345678", "Aprovecha un 20% de descuento este fin de semana!")
# Enviar imagen desde URL con caption
curl -X POST //whatsboost.netapi/send/whatsapp \
-d "secret=TU_API_KEY" \
-d "recipient=+34612345678" \
-d "account=WA_ACCOUNT_UNIQUE" \
-d "message=Aqui tienes la foto de tu producto" \
-d "type=media" \
-d "media_type=image" \
-d "media_url=https://ejemplo.com/producto.jpg" \
-d "priority=2"
<?php
$ch = curl_init("//whatsboost.netapi/send/whatsapp");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_POSTFIELDS => [
"secret" => "TU_API_KEY",
"recipient" => "+34612345678",
"account" => "WA_ACCOUNT_UNIQUE",
"message" => "Aqui tienes la foto de tu producto",
"type" => "media",
"media_type" => "image",
"media_url" => "https://ejemplo.com/producto.jpg",
"priority" => 2
]
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo $result["status"] === 200
? "Imagen enviada! ID: " . $result["data"]
: "Error: " . $result["message"];
const response = await fetch("//whatsboost.netapi/send/whatsapp", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
secret: "TU_API_KEY",
recipient: "+34612345678",
account: "WA_ACCOUNT_UNIQUE",
message: "Aqui tienes la foto de tu producto",
type: "media",
media_type: "image",
media_url: "https://ejemplo.com/producto.jpg",
priority: "2"
})
});
const data = await response.json();
console.log(data.status === 200 ? `Imagen enviada! ID: ${data.data}` : `Error: ${data.message}`);
import requests
response = requests.post(
"//whatsboost.netapi/send/whatsapp",
data={
"secret": "TU_API_KEY",
"recipient": "+34612345678",
"account": "WA_ACCOUNT_UNIQUE",
"message": "Aqui tienes la foto de tu producto",
"type": "media",
"media_type": "image",
"media_url": "https://ejemplo.com/producto.jpg",
"priority": 2
},
timeout=60
)
result = response.json()
print(f"Imagen enviada! ID: {result['data']}" if result["status"] == 200 else f"Error: {result['message']}")
# Enviar documento PDF desde URL
curl -X POST //whatsboost.netapi/send/whatsapp \
-d "secret=TU_API_KEY" \
-d "recipient=+34612345678" \
-d "account=WA_ACCOUNT_UNIQUE" \
-d "message=Aqui tienes tu factura de diciembre" \
-d "type=document" \
-d "document_type=pdf" \
-d "document_url=https://ejemplo.com/factura.pdf" \
-d "document_name=Factura_Dic_2024.pdf" \
-d "priority=2"
<?php
$ch = curl_init("//whatsboost.netapi/send/whatsapp");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_POSTFIELDS => [
"secret" => "TU_API_KEY",
"recipient" => "+34612345678",
"account" => "WA_ACCOUNT_UNIQUE",
"message" => "Aqui tienes tu factura de diciembre",
"type" => "document",
"document_type" => "pdf",
"document_url" => "https://ejemplo.com/factura.pdf",
"document_name" => "Factura_Dic_2024.pdf",
"priority" => 2
]
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo $result["status"] === 200
? "Documento enviado! ID: " . $result["data"]
: "Error: " . $result["message"];
const response = await fetch("//whatsboost.netapi/send/whatsapp", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
secret: "TU_API_KEY",
recipient: "+34612345678",
account: "WA_ACCOUNT_UNIQUE",
message: "Aqui tienes tu factura de diciembre",
type: "document",
document_type: "pdf",
document_url: "https://ejemplo.com/factura.pdf",
document_name: "Factura_Dic_2024.pdf",
priority: "2"
})
});
const data = await response.json();
console.log(data.status === 200 ? `Documento enviado! ID: ${data.data}` : `Error: ${data.message}`);
import requests
response = requests.post(
"//whatsboost.netapi/send/whatsapp",
data={
"secret": "TU_API_KEY",
"recipient": "+34612345678",
"account": "WA_ACCOUNT_UNIQUE",
"message": "Aqui tienes tu factura de diciembre",
"type": "document",
"document_type": "pdf",
"document_url": "https://ejemplo.com/factura.pdf",
"document_name": "Factura_Dic_2024.pdf",
"priority": 2
},
timeout=60
)
result = response.json()
print(f"Documento enviado! ID: {result['data']}" if result["status"] == 200 else f"Error: {result['message']}")
Copia este prompt en ChatGPT, Claude, Gemini o cualquier asistente de IA para que genere integraciones de envio de WhatsApp con la API de WhatsBoost de forma autonoma.
Eres un desarrollador backend experto en integraciones de mensajeria.
Tienes acceso a la API de WhatsBoost para enviar mensajes de WhatsApp.
BASE URL: //whatsboost.netapi/send/whatsapp
METODO: POST
AUTH: Parametro "secret" con la API Key
PARAMETROS:
- secret (obligatorio): API Key
- recipient (obligatorio): telefono E.164 (+34...) o grupo @g.us
- account (obligatorio): unique ID de cuenta WA vinculada (no es el telefono)
- message (obligatorio): texto del mensaje, soporta spintax
- type: "text" (default), "media", "document"
- priority: 1 (inmediato sincrono) o 2 (cola asincrona, default)
MEDIA (type="media"):
- media_url: URL publica del archivo
- media_type: "image", "video", "audio"
- Imagenes/videos usan message como caption. Audio NO soporta caption.
DOCUMENTOS (type="document"):
- document_url: URL publica del documento
- document_type: "pdf", "doc", "docx", "xls", "xlsx", "xml"
- document_name: nombre personalizado (opcional)
OPCIONALES: shortener (ID acortador URL)
FORMATO RESPUESTA: {"status": 200, "message": "...", "data": messageId}
REGLAS:
- Prioridad 1 para OTP/chatbot/alertas urgentes
- Prioridad 2 para marketing/bulk/no urgente
- El parametro account NO es el numero de telefono
- Formato E.164 obligatorio para recipient
Genera codigo limpio, con manejo de errores y comentarios en espanol.