Saltar al contenido
Wbiztool

API de cuentas de WhatsApp

Conectar un número de WhatsApp (API)

Inicia la conexión de un número de WhatsApp a tu espacio de trabajo desde tu propia app. Wbiztool abre una nueva sesión de WhatsApp y envía el código QR a la URL de tu webhook. Muéstraselo al propietario del teléfono, que lo escanea desde WhatsApp, y el número queda listo para enviar mensajes.

¿Vas a vincular tu propio número a mano? Sigue Conecta tu número de WhatsApp.

POSThttps://wbiztool.com/api/v1/whatsapp/connect/

Cuerpo: JSON o campos de formulario

POST /api/v1/whatsapp-client/create/ es un alias idéntico: ejecuta el mismo código y devuelve las mismas respuestas. Las dos rutas siguen funcionando.

Cómo funciona la conexión#

La llamada a la API solo inicia la conexión. El código QR llega más tarde, a la URL de tu webhook.

  1. Llama a la API de conexión

    Envía el número de teléfono y tu webhook_url. La respuesta te da un whatsapp_client_id. Guárdalo.

  2. Recibe el código QR

    Tu webhook recibe status=qr_generated con la imagen del QR en qr_image. Muestra esa imagen a la persona propietaria del teléfono. El código QR se vuelve a enviar cada varios segundos mientras Wbiztool espera el escaneo, así que muestra siempre el más reciente. La persona tiene unos dos minutos para escanearlo. Después de ese tiempo, o si WhatsApp pide recargar el código, recibes not_connected; vuelve a llamar a la API para obtener un código nuevo.

  3. Escanéalo desde WhatsApp

    En el teléfono, abre WhatsApp → Dispositivos vinculadosVincular un dispositivo y escanea el código.

  4. Obtén el resultado

    Tu webhook recibe status=connected cuando el número queda vinculado, o status=not_connected si el código no se escaneó a tiempo o la conexión falló. El evento connected puede llegar unos segundos antes de que Estado de conexión devuelva Connected. Responde primero al webhook y luego consulta Estado de conexión cada pocos segundos durante hasta un minuto. No lo compruebes una sola vez desde dentro del manejador de tu webhook.

Ejemplo rápido#

curl -X POST https://wbiztool.com/api/v1/whatsapp/connect/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_number": "919876543210",
    "webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET"
  }'

Sustituye 12345 y YOUR_API_KEY por tus propios valores. Consulta Autenticación para saber dónde encontrarlos.

Parámetros de la solicitud#

client_idintegerobligatorio

Tu ID de cliente de la API, de Configuración → Claves API.

api_keystringobligatorio

Tu clave API, de esa misma página. El número se añade al espacio de trabajo en el que se creó esta clave.

whatsapp_numberstringobligatorio

El número de WhatsApp que quieres conectar, con código de país, como 919876543210. Se guarda exactamente como lo envías (hasta 20 caracteres), así que envía solo dígitos, sin +, espacios ni guiones. Los valores más largos fallan con HTTP 500. El mismo número escrito de otra forma cuenta como un número distinto.

webhook_urlstringObligatorio para recibir el código QR

Tu URL http o https que recibe el código QR y las novedades de la conexión, de hasta 250 caracteres (las URL más largas fallan con HTTP 500). La API acepta una solicitud sin ella, pero entonces no se te envía nada y no tienes forma de obtener el código QR a través de la API. Consulta Eventos del webhook.

Usar los clientes oficiales#

El cliente de Python llama a /api/v1/whatsapp-client/create/ por ti.

Python
from wbiztool_client import WbizToolClient

client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)

result = client.create_whatsapp_client(
    whatsapp_number="919876543210",
    webhook_url="https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
)
print(result)

El cliente de Python lanza requests.exceptions.HTTPError cuando la API devuelve HTTP 400 o 403, así que envuelve la llamada en un try/except.

Respuesta#

Cuando se crea la solicitud de conexión, la API devuelve HTTP 200:

{
  "message": "Whatsapp Client Created",
  "whatsapp_client_id": 678,
  "status": 1
}
CampoTipoDescripción
statusinteger1 si se creó la solicitud de conexión, 0 si falló.
messagestringWhatsapp Client Created si todo va bien; en caso contrario, el error.
whatsapp_client_idintegerID del número de WhatsApp. Úsalo como whatsapp_client en otras llamadas a la API. Solo aparece si la solicitud es correcta.

"status": 1 significa que la solicitud se creó, no que el número esté conectado. Si vuelves a llamar a la API con un número que ya se había añadido pero no está conectado, recibes el mismo whatsapp_client_id y se inicia un nuevo intento de conexión.

Errores#

MensajeHTTPCómo solucionarlo
whatsapp_number cant be null200Envía whatsapp_number. Esto se comprueba primero, así que también aparece cuando el cuerpo JSON no es válido.
Auth Error200Envía client_id y api_key.
Invalid Client Id403Envía client_id como número entero, por ejemplo 12345.
Auth Error: invalid api key400Comprueba que la clave existe, que no se ha eliminado y que pertenece a este client_id.
Higher Subscription Required200Tu plan no incluye esta API. Mejora tu plan.
WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit200Ya tienes tantos números conectados como permite tu plan. Desconecta uno o mejora tu plan.
Already Connected With Given Number200Este número ya está conectado en este espacio de trabajo. No hay nada que hacer. Si ya estás en el límite de números de tu plan, recibes WhatsApp Account Limit Reached en su lugar, incluso para un número que ya está conectado.

Una solicitud que no sea POST devuelve un objeto vacío {} con HTTP 200.

Si el mismo propietario de la cuenta ya añadió este número en otro espacio de trabajo, la solicitud puede fallar con HTTP 500. Conecta el número desde la configuración de WhatsApp en el espacio de trabajo que quieras, o contacta con soporte.

Eventos del webhook#

Wbiztool envía un POST a tu webhook_url en cada paso. El cuerpo va codificado como formulario (application/x-www-form-urlencoded), no como JSON.

Código QR listo (se vuelve a enviar cada varios segundos mientras se espera el escaneo, a menudo con la misma URL):

status=qr_generated&whatsapp_client_id=678&qr_image=...

Número conectado (puede enviarse más de una vez para la misma conexión):

status=connected&whatsapp_client_id=678

Conexión fallida, por ejemplo porque el código QR no se escaneó a tiempo:

status=not_connected&whatsapp_client_id=678
CampoValores
statusqr_generated, connected o not_connected
whatsapp_client_idEl whatsapp_client_id que devolvió la API.
qr_imageSolo con qr_generated. Puede ser una URL data: que contiene la imagen en base64 o una URL https de la imagen. Contempla ambos casos. La URL https es la misma en cada renovación del mismo número, mientras que la imagen cambia. Añade un parámetro para evitar la caché al mostrarla (por ejemplo ?t=<timestamp>), o el navegador puede seguir mostrando un código caducado.

Tu URL debe ser accesible públicamente y debería responder en pocos segundos. Wbiztool espera tu respuesta sin límite de tiempo. Si no se puede acceder a tu servidor, el intento de conexión puede detenerse antes de que el número se guarde como conectado. Se acepta cualquier código de estado HTTP. Los envíos fallidos no se reintentan, y no se envía nada si el número se desconecta más adelante. Para hacer seguimiento de un número después de conectarlo, consulta periódicamente Estado de conexión.

Consultas periódicas en lugar de webhooks#

Si tu servidor no puede recibir webhooks, sigues necesitando el webhook para obtener el código QR, pero no tienes que depender de él para el resultado. Después de escanear el código QR, llama a Estado de conexión con el whatsapp_client_id cada pocos segundos hasta que devuelva Connected. Listar cuentas muestra lo mismo para todos tus números.

Consejos#

  • Gestiona los eventos duplicados: connected puede llegar dos veces. Haz que tu código pueda ejecutarse más de una vez sin problemas.
  • Muestra el código QR más reciente: sustituye la imagen cada vez que llegue un nuevo evento qr_generated, añadiendo un parámetro para evitar la caché a una URL https. Los códigos anteriores dejan de funcionar.
  • Escanea en unos dos minutos: después recibes not_connected. Vuelve a llamar a la API para obtener un código nuevo.
  • ¿No llega ningún código QR tras 10 minutos? La solicitud caducó. Vuelve a llamar a la API.
  • Conectar desde el panel es más sencillo cuando vinculas tu propio número. Usa la configuración de WhatsApp y escanea allí el código.