What's new, 21 October 2026: A customer who sends several messages before the bot's first reply no longer gets the opening sequence of a Chat Flow twice
WASync · Developers

Su primera llamada

Liste las conexiones a las que puede acceder su clave y compruebe que tiene capacidad antes de aprovisionar otra.

URL base https://developers.wasync.app/api/v1.

Liste las conexiones que puede usar

GET /connections
curl https://developers.wasync.app/api/v1/connections \
  -H "Authorization: Bearer $WASYNC_API_KEY"

Solo aparecen las conexiones con una licencia activa. Cada una incluye un provider con valor qr o cloud_api, un id (un cuid: el identificador estable que debe guardar junto al registro de su propio cliente) y un status. Usa whatsapp.read.

¿Ya llama a cloudapi.wasync.app/api/v1? Siga haciéndolo.

developers.wasync.app es el host canónico, pero cloudapi.wasync.app es un alias permanente de exactamente la misma API (mismas claves, mismas rutas, mismas respuestas) y seguirá siendo válido indefinidamente. Ninguna integración existente tiene que cambiar nada. Los endpoints de OAuth, los documentos /.well-known/… y la URL del servidor MCP son identificadores de protocolo registrados por los clientes: se quedan en cloudapi.wasync.app a propósito.

Compruebe su capacidad antes de prometerla

GET /account
curl https://developers.wasync.app/api/v1/account \
  -H "Authorization: Bearer $WASYNC_API_KEY"
200 response
{
  "slots": {
    "total": 30,
    "used": 28,
    "available": 2,
    "nextExpiry": "2027-08-08T09:00:00.000Z"
  },
  "connections": {
    "total": 28,
    "connected": 27,
    "needsReconnect": 1
  }
}

slots.available le indica si puede incorporar otro número ahora mismo, y nextExpiry es la fecha antes de la cual debe facturar a su propio cliente, para que un slot nunca venza bajo los pies de alguien que ya le ha pagado. connections.needsReconnect cuenta los números que esperan en este momento a que su titular escanee un QR; suscríbase a los eventos de conexión para enterarse en cuanto ese número cambie, en lugar de consultarlo de forma periódica. Usa whatsapp.read.

Un slot es capacidad, no un número de teléfono. Si elimina una conexión, su slot vuelve a su reserva con el tiempo que le quede; el siguiente número que conecte lo toma automáticamente. Así puede pasar un slot pagado de un cliente que se va a uno nuevo sin pagar dos veces.

Conecte un número

Una sola llamada crea la conexión y devuelve un código QR para escanear. Funciona en un workspace recién creado, sin ninguna conexión: con una clave no hay nada que pulsar antes en un portal.

POST /connections
curl -X POST https://developers.wasync.app/api/v1/connections \
  -H "Authorization: Bearer $WASYNC_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"label":"Support line"}'
201 response
{
  "connection": {
    "id": "conn_8f3a21",
    "status": "connecting",
    "qr": "data:image/png;base64,iVBORw0KGgo…"
  }
}

El QR que recibe aquí no sigue siendo válido

WhatsApp rota el código de emparejamiento aproximadamente cada 20 segundos, así que el qr de la respuesta de creación queda obsoleto a los pocos segundos de mostrarse. Esto falla sin avisar: el teléfono nunca se empareja y nada en pantalla explica el motivo. Consulte GET /connections/{id} cada 3–5 s y vuelva a dibujar el qr con cada respuesta. No lo guarde en caché ni oculte la actualización tras un botón que el usuario tenga que pulsar. Código de emparejamiento y QR explica la alternativa para un solo dispositivo.

Usa whatsapp.manage. Las conexiones creadas de este modo son números qr; los números cloud_api se incorporan mediante Meta Embedded Signup. Este endpoint es solo para workspaces independientes: a un portal de Bitrix24 se le responde con 403 forbidden_portal_kind, porque allí las conexiones las crea el administrador del portal dentro de WASync. Envíe un Idempotency-Key: crear una conexión consume un slot de pago, y un reintento tras un tiempo de espera agotado sin él le cobra dos. Errores e idempotencia recoge los cuatro casos que debe gestionar.

¿Le resultó útil esta página?

On this page