Il tuo primo utilizzo
Elenca le connessioni raggiungibili con la tua chiave e verifica di avere capacità disponibile prima di attivarne un'altra.
Base URL https://developers.wasync.app/api/v1.
Elencare le connessioni che puoi usare
curl https://developers.wasync.app/api/v1/connections \
-H "Authorization: Bearer $WASYNC_API_KEY"Compaiono solo le connessioni con una licenza attiva. Ciascuna riporta un provider pari a
qr o cloud_api, un id (un cuid: l'identificatore stabile che dovresti memorizzare
insieme al record del tuo cliente) e uno status. Usa whatsapp.read.
Chiami già cloudapi.wasync.app/api/v1? Continua pure.
developers.wasync.app è l'host canonico, ma cloudapi.wasync.app è un
alias permanente della stessa identica API: stesse chiavi, stessi percorsi, stesse
risposte, e resta valido a tempo indeterminato. Nessuna integrazione esistente deve
cambiare nulla. Gli endpoint OAuth, i documenti /.well-known/… e l'URL del server
MCP sono identificatori di protocollo registrati dai client: restano di proposito su
cloudapi.wasync.app.
Verificare la capacità prima di prometterla
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 indica se puoi attivare subito un altro numero, e nextExpiry
è la data entro cui devi fatturare il tuo cliente: così uno slot non scade mai
sotto i piedi di chi ti ha già pagato.
connections.needsReconnect conta i numeri che attendono che il proprietario
scansioni un QR; iscriviti agli eventi di connessione per
essere avvisato nel momento in cui quel numero cambia, invece di fare polling.
Usa whatsapp.read.
Uno slot è capacità, non un numero di telefono. Se elimini una connessione, il suo slot torna nel tuo pool con il tempo che gli resta: il prossimo numero che colleghi lo recupera automaticamente. Così puoi spostare uno slot già pagato da un cliente in uscita a uno nuovo senza pagare due volte.
Collegare un numero
Una sola chiamata crea la connessione e restituisce un codice QR da scansionare. Funziona su uno spazio di lavoro nuovo, senza alcuna connessione: con una chiave non c'è nulla da cliccare prima in un portale.
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…"
}
}Il QR che ricevi qui non resta valido
WhatsApp cambia il codice di abbinamento circa ogni 20 secondi, quindi il qr
nella risposta di creazione è già scaduto pochi secondi dopo la visualizzazione. L'errore
è silenzioso: il telefono non si abbina e nulla a schermo ne spiega il motivo. Interroga
GET /connections/{id} ogni 3–5 s e ridisegna il qr a partire da ogni risposta.
Non memorizzarlo in cache e non nascondere l'aggiornamento dietro un pulsante che
l'utente deve premere. Codice di abbinamento e QR
descrive l'alternativa con un solo dispositivo.
Usa whatsapp.manage. Le connessioni create in questo modo sono numeri qr;
i numeri cloud_api si attivano invece tramite Meta Embedded Signup. Questo
endpoint è disponibile solo per gli spazi di lavoro standalone: un portale Bitrix24
riceve 403 forbidden_portal_kind, perché lì le connessioni le crea
l'amministratore del portale all'interno di WASync. Invia un Idempotency-Key:
creare una connessione consuma uno slot a pagamento, e un nuovo tentativo dopo un
timeout senza chiave te ne fa acquistare due.
Errori e idempotenza descrive i quattro casi
da gestire.
Creare un account e una chiave
Due modi per ottenere una chiave: dall'interno di Bitrix24, oppure nella console sviluppatori con e-mail e password. Nessun redirect URI, nessun PKCE, nessuna schermata di consenso.
Il tuo primo messaggio
Invia un testo WhatsApp, rileggi la conversazione e mostra al cliente la doppia spunta blu.