API v2 (Beta)
Nummern
Eine Nummer ist eine WhatsApp-Nummer oder ein Telegram-Konto, das mit Ihrem Arbeitsbereich verbunden ist. Ihre id ist das from, mit dem Sie Nachrichten senden. Mit der API v2 listen Sie sie auf, sehen, ob jede verbunden ist, und verbinden eine WhatsApp-Nummer aus Ihrer eigenen App, per QR-Code oder Kopplungscode.
| Vorgang | Endpoint | Scope |
|---|---|---|
| Nummern auflisten | GET /api/v2/numbers | numbers |
| Eine Nummer abrufen | GET /api/v2/numbers/{id} | numbers |
| WhatsApp-Nummer verbinden | POST /api/v2/numbers | numbers |
Ein auf einige Nummern beschränkter Schlüssel sieht und verbindet nur diese neu und kann keine Nummer hinzufügen.
Nummern auflisten#
https://wbiztool.com/api/v2/numbersAlle Nummern des Arbeitsbereichs, die älteste zuerst, in einer einzigen data-Liste (ohne Seiten).
curl https://wbiztool.com/api/v2/numbers \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"import os
import requests
response = requests.get(
"https://wbiztool.com/api/v2/numbers",
headers={"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}"},
timeout=30,
)
for number in response.json()["data"]:
print(number["id"], number["phone"], number["label"], number["status"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v2/numbers", {
headers: { Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}` },
});
const { data } = await response.json();
for (const number of data) console.log(number.id, number.phone, number.label, number.status);<?php
$ch = curl_init('https://wbiztool.com/api/v2/numbers');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY')],
CURLOPT_RETURNTRANSFER => true,
]);
$numbers = json_decode(curl_exec($ch), true)['data'];
curl_close($ch);
foreach ($numbers as $number) {
echo $number['id'] . ' ' . $number['phone'] . ' ' . $number['status'] . "\n";
}{
"data": [
{
"id": 101,
"phone": "919800000000",
"label": "Shop",
"platform": "whatsapp",
"status": "connected",
"login_method": "qr",
"connect": null
},
{
"id": 102,
"phone": null,
"label": "",
"platform": "whatsapp",
"status": "disconnected",
"login_method": "qr",
"connect": null
}
]
}
connect ist in der Liste immer null. Um eine Verbindung zu verfolgen, rufen Sie die Nummer ab.
Eine Nummer abrufen#
https://wbiztool.com/api/v2/numbers/{id}Eine einzelne Nummer. Während sie verbunden wird, enthält connect den QR-Code zum Scannen oder den Kopplungscode zum Eingeben.
curl https://wbiztool.com/api/v2/numbers/102 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{
"id": 102,
"phone": null,
"label": "",
"platform": "whatsapp",
"status": "connecting",
"login_method": "qr",
"connect": {
"qr_code_url": "https://…/qr_codes/…png?X-Amz-Signature=…",
"pairing_code": null,
"pairing_code_expires_at": null,
"linking": false,
"requested_at": "2026-10-18T11:02:15.402Z"
}
}
Eine Nummer, die nicht existiert oder die der Schlüssel nicht nutzen darf, antwortet mit 404 number_not_found.
Das Number-Objekt#
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Die ID der Nummer: das from einer Nachricht oder Erinnerung. |
phone | string or null | Ihre Ziffern mit Ländervorwahl, ohne +, zum Beispiel 919800000000. null bei einer neuen, per QR verbundenen Nummer, bis der QR-Code gescannt ist. |
label | string | Ihr Name im Dashboard; "", wenn sie keinen hat. |
platform | string | whatsapp oder telegram. |
status | string | connected, connecting (eine Verbindung wurde in den letzten 10 Minuten angefordert und läuft noch) oder disconnected. |
login_method | string | Wie sie sich verbindet: qr oder phone_code (ein Kopplungscode). |
connect | object or null | Solange status connecting ist, und nur bei Eine Nummer abrufen; sonst null. |
connect enthält:
| Feld | Typ | Beschreibung |
|---|---|---|
qr_code_url | string or null | Ein Link zum QR-Code-Bild, das gescannt wird. Jeder Aufruf liefert einen neuen Link, 10 Minuten gültig; null, bis der Server den QR-Code hat. |
pairing_code | string or null | Bei phone_code: der Code, der auf dem Smartphone eingegeben wird. null, bis er bereit ist. |
pairing_code_expires_at | string or null | Wann der Kopplungscode nicht mehr funktioniert. |
linking | boolean | true, sobald der QR-Code gescannt oder der Code angenommen wurde, während WhatsApp die Verknüpfung abschließt. |
requested_at | string or null | Wann die Verbindung angefordert wurde. |
Nachrichten mit einer Nummer im Status disconnected als from werden trotzdem angenommen: Sie warten und gehen raus, sobald die Nummer wieder verbunden ist. Webhook-Ereignisse für Nummern folgen später; bis dahin fragen Sie GET /numbers regelmäßig ab, um eine abgemeldete Nummer zu bemerken.
WhatsApp-Nummer verbinden#
https://wbiztool.com/api/v2/numbersBody: JSON (application/json)
Bittet einen WbizTool-Server, WhatsApp für eine Nummer zu öffnen, damit Sie sie aus Ihrer eigenen App oder Website verknüpfen können, so wie unter WhatsApp-Nummern. Die Antwort ist 202 mit der Nummer im Status connecting. Fragen Sie sie dann regelmäßig ab, bis sie connected ist.
Dafür ist ein Plan nötig, der die QR-Code-API enthält; sonst lautet die Antwort 403 plan_required. Telegram-Konten werden im Dashboard verbunden, nicht hier.
Body
login_methodstringoptionalqr(Standard): einen QR-Code scannen.phone_code: stattdessen einen Kopplungscode auf dem Smartphone eingeben, praktisch, wenn das Smartphone der einzige Bildschirm ist.phonestringErforderlich für phone_codeDie WhatsApp-Nummer, die verknüpft wird, im internationalen Format mit
+, zum Beispiel+919876543210. Beiqrnicht verwendet: Die Nummer wird nach dem Scan aus WhatsApp gelesen.number_idintegeroptionalDiese bestehende Nummer neu verbinden, statt eine neue hinzuzufügen, zum Beispiel nachdem sie abgemeldet wurde.
# By QR code
curl -X POST https://wbiztool.com/api/v2/numbers \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"login_method": "qr"}'
# By pairing code, reconnecting number 101
curl -X POST https://wbiztool.com/api/v2/numbers \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"login_method": "phone_code", "phone": "+919876543210", "number_id": 101}'import os
import time
import requests
API = "https://wbiztool.com/api/v2"
headers = {"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}"}
number = requests.post(f"{API}/numbers", headers=headers,
json={"login_method": "phone_code", "phone": "+919876543210"}, timeout=30).json()
shown = None
while number["status"] == "connecting":
time.sleep(3)
number = requests.get(f"{API}/numbers/{number['id']}", headers=headers, timeout=30).json()
code = (number["connect"] or {}).get("pairing_code")
if code and code != shown:
print("On the phone: WhatsApp → Linked devices → Link with phone number, then type", code)
shown = code
print("Number", number["id"], "is", number["status"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const API = "https://wbiztool.com/api/v2";
const headers = { Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}`, "Content-Type": "application/json" };
let number = await (await fetch(`${API}/numbers`, {
method: "POST", headers, body: JSON.stringify({ login_method: "qr" }),
})).json();
let shown = null;
while (number.status === "connecting") {
await new Promise((r) => setTimeout(r, 3000));
number = await (await fetch(`${API}/numbers/${number.id}`, { headers })).json();
const qr = number.connect?.qr_code_url;
if (qr && qr !== shown) {
console.log("Show this QR code to scan:", qr); // e.g. in an <img> on your page
shown = qr;
}
}
console.log(`Number ${number.id} is ${number.status}`);<?php
$ch = curl_init('https://wbiztool.com/api/v2/numbers');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['login_method' => 'qr']),
CURLOPT_RETURNTRANSFER => true,
]);
$number = json_decode(curl_exec($ch), true);
curl_close($ch);
// Save $number['id'], then poll GET /api/v2/numbers/{id} every few seconds (see The connect flow).
echo $number['id'] . ' ' . $number['status'];Der Verbindungsablauf#
Verbindung anfordern
POST /numbersmitlogin_method(undphonefür einen Kopplungscode). Merken Sie sich dieidaus der Antwort. Senden Sie einenIdempotency-Key, damit ein erneuter Versuch nicht doppelt anfordert.Die Nummer alle paar Sekunden abfragen
GET /numbers/{id}alle 2 bis 5 Sekunden, solangestatusconnectingist. Der QR-Code oder Kopplungscode erscheint innerhalb kurzer Zeit inconnect; bis dahin sind seine Feldernull.QR-Code oder Kopplungscode anzeigen
QR: Zeigen Sie das Bild unter
connect.qr_code_urlan; öffnen Sie auf dem Smartphone WhatsApp → Verknüpfte Geräte → Gerät hinzufügen und scannen Sie es. Jeder Link funktioniert 10 Minuten, und mit jeder Abfrage kommt ein neuer, zeigen Sie also jedes Mal den neuesten an. Kopplungscode: Öffnen Sie auf dem Smartphone WhatsApp → Verknüpfte Geräte → Gerät hinzufügen → Stattdessen mit Telefonnummer verknüpfen und geben Sie den 8-stelligenconnect.pairing_codevorconnect.pairing_code_expires_atein (etwa 3 Minuten).Auf connected warten
Nach dem Scan oder dem Code ist
connect.linkingtrue, während WhatsApp die Verknüpfung abschließt. Dann wirdstatuszuconnected, undphonezeigt die Nummer. Beenden Sie die Abfragen.
Passiert 10 Minuten lang nichts, endet der Versuch, und status wechselt zurück zu disconnected. Fordern Sie erneut mit POST /numbers und ihrer number_id an.
Während eine Nummer verbunden wird, antwortet ein weiterer Request für sie mit 409 connect_in_progress und ihrer number_id: Fragen Sie stattdessen weiter diese ab.
Fehler beim Verbinden#
| HTTP | Code | Wann |
|---|---|---|
400 | validation_failed | login_method ist weder qr noch phone_code, oder phone_code ohne phone |
403 | plan_required | Der Plan enthält die QR-Code-API nicht |
403 | number_limit_reached | Im Plan ist kein Platz für eine weitere Nummer |
403 | number_not_allowed | Der Schlüssel ist auf einige Nummern beschränkt, und number_id gehört nicht dazu (oder fehlt) |
409 | already_connected | Diese Nummer ist bereits verbunden |
409 | connect_in_progress | Diese Nummer wird gerade verbunden; number_id nennt sie |
422 | invalid_phone | phone ist keine gültige Nummer im internationalen Format mit + |
422 | number_not_found | number_id ist keine Nummer dieses Arbeitsbereichs |
Verwandte Themen#
- WhatsApp-Nummer verbinden im Dashboard
- Telegram-Konto verbinden
- Nachrichten: mit
fromvon einer Nummer senden - Fehler
