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
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
curl https://developers.wasync.app/api/v1/account \
-H "Authorization: Bearer $WASYNC_API_KEY"{
"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.
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"}'{
"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.
Cree una cuenta y una clave
Dos formas de obtener una clave: desde Bitrix24, o en la consola de desarrolladores con un correo electrónico y una contraseña. Sin redirect URI, sin PKCE, sin pantalla de consentimiento.
Su primer mensaje
Envíe un texto de WhatsApp, lea la conversación y dé al cliente los checks azules.