Envía y recibe mensajes de WhatsApp (texto, imágenes/audio/video/documentos, ubicación, contactos, botones de respuesta y listas) desde un número vinculado a tu cuenta. Todos los endpoints van bajo /v1/whatsapp/* y usan el mismo token Authorization: Bearer que el resto de la API.
403. Actívalas o pídelas desde el panel, en la ficha de tu cuenta de WhatsApp.1. Vincular un número
Antes de enviar nada necesitas una cuenta con un número vinculado por QR — esto se hace una sola vez desde el panel (/mi-cuenta/whatsapp) o por API:
Crear cuenta
POST/whatsapp/cuentas
| Nombre | Requerido | Descripción |
|---|---|---|
phone_number | Sí | Número con código de país, sin espacios ni símbolos (ej. 51987654321). |
provider | Opcional | Etiqueta libre para identificar el número (ej. "Ventas", "Soporte"). |
curl -X POST https://mblapirest.com/api/v1/whatsapp/cuentas \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "phone_number=51987654321&provider=Ventas"
Generar QR y vincular
GET/whatsapp/cuentas/{id}/qr — devuelve el QR (imagen en base64) para escanear desde el WhatsApp del número. Vuelve a llamarlo si expira (los QR de WhatsApp duran ~20 segundos).
GET/whatsapp/cuentas/{id}/estado — consulta si ya quedó connected. Ideal para hacer polling cada 2-3 segundos mientras el usuario escanea.
Otras acciones sobre la cuenta
| Acción | Endpoint |
|---|---|
| Listar mis cuentas | GET/whatsapp/cuentas |
| Actualizar (cambiar número) | PUT/whatsapp/cuentas/{id} — vuelve a pedir vinculación por QR. |
| Eliminar | DELETE/whatsapp/cuentas/{id} — cierra la sesión de WhatsApp y borra la cuenta. |
2. Enviar mensajes
Todos los endpoints de envío reciben account_id (opcional si solo tienes una cuenta vinculada — en ese caso se usa automáticamente) y devuelven {"success": true, ...} o {"success": false, "message": "..."} (HTTP 502 si el número no está conectado).
Texto
POST/whatsapp/enviar-texto
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino, con código de país. |
mensaje | Sí | Texto a enviar. |
account_id | Opcional | Cuenta emisora, si tienes más de una. |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-texto \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321&mensaje=Hola!+tu+pedido+ya+esta+listo"
Multimedia (imagen, video, audio, documento, sticker)
POST/whatsapp/enviar-multimedia
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino. |
tipo | Sí | image, video, audio o document. |
media_base64 | Sí | Contenido del archivo, en base64. |
caption | Opcional | Texto que acompaña la imagen/video/documento. |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-multimedia \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321&tipo=image&caption=Tu+comprobante&media_base64=/9j/4AAQSkZJRg..."
Ubicación
POST/whatsapp/enviar-ubicacion
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino. |
latitud / longitud | Sí | Coordenadas decimales. |
nombre | Opcional | Nombre del lugar (ej. "Tienda Arequipa"). |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-ubicacion \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321&latitud=-16.409&longitud=-71.537&nombre=Tienda+Arequipa"
Contacto
POST/whatsapp/enviar-contacto
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino. |
contacto_nombre | Sí | Nombre a mostrar en la tarjeta de contacto. |
contacto_numero | Sí | Número del contacto que se comparte. |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-contacto \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321&contacto_nombre=Soporte+MBL&contacto_numero=51999999999"
Botones de respuesta rápida
POST/whatsapp/enviar-botones — hasta 3 botones que el contacto puede tocar en vez de escribir.
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino. |
texto | Sí | Cuerpo del mensaje. |
pie | Opcional | Texto pequeño debajo de los botones. |
botones | Sí | Array de objetos {"id": "op1", "texto": "Sí, confirmar"}. |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-botones \
-H "Authorization: Bearer TU_API_TOKEN" -H "Content-Type: application/json" \
-d '{
"numero": "51987654321",
"texto": "¿Confirmas tu cita de mañana 3pm?",
"botones": [
{"id": "confirmar", "texto": "Sí, confirmar"},
{"id": "cancelar", "texto": "Cancelar"}
]
}'
Listas
POST/whatsapp/enviar-lista — menú desplegable con secciones, para más de 3 opciones.
| Nombre | Requerido | Descripción |
|---|---|---|
numero | Sí | Número destino. |
texto | Sí | Cuerpo del mensaje. |
titulo / texto_boton / pie | Opcional | Título de la lista, texto del botón que la abre, y pie de página. |
secciones | Sí | Array de {"titulo": "...", "filas": [{"id":"...", "titulo":"...", "descripcion":"..."}]}. |
curl -X POST https://mblapirest.com/api/v1/whatsapp/enviar-lista \
-H "Authorization: Bearer TU_API_TOKEN" -H "Content-Type: application/json" \
-d '{
"numero": "51987654321",
"texto": "Elige el servicio que te interesa",
"texto_boton": "Ver opciones",
"secciones": [
{"titulo": "Consultas", "filas": [
{"id": "dni", "titulo": "Consulta DNI", "descripcion": "Validación de identidad"},
{"id": "ruc", "titulo": "Consulta RUC", "descripcion": "Datos de empresa"}
]}
]
}'
Marcar como leído
POST/whatsapp/marcar-leido — marca los mensajes de un contacto como leídos (doble check azul).
curl -X POST https://mblapirest.com/api/v1/whatsapp/marcar-leido \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321"
3. Funciones avanzadas
Vinculación por código, reacciones, edición/eliminación de mensajes, gestión de chats, grupos, difusión, estados, encuestas y más. Cada una requiere su propia función habilitada en la cuenta (ver tabla). Todos reciben account_id igual que los envíos básicos.
| Acción | Endpoint | Función requerida | Parámetros principales |
|---|---|---|---|
| Generar código de vinculación (alternativa al QR) | POST/whatsapp/generar-codigo-emparejamiento | pairing_code | phone_for_pairing |
| Reaccionar a un mensaje | POST/whatsapp/reaccionar-mensaje | reacciones | numero, message_id, reaccion (emoji) |
| Editar un mensaje enviado | POST/whatsapp/editar-mensaje | editar_mensaje | numero, message_id, nuevo_texto |
| Eliminar un mensaje para todos | POST/whatsapp/eliminar-mensaje | eliminar_mensaje | numero, message_id |
| Archivar/desarchivar una conversación | POST/whatsapp/archivar-chat | archivar_chats | numero, archivar (bool, opcional) |
| Fijar/desfijar una conversación | POST/whatsapp/fijar-mensaje | fijar_chats | numero, anclar (bool, opcional) |
| Silenciar una conversación | POST/whatsapp/silenciar-chat | silenciar_chats | numero, duracion (segundos, opcional) |
| Consultar la foto de perfil de un contacto | POST/whatsapp/obtener-foto-perfil | foto_perfil | numero |
| Bloquear/desbloquear un contacto | POST/whatsapp/bloquear-contacto | bloquear_contactos | numero, bloquear (bool, opcional) |
| Crear un grupo | POST/whatsapp/crear-grupo | grupos | nombre, participantes (array de números) |
| Listar miembros de un grupo | POST/whatsapp/obtener-miembros-grupo | grupos | jid_grupo |
| Consultar una lista de difusión | POST/whatsapp/obtener-info-difusion | difusion | broadcast_id |
| Enviar un mensaje de difusión a varios contactos | POST/whatsapp/enviar-difusion | difusion | mensaje, destinatarios (array de números) |
| Publicar un estado/historia | POST/whatsapp/publicar-estado | estados | tipo (image/video), media_base64, caption (opcional) |
| Ver el estado de un contacto | POST/whatsapp/ver-estado | estados | numero |
| Eliminar tu propio estado | POST/whatsapp/eliminar-estado | estados | status_id |
| Enviar un mensaje con vista previa de un link | POST/whatsapp/enviar-vista-previa-link | vista_previa_link | numero, texto, link |
| Crear una encuesta | POST/whatsapp/crear-encuesta | encuestas | numero, pregunta, opciones (array, mínimo 2) |
| Votar en una encuesta | POST/whatsapp/votar-encuesta | encuestas | numero, encuesta_id, opcion_seleccionada |
| Enviar ubicación en vivo | POST/whatsapp/enviar-ubicacion-en-vivo | ubicacion_en_vivo | numero, latitud, longitud, duracion (segundos), nombre (opcional) |
| Actualizar tu foto de perfil | POST/whatsapp/actualizar-foto-perfil | actualizar_foto_perfil | media_base64 |
| Actualizar tu texto de info/about | POST/whatsapp/actualizar-info-perfil | actualizar_info_perfil | texto |
| Consultar notificaciones no leídas | POST/whatsapp/obtener-notificaciones-no-leidas | notificaciones | — |
| Marcar notificaciones como leídas | POST/whatsapp/marcar-notificaciones-leidas | notificaciones | numero |
curl -X POST https://mblapirest.com/api/v1/whatsapp/reaccionar-mensaje \
-H "Authorization: Bearer TU_API_TOKEN" \
-d "numero=51987654321&message_id=3EB0ABC123&reaccion=%F0%9F%91%8D"
4. Recibir mensajes y descargar multimedia
Los mensajes entrantes se guardan automáticamente y quedan visibles en el panel (/mi-cuenta/whatsapp/conversaciones). Para bajar un archivo multimedia recibido por API:
GET/whatsapp/cuentas/{id}/media/{archivo}
{archivo} es el nombre de archivo que acompaña al mensaje entrante (formato id_del_mensaje.ext). Requiere que tu cuenta tenga habilitada la función "Descargar multimedia recibido".
Respuesta de error típica
{
"success": false,
"message": "Esta cuenta no tiene habilitado el envio de botones."
}
| Código | Motivo |
|---|---|
| 404 | account_id no existe, no es tuyo, o tienes varias cuentas y no lo mandaste. |
| 403 | La función usada (ver claves en la tabla de la sección 3, más texto/multimedia/ubicación/contactos/botones/listas/marcar_leido/descargar_media) no está habilitada en esa cuenta. |
| 502 | El número no está conectado a WhatsApp en este momento (revisa el estado o vuelve a vincular por QR). |
Última actualización: 03/09/2026