POST /messages
Enviar un mensaje de WhatsApp. Soporta texto, imagen, video, audio, documento, template e interactivos. Scope requerido:messages:write
Body
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
phoneNumberId | string (UUID) | Sí | ID del canal (de GET /channels) |
to | string | Sí | Número del destinatario en formato E.164 |
type | string | Sí | text, image, video, audio, document, template, interactive |
text | object | Si type=text | { "body": "mensaje" } |
image | object | Si type=image | { "link": "url" } o { "id": "media_id" } |
video | object | Si type=video | { "link": "url" } o { "id": "media_id" } |
audio | object | Si type=audio | { "link": "url" } o { "id": "media_id" } |
document | object | Si type=document | { "link": "url", "filename": "archivo.pdf" } |
template | object | Si type=template | { "name": "...", "language": { "code": "es_AR" }, "components": [...] } |
Enviar texto
Enviar template
Enviar template con variables
Enviar imagen
Response 201
Idempotencia
Incluí el headerIdempotency-Key para evitar envíos duplicados (máx 256 caracteres, expira en 24hs). Ver Idempotencia.
Idempotency-Replayed: true.
Errores frecuentes
| Código | Status | Descripción |
|---|---|---|
SERVICE_WINDOW_EXPIRED | 403 | La ventana de 24hs expiró, usá un template |
INVALID_CHANNEL | 400 | El phoneNumberId no existe o no pertenece a tu cuenta |
CHANNEL_NOT_CONNECTED | 403 | El canal no está conectado |
INVALID_MESSAGE_TYPE | 400 | Tipo de mensaje no válido |
INVALID_PHONE | 400 | Número de teléfono con formato inválido |
IDEMPOTENCY_CONFLICT | 409 | Otra request con la misma key está en proceso |
Comportamiento
- Si el contacto no existe, se crea automáticamente con el número.
- Si no hay conversación previa, se crea una nueva.
- El mensaje se encola y se envía de forma asíncrona. El status inicial es
queued. - Consultá el estado final con
GET /messages/{id}.
GET /messages/
Consultar un mensaje por ID. Útil para verificar el estado de envío. Scope requerido:messages:read
Response 200
Estados posibles
queued → sent → delivered → read (o failed)
Para más detalle, ver Estados de mensajes.