WhatsApp hesapları API'si
WhatsApp numarası bağlama (API)
Kendi uygulamanızdan çalışma alanınıza bir WhatsApp numarası bağlamaya başlayın. Wbiztool yeni bir WhatsApp oturumu açar ve webhook URL'nize bir QR kodu veya login_method=phone ile 8 karakterli bir kod gönderir. Bunu telefonun sahibine gösterin; QR kodunu tarar veya kodu WhatsApp'a yazar ve numara mesaj göndermeye hazır olur. QR koduyla numarayı önceden bilmeniz gerekmez: Wbiztool taramadan sonra numarayı WhatsApp'tan okur ve webhook'unuza gönderir.
Kendi numaranızı elle mi bağlıyorsunuz? WhatsApp numaranızı bağlayın rehberini izleyin.
https://wbiztool.com/api/v1/whatsapp/connect/Gövde: JSON veya form alanları
POST /api/v1/whatsapp-client/create/ birebir aynı bir takma addır: aynı kodu çalıştırır ve aynı yanıtları döndürür. İki yol da çalışmaya devam eder.
Bağlanma nasıl çalışır#
API çağrısı bağlantıyı yalnızca başlatır. QR kodu veya telefon kodu daha sonra webhook URL'nize gelir.
Bağlama API'sini çağırın
webhook_urldeğerinizi velogin_method=phoneile birliktewhatsapp_numberdeğerini gönderin. Daha önce eklediğiniz bir numarayı yeniden bağlamak için ayrıca onunwhatsapp_client_iddeğerini gönderin. Yanıt size birwhatsapp_client_idverir. Bunu kaydedin.QR kodunu veya telefon kodunu alın
Varsayılan
login_method=qrile webhook'unuz,qr_imageiçinde QR görseliyle birliktestatus=qr_generatedalır. Wbiztool bir tarama beklerken QR kodu birkaç saniyede bir yeniden gönderilir; bu yüzden her zaman en sonuncusunu gösterin. Kişinin taramak için yaklaşık iki dakikası vardır.login_method=phoneile webhook'unuz,pairing_codeiçindeK5EWPGY5gibi 8 karakterli bir kodla birliktestatus=pairing_codealır. Bir kez gönderilir ve yaklaşık üç dakika geçerlidir.Görseli veya kodu telefonun sahibine gösterin. Zamanında kullanılmazsa veya WhatsApp kodu yenilemeyi isterse
not_connectedalırsınız; yenisini almak için API'yi tekrar çağırın.Telefonu bağlayın
Telefonda WhatsApp → Bağlı cihazlar → Cihaz bağla yolunu açın. QR kodunu tarayın veya Bunun yerine telefon numarasıyla bağlan (Link with phone number instead) seçeneğine dokunup 8 karakterli kodu yazın.
Sonucu alın
Numara bağlandığında webhook'unuz
whatsapp_numberiçinde bağlanan numarayla birliktestatus=connected, kod zamanında taranmadıysa veya bağlantı başarısız olduysastatus=not_connectedalır.connectedolayı, Bağlantı durumuConnecteddöndürmeden birkaç saniye önce gelebilir. Önce webhook'a yanıt verin, ardından bir dakikaya kadar birkaç saniyede bir Bağlantı durumu'nu sorgulayın. Webhook işleyicinizin içinden yalnızca bir kez kontrol etmeyin.
Hızlı örnek#
curl -X POST https://wbiztool.com/api/v1/whatsapp/connect/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"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",
"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",
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',
'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');
}12345 ve YOUR_API_KEY değerlerini kendi değerlerinizle değiştirin. Bunları nerede bulacağınız için Kimlik doğrulama bölümüne bakın. Bunun yerine bir telefon kodu almak için "login_method": "phone" ve "whatsapp_number": "919876543210" ekleyin.
İstek parametreleri#
client_idintegerzorunluAyarlar → API anahtarları sayfasındaki API Client ID'niz.
api_keystringzorunluAynı sayfadaki API anahtarınız. Numara, bu anahtarın oluşturulduğu çalışma alanına eklenir.
whatsapp_numberstringYalnızca login_method=phone ilelogin_method=phoneile, kodun gönderileceği tam uluslararası numara; çünkü WhatsApp kodu tam olarak o numaraya gönderir: önce ülke kodu, başta0olmadan, örneğin919876543210.+, boşluklar ve tireler sizin için kaldırılır.login_method=qrile yok sayılır ve göndermeyebilirsiniz. Wbiztool, taramadan sonra WhatsApp'ın bildirdiği numarayı kaydeder veconnectedwebhook'unda gönderir.login_methodstringisteğe bağlıQR kodu almak için
qr(varsayılan) veya sahibin WhatsApp'ta Bunun yerine telefon numarasıyla bağlan altında yazacağı 8 karakterli bir kodu almak içinphone. Telefon QR kodu tarayamadığında, örneğin tek cihaz o olduğunda kullanışlıdır.whatsapp_client_idintegeristeğe bağlıÇalışma alanınızda olan ama bağlı olmayan bir numarayı yeniden bağlamak için onun
whatsapp_client_iddeğerini gönderin. Aynı ID korunur, böylece diğer API çağrılarınız çalışmaya devam eder. Yeni bir numara eklemek için göndermeyin.Kayıt, hangi numara bağlanırsa onu alır. QR kodunu farklı bir telefon tararsa veya
login_method=phoneile farklı birwhatsapp_numbergönderirseniz, owhatsapp_client_idbundan sonra yeni numaradan gönderim yapar; bunun için zaten kuyruğa alınmış mesajlar da dahil.webhook_urlstringQR kodunu almak için zorunluQR kodunu ve bağlantı güncellemelerini alan
httpveyahttpsURL'niz, en fazla 250 karakter (daha uzun URL'ler HTTP500ile başarısız olur). API bu alan olmadan da isteği kabul eder, ancak o zaman size hiçbir şey gönderilmez ve QR kodunu API üzerinden almanın hiçbir yolu kalmaz. Bkz. Webhook olayları.
Resmi istemcileri kullanma#
Python istemcisi sizin için /api/v1/whatsapp-client/create/ çağrısını yapar. whatsapp_number ister; QR koduyla bu değer yok sayılır.
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)Python istemcisi, API HTTP 400 veya 403 döndürdüğünde requests.exceptions.HTTPError fırlatır; bu yüzden çağrıyı try/except içine alın.
Yanıt#
Bağlantı isteği oluşturulduğunda API HTTP 200 döndürür:
{
"message": "Whatsapp Client Created",
"whatsapp_client_id": 678,
"login_method": "qr",
"status": 1
}
| Alan | Tür | Açıklama |
|---|---|---|
status | integer | Bağlantı isteği oluşturulduysa 1, başarısız olduysa 0. |
message | string | Başarıda Whatsapp Client Created, aksi halde hata mesajı. |
whatsapp_client_id | integer | WhatsApp numarasının ID'si. Diğer API çağrılarında whatsapp_client olarak kullanın. Yalnızca başarıda bulunur. |
login_method | string | Bu deneme için kullanılan qr veya phone. Yalnızca başarıda bulunur. |
"status": 1, numaranın bağlandığı değil, isteğin oluşturulduğu anlamına gelir. API'yi tekrar çağırmak numara biriktirmez:
- QR koduyla ve
whatsapp_client_idolmadan, QR kodlarından biri taranana kadar aynıwhatsapp_client_iddeğerini geri alırsınız. login_method=phoneile, daha önce eklenmiş ama bağlı olmayan bir numara mevcutwhatsapp_client_iddeğerini geri alır.whatsapp_client_idile o numara yeniden bağlanır.
İlk QR kodu taranana kadar numaranın henüz bir telefon numarası yoktur: Bağlı numaraları listeleme ve Bağlantı durumu bunun için boş bir numara döndürür.
Hatalar#
| Mesaj | HTTP | Nasıl düzeltilir |
|---|---|---|
login_method must be 'qr' or 'phone' | 400 | qr veya phone gönderin ya da hiç göndermeyin. |
For login_method phone, whatsapp_number must be the full international number with country code and no leading 0, e.g. 919876543210 | 400 | Numarayı 09876543210 veya 9876543210 gibi değil, ülke koduyla birlikte, örneğin 919876543210 olarak gönderin. |
Auth Error | 200 | client_id ve api_key değerlerinin ikisini de gönderin. JSON gövdesi geçersiz olduğunda da döner. |
Invalid Client Id | 403 | client_id değerini 12345 gibi bir tam sayı olarak gönderin. |
Auth Error: invalid api key | 400 | Anahtarın mevcut olduğunu, silinmediğini ve bu client_id değerine ait olduğunu kontrol edin. |
Higher Subscription Required | 200 | Planınız bu API'yi içermiyor. Planınızı yükseltin. |
WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit | 200 | Planınızın izin verdiği kadar bağlı numaranız zaten var. Birinin bağlantısını kesin veya planınızı yükseltin. |
Already Connected With Given Number | 200 | login_method=phone ile, bu numara bu çalışma alanında zaten bağlı. whatsapp_client_id ile, o numara zaten bağlı. Yapılacak bir şey yok. Planınızın numara sınırına zaten ulaştıysanız bunun yerine WhatsApp Account Limit Reached alırsınız. |
Invalid WhatsApp client | 400 | whatsapp_client_id mevcut değil, silinmiş veya başka bir çalışma alanına ait. Yeni bir numara eklemek için göndermeyin. |
POST olmayan bir istek HTTP 200 ile boş bir nesne {} döndürür.
Webhook olayları#
Wbiztool her adımda webhook_url adresinize bir POST gönderir. Gövde JSON değil, form kodludur (application/x-www-form-urlencoded).
QR kodu hazır (tarama beklenirken birkaç saniyede bir, çoğu zaman aynı URL ile yeniden gönderilir):
status=qr_generated&whatsapp_client_id=678&qr_image=...
Telefon kodu hazır (login_method=phone ile, bir kez gönderilir):
status=pairing_code&whatsapp_client_id=678&pairing_code=K5EWPGY5
Numara bağlandı, WhatsApp'ın bildirdiği şekilde oturum açan numarayla birlikte:
status=connected&whatsapp_client_id=678&whatsapp_number=919876543210
Bağlantı başarısız, örneğin QR kodu taranmadığı veya telefon kodu zamanında girilmediği için:
status=not_connected&whatsapp_client_id=678
| Alan | Değerler |
|---|---|
status | qr_generated, pairing_code, connected veya not_connected |
whatsapp_client_id | API'nin döndürdüğü whatsapp_client_id. |
whatsapp_number | Yalnızca connected ile. Ülke koduyla birlikte bağlanan numara, örneğin 919876543210. Hangi numaranın tarandığını öğrenmek için kullanın. WhatsApp'ın bildirmediği nadir durumlarda boştur. |
pairing_code | Yalnızca pairing_code ile. WhatsApp'a yazılacak 8 karakterli kod. Olduğu gibi gösterin; iki yarı arasında boşluk veya tire olması sorun değildir. |
qr_image | Yalnızca qr_generated ile. Görseli base64 olarak içeren bir data: URL'si veya görselin bir https URL'si. İkisini de destekleyin. https URL'si aynı numaranın her yenilemesinde aynı kalır, arkasındaki görsel ise değişir. Görüntülerken önbelleği atlatan bir sorgu ekleyin (örneğin ?t=<timestamp>), aksi halde tarayıcı süresi dolmuş bir kodu göstermeye devam edebilir. |
URL'niz herkese açık olarak erişilebilir olmalı ve birkaç saniye içinde yanıt vermelidir. Wbiztool yanıtınız için en fazla 10 saniye bekler; sunucunuz yavaşsa veya erişilemiyorsa o olay kaybolur ama bağlantı denemesi devam eder. Her HTTP durum kodu kabul edilir. Başarısız teslimatlar yeniden denenmez ve numaranın bağlantısı daha sonra kesilirse hiçbir şey gönderilmez. Bir numarayı bağlandıktan sonra takip etmek için Bağlantı durumu endpoint'ini sorgulayın.
Webhook yerine sorgulama#
Sunucunuz webhook alamıyorsa, QR kodunu almak için yine de webhook'a ihtiyacınız vardır, ancak sonuç için ona güvenmek zorunda değilsiniz. QR kodu tarandıktan sonra, Connected döndürene kadar birkaç saniyede bir whatsapp_client_id ile Bağlantı durumu endpoint'ini çağırın. Hesapları listeleme aynı bilgiyi tüm numaralarınız için gösterir.
İpuçları#
- Yinelenen olayları ele alın: bir olayın iki kez teslim edilme ihtimaline karşı işleyicinizin birden fazla kez çalıştırılmasının güvenli olmasını sağlayın.
- En yeni QR kodunu gösterin: her yeni
qr_generatedolayı geldiğinde görseli değiştirin vehttpsURL'sine önbelleği atlatan bir sorgu ekleyin. Eski kodlar çalışmaz. - Yaklaşık iki dakika içinde tarayın: bundan sonra
not_connectedalırsınız. Yeni bir kod için API'yi tekrar çağırın. - QR taramasından sonra numarayı kontrol edin:
connectedolayındakiwhatsapp_numbergerçekten bağlanan numaradır ve beklediğinizden farklı olabilir. - Telefon kodunu yaklaşık üç dakika içinde girin: her deneme bir kod verir. Süresi dolarsa
not_connectedalırsınız; API'yi tekrar çağırın. - 10 dakika sonra QR kodu veya telefon kodu gelmedi mi? İsteğin süresi doldu. API'yi tekrar çağırın.
- Panelden bağlanmak daha basittir: kendi numaranızı bağlıyorsanız WhatsApp ayarları sayfasını kullanın ve kodu orada tarayın.
