API v2 (beta)
Nombor
Nombor ialah nombor WhatsApp atau akaun Telegram yang disambungkan ke ruang kerja anda. id-nya ialah from yang anda gunakan untuk menghantar mesej. Dengan API v2, anda boleh menyenaraikannya, melihat sama ada setiap satu disambungkan, dan menyambungkan nombor WhatsApp dari aplikasi anda sendiri, dengan kod QR atau kod pautan.
| Operasi | Endpoint | Skop |
|---|---|---|
| Senaraikan nombor | GET /api/v2/numbers | numbers |
| Dapatkan nombor | GET /api/v2/numbers/{id} | numbers |
| Sambungkan nombor WhatsApp | POST /api/v2/numbers | numbers |
Kunci yang dihadkan kepada sebahagian nombor hanya melihat dan menyambungkan semula nombor itu, dan tidak boleh menambah nombor.
Senaraikan nombor#
https://wbiztool.com/api/v2/numbersSemua nombor ruang kerja, yang tertua dahulu, dalam satu senarai data (tanpa halaman).
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 sentiasa null dalam senarai. Untuk mengikuti sambungan, dapatkan nombor itu.
Dapatkan nombor#
https://wbiztool.com/api/v2/numbers/{id}Satu nombor. Semasa ia sedang disambungkan, connect mengandungi kod QR untuk diimbas atau kod pautan untuk ditaip.
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"
}
}
Nombor yang tidak wujud, atau yang tidak boleh digunakan oleh kunci, menjawab 404 number_not_found.
Objek Number#
| Medan | Jenis | Penerangan |
|---|---|---|
id | integer | ID nombor: from bagi mesej atau peringatan. |
phone | string or null | Digitnya dengan kod negara, tanpa +, seperti 919800000000. null bagi nombor baharu yang disambungkan dengan QR sehingga kod QR diimbas. |
label | string | Namanya dalam papan pemuka; "" apabila tiada. |
platform | string | whatsapp atau telegram. |
status | string | connected, connecting (sambungan diminta dalam 10 minit yang lalu dan masih berjalan) atau disconnected. |
login_method | string | Cara ia bersambung: qr atau phone_code (kod pautan). |
connect | object or null | Semasa status ialah connecting, dan hanya daripada Dapatkan nombor; jika tidak, null. |
connect mengandungi:
| Medan | Jenis | Penerangan |
|---|---|---|
qr_code_url | string or null | Pautan ke imej kod QR untuk diimbas. Setiap panggilan memberikan pautan baharu, sah selama 10 minit; null sehingga pelayan mempunyai kod QR. |
pairing_code | string or null | Bagi phone_code: kod untuk ditaip pada telefon. null sehingga ia sedia. |
pairing_code_expires_at | string or null | Bila kod pautan berhenti berfungsi. |
linking | boolean | true setelah kod QR diimbas atau kod diterima, semasa WhatsApp menyelesaikan pemautan. |
requested_at | string or null | Bila sambungan diminta. |
Mesej yang dihantar dengan nombor disconnected sebagai from masih diterima: ia menunggu dan dihantar apabila nombor disambungkan semula. Peristiwa webhook untuk nombor akan datang kemudian; sehingga itu, tinjau GET /numbers untuk mengesan nombor yang telah log keluar.
Sambungkan nombor WhatsApp#
https://wbiztool.com/api/v2/numbersBody: JSON (application/json)
Meminta pelayan WbizTool membuka WhatsApp untuk sesuatu nombor, supaya anda boleh memautkannya dari aplikasi atau laman web anda sendiri, seperti di halaman Nombor WhatsApp. Responsnya ialah 202 dengan Number, berstatus connecting. Kemudian tinjau ia sehingga ia connected.
Ia memerlukan pelan yang merangkumi API kod QR; jika tidak, ia menjawab 403 plan_required. Akaun Telegram disambungkan dalam papan pemuka, bukan di sini.
Badan
login_methodstringpilihanqr(lalai): imbas kod QR.phone_code: taip kod pautan pada telefon sebaliknya, berguna apabila telefon ialah satu-satunya skrin.phonestringWajib untuk phone_codeNombor WhatsApp untuk dipautkan, dalam format antarabangsa dengan
+, seperti+919876543210. Tidak digunakan denganqr: nombor dibaca daripada WhatsApp selepas imbasan.number_idintegerpilihanSambungkan semula nombor sedia ada ini dan bukannya menambah nombor baharu, contohnya selepas ia log keluar.
# 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'];Aliran sambungan#
Minta sambungan
POST /numbersdenganlogin_method(danphoneuntuk kod pautan). Simpaniddaripada respons. HantarIdempotency-Keysupaya cubaan semula tidak meminta dua kali.Tinjau nombor setiap beberapa saat
GET /numbers/{id}setiap 2 hingga 5 saat semasastatusialahconnecting. Kod QR atau kod pautan muncul dalamconnectdalam beberapa saat; sehingga itu medannya ialahnull.Paparkan kod QR atau kod pautan
QR: paparkan imej di
connect.qr_code_url; pada telefon, buka WhatsApp → Peranti dipaut → Paut peranti dan imbasnya. Setiap pautan berfungsi selama 10 minit dan pautan baharu datang dengan setiap tinjauan, jadi paparkan yang terbaharu setiap kali. Kod pautan: pada telefon, buka WhatsApp → Peranti dipaut → Paut peranti → Paut dengan nombor telefon, dan taipconnect.pairing_code8 aksara sebelumconnect.pairing_code_expires_at(kira-kira 3 minit).Tunggu sehingga disambungkan
Selepas imbasan atau kod,
connect.linkingialahtruesemasa WhatsApp menyelesaikan pemautan. Kemudianstatusmenjadiconnecteddanphonemenunjukkan nombor itu. Berhenti meninjau.
Jika tiada apa-apa berlaku selama 10 minit, percubaan itu tamat dan status kembali kepada disconnected. Minta semula dengan POST /numbers dan number_id-nya.
Semasa sesuatu nombor sedang disambungkan, permintaan lain untuknya menjawab 409 connect_in_progress dengan number_id-nya: teruskan meninjau nombor itu sebaliknya.
Ralat semasa menyambung#
| HTTP | Kod | Bila |
|---|---|---|
400 | validation_failed | login_method bukan qr atau phone_code, atau phone_code tanpa phone |
403 | plan_required | Pelan tidak merangkumi API kod QR |
403 | number_limit_reached | Pelan tiada ruang untuk nombor lain |
403 | number_not_allowed | Kunci dihadkan kepada sebahagian nombor, dan number_id bukan salah satu daripadanya (atau tiada) |
409 | already_connected | Nombor itu sudah disambungkan |
409 | connect_in_progress | Nombor itu sedang disambungkan sekarang; number_id menyatakan yang mana |
422 | invalid_phone | phone bukan nombor yang sah dalam format antarabangsa dengan + |
422 | number_not_found | number_id bukan nombor ruang kerja ini |
Berkaitan#
- Sambung nombor WhatsApp anda dalam papan pemuka
- Sambung akaun Telegram
- Mesej: hantar dari sesuatu nombor dengan
from - Ralat
