api · Documentación
Iniciar sesión

WhatsApp

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.

Cada cuenta de WhatsApp tiene "funciones" habilitadas por separado (texto, multimedia, ubicación, contactos, botones, listas, marcar leído, descargar multimedia, y las funciones avanzadas de la sección 4) — si intentas usar una que no está activada en tu plan, la API responde 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

NombreRequeridoDescripción
phone_numberNúmero con código de país, sin espacios ni símbolos (ej. 51987654321).
providerOpcionalEtiqueta 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ónEndpoint
Listar mis cuentasGET/whatsapp/cuentas
Actualizar (cambiar número)PUT/whatsapp/cuentas/{id} — vuelve a pedir vinculación por QR.
EliminarDELETE/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

NombreRequeridoDescripción
numeroNúmero destino, con código de país.
mensajeTexto a enviar.
account_idOpcionalCuenta 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

NombreRequeridoDescripción
numeroNúmero destino.
tipoimage, video, audio o document.
media_base64Contenido del archivo, en base64.
captionOpcionalTexto 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

NombreRequeridoDescripción
numeroNúmero destino.
latitud / longitudCoordenadas decimales.
nombreOpcionalNombre 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

NombreRequeridoDescripción
numeroNúmero destino.
contacto_nombreNombre a mostrar en la tarjeta de contacto.
contacto_numeroNú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.

NombreRequeridoDescripción
numeroNúmero destino.
textoCuerpo del mensaje.
pieOpcionalTexto pequeño debajo de los botones.
botonesArray 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.

NombreRequeridoDescripción
numeroNúmero destino.
textoCuerpo del mensaje.
titulo / texto_boton / pieOpcionalTítulo de la lista, texto del botón que la abre, y pie de página.
seccionesArray 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ónEndpointFunción requeridaParámetros principales
Generar código de vinculación (alternativa al QR)POST/whatsapp/generar-codigo-emparejamientopairing_codephone_for_pairing
Reaccionar a un mensajePOST/whatsapp/reaccionar-mensajereaccionesnumero, message_id, reaccion (emoji)
Editar un mensaje enviadoPOST/whatsapp/editar-mensajeeditar_mensajenumero, message_id, nuevo_texto
Eliminar un mensaje para todosPOST/whatsapp/eliminar-mensajeeliminar_mensajenumero, message_id
Archivar/desarchivar una conversaciónPOST/whatsapp/archivar-chatarchivar_chatsnumero, archivar (bool, opcional)
Fijar/desfijar una conversaciónPOST/whatsapp/fijar-mensajefijar_chatsnumero, anclar (bool, opcional)
Silenciar una conversaciónPOST/whatsapp/silenciar-chatsilenciar_chatsnumero, duracion (segundos, opcional)
Consultar la foto de perfil de un contactoPOST/whatsapp/obtener-foto-perfilfoto_perfilnumero
Bloquear/desbloquear un contactoPOST/whatsapp/bloquear-contactobloquear_contactosnumero, bloquear (bool, opcional)
Crear un grupoPOST/whatsapp/crear-grupogruposnombre, participantes (array de números)
Listar miembros de un grupoPOST/whatsapp/obtener-miembros-grupogruposjid_grupo
Consultar una lista de difusiónPOST/whatsapp/obtener-info-difusiondifusionbroadcast_id
Enviar un mensaje de difusión a varios contactosPOST/whatsapp/enviar-difusiondifusionmensaje, destinatarios (array de números)
Publicar un estado/historiaPOST/whatsapp/publicar-estadoestadostipo (image/video), media_base64, caption (opcional)
Ver el estado de un contactoPOST/whatsapp/ver-estadoestadosnumero
Eliminar tu propio estadoPOST/whatsapp/eliminar-estadoestadosstatus_id
Enviar un mensaje con vista previa de un linkPOST/whatsapp/enviar-vista-previa-linkvista_previa_linknumero, texto, link
Crear una encuestaPOST/whatsapp/crear-encuestaencuestasnumero, pregunta, opciones (array, mínimo 2)
Votar en una encuestaPOST/whatsapp/votar-encuestaencuestasnumero, encuesta_id, opcion_seleccionada
Enviar ubicación en vivoPOST/whatsapp/enviar-ubicacion-en-vivoubicacion_en_vivonumero, latitud, longitud, duracion (segundos), nombre (opcional)
Actualizar tu foto de perfilPOST/whatsapp/actualizar-foto-perfilactualizar_foto_perfilmedia_base64
Actualizar tu texto de info/aboutPOST/whatsapp/actualizar-info-perfilactualizar_info_perfiltexto
Consultar notificaciones no leídasPOST/whatsapp/obtener-notificaciones-no-leidasnotificaciones
Marcar notificaciones como leídasPOST/whatsapp/marcar-notificaciones-leidasnotificacionesnumero
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ódigoMotivo
404account_id no existe, no es tuyo, o tienes varias cuentas y no lo mandaste.
403La 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.
502El 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