Endpoint principal
Toda la API de Wis.Chat se concentra en un único endpoint que acepta todos los tipos de mensaje.
El campo type dentro del body define qué clase de mensaje se envía.
Estructura base del payload
Todos los mensajes comparten estos campos base. Después se agrega un objeto adicional según el type.
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "template",
// ... payload específico según type
}| Campo base | Tipo | Requerido | Descripción |
|---|---|---|---|
messaging_product |
string | requerido | Siempre "whatsapp". |
to |
string | requerido | Número destino en formato E.164 sin +. Ej: 593999999999. |
type |
string | requerido | Tipo de mensaje. Define qué objeto adicional debe acompañar. |
recipient_type |
string | opcional | Por defecto "individual". |
Tipos de mensaje soportados
Cada valor de type requiere un objeto adicional con los campos específicos. Haz clic para ver la doc completa.
Valor de type | Objeto adicional | Caso de uso | Doc |
|---|---|---|---|
template |
template |
Iniciar conversación, OTPs, recordatorios, marketing. | Ver → |
text |
text |
Texto libre dentro de la ventana de 24h. | Ver → |
image |
image |
JPEG / PNG hasta 5 MB. | Ver → |
video |
video |
MP4 / 3GPP hasta 16 MB. | Ver → |
audio |
audio |
MP3, OGG, AAC, M4A, AMR hasta 16 MB. | Ver → |
document |
document |
PDF, Excel, Word, ZIP, etc. hasta 100 MB. | Ver → |
location |
location |
Coordenadas con etiqueta opcional. | Ver → |
interactive |
interactive |
Botones de respuesta o listas desplegables. | Ver → |
Ejemplo mínimo: enviar un mensaje
Este es el ejemplo más simple posible: un mensaje de texto al destinatario indicado en
to. Para tu primera prueba usa tu propio WhatsApp (en el ejemplo
593999999999 es ficticio, reemplázalo por el tuyo en formato E.164 sin +).
Requisito: el número destino debe haberte escrito al WhatsApp de Wis.Chat
en las últimas 24 horas. Si no, este envío fallará con outside_24h_window: usa una
plantilla aprobada en su lugar.
curl -X POST "https://api.wis.chat/v22.0/TU_ID_LINEA/messages" \ -H "Authorization: Bearer TU_CODIGO_SEGURIDAD" \ -H "Content-Type: application/json" \ -d '{ "messaging_product": "whatsapp", "to": "593999999999", "type": "text", "text": { "body": "Hola 👋 estoy probando WhatsApp con la API de Wis.Chat" } }'
Respuesta exitosa
Si el envío fue aceptado por Meta, recibes el wamid con el cual podrás trackear el estado:
{
"success": true,
"messages": [
{ "id": "wamid.HBgMNTkzOTk5OTk5OTk5FQIAERgS..." }
]
}Validación previa al envío
Antes de reenviar a Meta, Wis.Chat ejecuta automáticamente:
- Validación de credenciales —
tid+ token deben coincidir. - Validación de reputación — el número debe tener calidad
HIGHoMEDIUM. Reputación baja bloquea el envío. - Validación de payload — formato JSON, campos requeridos, tipos válidos.
- Forward a Meta — sólo si todo lo anterior pasó.
- Notificación de estado — el resultado y los estados sucesivos
(
sent → delivered → readofailed) se entregan en tu webhook.
Compatibilidad con Meta: el formato JSON del payload es idéntico
al de WhatsApp Cloud API de Meta. Si ya tienes código que apunta a graph.facebook.com,
sólo cambias la URL base y el token — el resto no se toca.