Enviar mensaje de WhatsApp
POST
https://api.bydomu.com/v1/conversations/{contactId}/messagesThis reference is generated from the API’s code, so descriptions are in Spanish. Names, parameters and examples are the same in every language.
Envía un mensaje al contacto respetando la ventana de servicio de 24 h de Meta.
- Ventana abierta: manda
bodyy se entrega como texto libre (la respuesta es el mensaje guardado). - Ventana cerrada: manda
templateId+variablescon una plantilla APROBADA (la respuesta traewaMessageId,renderedBodyyusage). - Ninguna de las dos es posible (opt-out, sin plantilla, sin ventana):
409 CONFLICTcon el motivo enerror.message, el modo enerror.reason(FREE_FORM,TEMPLATE_ONLY,HUMAN_AGENT_ONLY,BLOCKED) y, si falta la plantilla,error.windowExpiresAt.
La API nunca envía como human_agent: esa vía es de una persona real en el buzón. Si la organización no tiene un número de WhatsApp activo, responde 404.
Permission
messages:writeKeys
Secret only (server-side)
Headers
X-API-KeystringrequiredYour secret key.
Idempotency-KeystringClave única de la operación (8-128 caracteres de
[a-zA-Z0-9._:-]). Un reintento con la misma clave y el mismo cuerpo devuelve la respuesta original sin repetir la operación. Vive 24 horas. · 8–128 charsPath parameters
contactIdstringrequiredID del contacto
Body (JSON)
bodystringTexto libre. Solo con la ventana de 24 h abierta. · 1–4096 chars
templateIdstringPlantilla aprobada, para la ventana cerrada.
variablesobjectValores de las variables de la plantilla. · default={}
Responses
201Mensaje enviado
400Datos inválidos: el cuerpo o la query no cumplen el esquema, o `Idempotency-Key` está mal formada.
401
UNAUTHORIZED · Clave faltante, inválida, desactivada o vencida.402
PAYMENT_REQUIRED · Cuenta en modo solo lectura: se rechaza toda mutación.403
FORBIDDEN · La clave no puede usar esta operación: falta el scope, es una secreta en el navegador, el nivel de la cuenta no la permite, está suspendida o se alcanzó un tope del plan.404
NOT_FOUND · El recurso no existe en la organización.409
DUPLICATE · Choca con un dato existente o con el estado actual, o la `Idempotency-Key` ya se usó con otro cuerpo o sigue en curso.429
RATE_LIMITED · Límite de peticiones excedido: el de la clave (`RATE_LIMITED`), el de escrituras de la organización (`TENANT_RATE_LIMITED`) o bloqueo temporal de la IP por claves inválidas.500
INTERNAL_ERROR · Error interno del servidor.502
WHATSAPP_ERROR · Falló un servicio externo (Meta / WhatsApp).