Maytapi/Documentación/Enviar mensajes
Enviar mensajesUn endpoint para todos los tipos de mensajeEnvía mensajes de WhatsApp por API, desde tu propio número
Una petición POST envía un texto, un archivo, un mensaje con botones o una ubicación a cualquier número, grupo o canal de WhatsApp. Sin aprobación de plantillas, sin ventana de conversación y sin cargos por mensaje.
- POST /sendMessage
- texto · multimedia · botones
- grupos y canales
- confirmaciones de entrega
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "3461xxxxx67",
"type": "text",
"message": "Your order #10482 has shipped."
}'const res = await fetch(`https://api.maytapi.com/api/${PID}/${PHONE_ID}/sendMessage`, {
method: "POST",
headers: { "x-maytapi-key": TOKEN, "Content-Type": "application/json" },
body: JSON.stringify({ to_number: "3461xxxxx67", type: "text", message: "Your order #10482 has shipped." })
});
console.log(await res.json());import requests
res = requests.post(
f"https://api.maytapi.com/api/{PID}/{PHONE_ID}/sendMessage",
headers={"x-maytapi-key": TOKEN},
json={"to_number": "3461xxxxx67", "type": "text", "message": "Your order #10482 has shipped."},
timeout=10,
)
print(res.json())$ch = curl_init("https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["x-maytapi-key: $TOKEN", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["to_number" => "3461xxxxx67", "type" => "text", "message" => "Your order #10482 has shipped."]),
]);
echo curl_exec($ch);
Qué puedes enviar con la API de WhatsApp
Cambia el campo type y el mismo endpoint envía otra cosa.
-
type: text
Texto
Avisos de pedidos, recordatorios, códigos OTP y respuestas, con el formato de WhatsApp.
-
type: media
Imágenes, vídeo y archivos
Envía por URL o en base64: facturas, fotos, notas de voz y documentos dentro de los límites de WhatsApp.
-
type: buttons
Botones y listas
Respuestas rápidas, enlaces, botones de llamada, botones para copiar código, listas y carruseles.
-
type: location
Ubicación y contactos
Comparte una ubicación, una vCard o una tarjeta de contacto de WhatsApp.
Envía un mensaje de WhatsApp con una sola petición
Pon tu token en la cabecera x-maytapi-key y envía un cuerpo JSON con el destinatario y el mensaje. La API pone el mensaje en la cola de tu número y te devuelve su id al instante.
- ✓to_number en formato internacional, p. ej. 3461xxxxx67
- ✓Funciona desde cualquier lenguaje capaz de hacer una petición HTTP
- ✓La respuesta incluye el id del mensaje para hacer el seguimiento
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "3461xxxxx67",
"type": "text",
"message": "Your order #10482 has shipped."
}'const res = await fetch(`https://api.maytapi.com/api/${PID}/${PHONE_ID}/sendMessage`, {
method: "POST",
headers: { "x-maytapi-key": TOKEN, "Content-Type": "application/json" },
body: JSON.stringify({ to_number: "3461xxxxx67", type: "text", message: "Your order #10482 has shipped." })
});
console.log(await res.json());import requests
res = requests.post(
f"https://api.maytapi.com/api/{PID}/{PHONE_ID}/sendMessage",
headers={"x-maytapi-key": TOKEN},
json={"to_number": "3461xxxxx67", "type": "text", "message": "Your order #10482 has shipped."},
timeout=10,
)
print(res.json())$ch = curl_init("https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["x-maytapi-key: $TOKEN", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["to_number" => "3461xxxxx67", "type" => "text", "message" => "Your order #10482 has shipped."]),
]);
echo curl_exec($ch);Envía archivos, imágenes y notas de voz
Pasa una URL pública o una cadena en base64. Añade un pie de foto, un nombre de archivo o calidad HD para las imágenes.
- ✓Facturas en PDF y documentos con nombre de archivo
- ✓Imágenes y vídeo con pie de foto
- ✓Stickers, notas de voz y audio
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "3461xxxxx67@c.us",
"type": "media",
"message": "https://example.com/invoice-10482.pdf",
"text": "Your invoice for order #10482",
"filename": "invoice-10482.pdf"
}'curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "3461xxxxx67@c.us",
"type": "media",
"message": "https://example.com/product.jpg",
"text": "New arrival",
"isHd": true
}'Envía botones que se pueden tocar
Tus clientes responden con un toque y la respuesta llega a tu webhook con el id del botón, así tu código sabe exactamente qué se eligió.
- ✓Botones de respuesta rápida, URL, llamada y copiar código
- ✓Listas con secciones para menús
- ✓Ninguno necesita aprobación de plantillas
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "3461xxxxx67@c.us",
"type": "buttons",
"message": "Your order #10482 has shipped. Want to follow it?",
"buttons": [
{
"id": "track",
"text": "Track order"
},
{
"id": "address",
"text": "Change address"
}
]
}'Envía a grupos y canales
Usa el id de un grupo o de un canal como destinatario. La WhatsApp Cloud API oficial no ofrece canales en absoluto.
- ✓Los id de grupo terminan en @g.us
- ✓Los id de canal terminan en @newsletter
- ✓Menciona participantes, envía encuestas y eventos
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "120363012345678901@g.us",
"type": "text",
"message": "Weekly update: all orders shipped."
}'curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_number": "120363204759413821@newsletter",
"type": "text",
"message": "New collection is live."
}'Qué envían las empresas a través de la API
-
Avisos de pedidos y envíos
Mensajes de confirmación, envío y entrega directamente desde tu tienda o ERP.
-
Recordatorios y confirmaciones
Recordatorios de citas con botones para confirmar o cancelar.
-
Respuestas de soporte
Responde desde tu CRM o deja que tu equipo conteste desde la bandeja compartida.
Preguntas frecuentes sobre el envío de mensajes
Pregunta lo que quieras a nuestro equipo de soporte por WhatsApp. El tiempo medio de respuesta es inferior a 24 horas.
Centro de ayuda →¿Puedo enviar mensajes de WhatsApp sin plantillas?
Sí. Maytapi envía mensajes libres desde tu propio número, así que no hay aprobación de plantillas ni ventana de 24 horas.
¿Puedo hacer envíos masivos?
Puedes enviar todos los mensajes que necesites, sin cargos por mensaje. Para proteger el número, escribe a personas que esperan tus mensajes, varía el contenido y mantén un ritmo natural; Safe Mode calienta los números nuevos.
¿Desde qué número salen los mensajes?
Desde tu propio número de WhatsApp, el que vinculas con un código QR. Tus clientes ven tu nombre y tu foto como siempre.
¿Cómo sé si un mensaje se entregó?
Configura un webhook y recibirás los eventos de enviado, entregado y leído de cada mensaje. También puedes consultar la cola y el estado del teléfono mediante la API.
¿Qué lenguajes puedo usar?
¿Cuánto cuesta enviar?
Nada por mensaje. Pagas un precio fijo por número conectado: desde $24 al mes con facturación anual, o $29 con facturación mensual.
Más funciones de la API de WhatsApp

Consigue tu clave y envía tu primer mensaje en diez minutos
Sin aprobación, sin plantillas, sin tarjeta. Todos los endpoints abiertos durante tres días.