API account WhatsApp
Collegare un numero WhatsApp (API)
Avvia il collegamento di un numero WhatsApp al tuo spazio di lavoro dalla tua app. Wbiztool apre una nuova sessione WhatsApp e invia il codice QR al tuo URL webhook. Mostralo al proprietario del telefono, che lo scansiona da WhatsApp, e il numero è pronto per inviare messaggi.
Colleghi il tuo numero a mano? Segui Collega il tuo numero WhatsApp.
https://wbiztool.com/api/v1/whatsapp/connect/Corpo: JSON o campi di un modulo
POST /api/v1/whatsapp-client/create/ è un alias identico: esegue lo stesso codice e restituisce le stesse risposte. Entrambi i percorsi continuano a funzionare.
Come funziona il collegamento#
La chiamata API avvia soltanto il collegamento. Il codice QR arriva in un secondo momento, al tuo URL webhook.
Chiama l'API di collegamento
Invia il numero di telefono e il tuo
webhook_url. La risposta ti restituisce unwhatsapp_client_id. Salvalo.Ricevi il codice QR
Il tuo webhook riceve
status=qr_generatedcon l'immagine QR inqr_image. Mostra quell'immagine alla persona proprietaria del telefono. Il codice QR viene inviato di nuovo ogni pochi secondi mentre Wbiztool attende la scansione, quindi mostra sempre il più recente. La persona ha circa due minuti per scansionarlo. Dopo questo tempo, o se WhatsApp chiede di ricaricare il codice, ricevinot_connected; chiama di nuovo l'API per ottenere un nuovo codice.Scansionalo da WhatsApp
Sul telefono, apri WhatsApp → Dispositivi collegati → Collega un dispositivo e scansiona il codice.
Ottieni il risultato
Il tuo webhook riceve
status=connectedquando il numero è collegato, oppurestatus=not_connectedse il codice non è stato scansionato in tempo o il collegamento non è riuscito. L'eventoconnectedpuò arrivare qualche secondo prima che Stato della connessione restituiscaConnected. Rispondi prima al webhook, poi interroga Stato della connessione ogni pochi secondi per un minuto al massimo. Non controllarlo una sola volta dall'interno del gestore del webhook.
Esempio rapido#
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"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/whatsapp/connect/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_number": "919876543210",
"webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
},
timeout=30,
)
result = response.json() # read the body even when the HTTP code is 400 or 403
if result.get("status") == 1:
print("Waiting for QR code, whatsapp_client_id", result["whatsapp_client_id"])
else:
print("Failed:", result.get("message"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/whatsapp/connect/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_number: "919876543210",
webhook_url: "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400 or 403
if (result.status === 1) {
console.log("Waiting for QR code, whatsapp_client_id", result.whatsapp_client_id);
} else {
console.error("Failed:", result.message);
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_number' => '919876543210',
'webhook_url' => 'https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET',
];
$ch = curl_init('https://wbiztool.com/api/v1/whatsapp/connect/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Waiting for QR code, whatsapp_client_id ' . $result['whatsapp_client_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Sostituisci 12345 e YOUR_API_KEY con i tuoi valori. Consulta Autenticazione per sapere dove trovarli.
Parametri della richiesta#
client_idintegerobbligatorioIl tuo ID Client API, da Impostazioni → Chiavi API.
api_keystringobbligatorioLa tua chiave API, dalla stessa pagina. Il numero viene aggiunto allo spazio di lavoro in cui è stata creata questa chiave.
whatsapp_numberstringobbligatorioIl numero WhatsApp da collegare, con prefisso internazionale, ad esempio
919876543210. Viene salvato esattamente come lo invii (fino a 20 caratteri), quindi invia solo cifre, senza+, spazi o trattini. I valori più lunghi non riescono con HTTP500. Lo stesso numero scritto in modo diverso conta come un numero diverso.webhook_urlstringObbligatorio per ricevere il codice QRIl tuo URL
httpohttpsche riceve il codice QR e gli aggiornamenti sul collegamento, fino a 250 caratteri (gli URL più lunghi non riescono con HTTP500). L'API accetta una richiesta anche senza, ma in quel caso non ti viene inviato nulla e non hai modo di ottenere il codice QR tramite l'API. Vedi Eventi webhook.
Usare i client ufficiali#
Il client Python chiama /api/v1/whatsapp-client/create/ per te.
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)Il client Python solleva requests.exceptions.HTTPError quando l'API restituisce HTTP 400 o 403, quindi racchiudi la chiamata in un try/except.
Risposta#
Quando la richiesta di collegamento viene creata, l'API restituisce HTTP 200:
{
"message": "Whatsapp Client Created",
"whatsapp_client_id": 678,
"status": 1
}
| Campo | Tipo | Descrizione |
|---|---|---|
status | integer | 1 se la richiesta di collegamento è stata creata, 0 se non è riuscita. |
message | string | Whatsapp Client Created in caso di successo, altrimenti l'errore. |
whatsapp_client_id | integer | ID del numero WhatsApp. Usalo come whatsapp_client nelle altre chiamate API. Presente solo in caso di successo. |
"status": 1 significa che la richiesta è stata creata, non che il numero sia collegato. Se chiami di nuovo l'API per un numero aggiunto in precedenza ma non collegato, ricevi lo stesso whatsapp_client_id e parte un nuovo tentativo di collegamento.
Errori#
| Messaggio | HTTP | Come risolvere |
|---|---|---|
whatsapp_number cant be null | 200 | Invia whatsapp_number. Questo controllo viene eseguito per primo, quindi il messaggio compare anche quando il corpo JSON non è valido. |
Auth Error | 200 | Invia sia client_id sia api_key. |
Invalid Client Id | 403 | Invia client_id come numero intero, ad esempio 12345. |
Auth Error: invalid api key | 400 | Verifica che la chiave esista, non sia stata eliminata e appartenga a questo client_id. |
Higher Subscription Required | 200 | Il tuo piano non include questa API. Passa a un piano superiore. |
WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit | 200 | Hai già tutti i numeri collegati consentiti dal tuo piano. Scollegane uno o passa a un piano superiore. |
Already Connected With Given Number | 200 | Questo numero è già collegato in questo spazio di lavoro. Non devi fare nulla. Se hai già raggiunto il limite di numeri del tuo piano, ricevi invece WhatsApp Account Limit Reached, anche per un numero già collegato. |
Una richiesta che non è una POST restituisce un oggetto vuoto {} con HTTP 200.
Se lo stesso proprietario dell'account ha già aggiunto questo numero in un altro spazio di lavoro, la richiesta può non riuscire con HTTP 500. Collega il numero dalle Impostazioni WhatsApp nello spazio di lavoro che preferisci, oppure contatta l'assistenza.
Eventi webhook#
Wbiztool invia una POST al tuo webhook_url a ogni passaggio. Il corpo è codificato come modulo (application/x-www-form-urlencoded), non JSON.
Codice QR pronto (inviato di nuovo ogni pochi secondi durante l'attesa della scansione, spesso con lo stesso URL):
status=qr_generated&whatsapp_client_id=678&qr_image=...
Numero collegato (può essere inviato più di una volta per lo stesso collegamento):
status=connected&whatsapp_client_id=678
Collegamento non riuscito, ad esempio perché il codice QR non è stato scansionato in tempo:
status=not_connected&whatsapp_client_id=678
| Campo | Valori |
|---|---|
status | qr_generated, connected o not_connected |
whatsapp_client_id | Il whatsapp_client_id restituito dall'API. |
qr_image | Solo con qr_generated. Può essere un URL data: contenente l'immagine in base64 oppure un URL https dell'immagine. Gestisci entrambi i casi. L'URL https resta lo stesso per ogni aggiornamento dello stesso numero, mentre l'immagine a cui punta cambia. Aggiungi una query per evitare la cache quando la mostri (ad esempio ?t=<timestamp>), altrimenti il browser potrebbe continuare a mostrare un codice scaduto. |
Il tuo URL deve essere raggiungibile pubblicamente e dovrebbe rispondere entro pochi secondi. Wbiztool attende la tua risposta senza timeout. Se il tuo server non è raggiungibile, il tentativo di collegamento può interrompersi prima che il numero venga salvato come collegato. È accettato qualsiasi codice di stato HTTP. Le consegne non riuscite non vengono ritentate e non viene inviato nulla se in seguito il numero si scollega. Per seguire un numero dopo il collegamento, interroga periodicamente Stato della connessione.
Polling al posto dei webhook#
Se il tuo server non può ricevere webhook, il webhook ti serve comunque per ottenere il codice QR, ma non devi dipendere da esso per il risultato. Dopo la scansione del codice QR, chiama Stato della connessione con il whatsapp_client_id ogni pochi secondi finché non restituisce Connected. Elenca account mostra la stessa informazione per tutti i tuoi numeri.
Suggerimenti#
- Gestisci gli eventi duplicati:
connectedpuò arrivare due volte. Fai in modo che il tuo handler possa essere eseguito più volte senza problemi. - Mostra il codice QR più recente: sostituisci l'immagine ogni volta che arriva un nuovo evento
qr_generated, aggiungendo una query per evitare la cache a un URLhttps. I codici precedenti smettono di funzionare. - Scansiona entro circa due minuti: dopo questo tempo ricevi
not_connected. Chiama di nuovo l'API per un nuovo codice. - Nessun codice QR dopo 10 minuti? La richiesta è scaduta. Chiama di nuovo l'API.
- Collegare dalla dashboard è più semplice quando colleghi il tuo numero. Usa le Impostazioni WhatsApp e scansiona lì il codice.
