Mesajlaşma API'si
Birden fazla numaraya gönderme API'si
Aynı WhatsApp mesajını tek bir istekte birkaç telefon numarasına ve gruba gönderin. Bültenler, kampanyalar ve duyurular gibi küçük toplu gönderimler için kullanın.
https://wbiztool.com/api/v1/send_msg/multi/Gövde: JSON veya form alanları
Wbiztool her alıcı için bir mesaj oluşturur ve her biri için bir msg_id döndürür; böylece durumlarını tek tek kontrol edebilirsiniz.
Hızlı örnek#
curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210,9812345670,Sales Team Mumbai",
"msg": "Our Diwali sale starts tomorrow. Get 20% off on all orders!"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/multi/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": ",".join(["9876543210", "9812345670", "Sales Team Mumbai"]),
"msg": "Our Diwali sale starts tomorrow. Get 20% off on all orders!",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
for item in result["messages"]:
print(item["contact"], "->", item["msg_id"])
else:
print("Failed:", result.get("message", "no message in response"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/multi/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
msg_type: 0,
country_code: "91",
phone: ["9876543210", "9812345670", "Sales Team Mumbai"].join(","),
msg: "Our Diwali sale starts tomorrow. Get 20% off on all orders!",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
for (const item of result.messages) {
console.log(item.contact, "->", item.msg_id);
}
} else {
console.error("Failed:", result.message ?? "no message in response");
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'country_code' => '91',
'phone' => implode(',', ['9876543210', '9812345670', 'Sales Team Mumbai']),
'msg' => 'Our Diwali sale starts tomorrow. Get 20% off on all orders!',
];
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/multi/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
foreach ($result['messages'] as $item) {
echo $item['contact'] . ' -> ' . $item['msg_id'] . PHP_EOL;
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}12345, YOUR_API_KEY ve 678 değerlerini kendi değerlerinizle değiştirin. Bunları nerede bulacağınız için Kimlik doğrulama bölümüne bakın.
İstek parametreleri#
Kimlik doğrulama
client_idintegerzorunluAyarlar → API anahtarları sayfasındaki API Client ID'niz.
api_keystringzorunluAynı sayfadaki API anahtarınız.
whatsapp_clientintegerzorunluGönderimin yapılacağı WhatsApp numarasının ID'si; WhatsApp ayarları sayfasında bulunur. Mesaj gönderme endpoint'inden farklı olarak bu endpoint sizin için asla numara seçmez.
Alıcılar ve mesaj
phonestringzorunluVirgülle ayrılmış tek bir metin içinde telefon numaraları ve grup adları; örneğin
9876543210,9812345670,Sales Team Mumbai. JSON dizisi göndermeyin. Bkz. Alıcılar nasıl okunur.country_codestringisteğe bağlı+olmadan ülke telefon kodu, örneğin91. Numara zaten bununla başlamıyorsa her telefon numarasının önüne eklenir. JSON'da sayı olarak değil, metin olarak ("91") gönderin. Sayı gönderirseniz listedeki her telefon numarası grup adı olarak değerlendirilir (is_group: true) ve bu mesajlar başarısız olur.msg_typeintegeristeğe bağlı0metin (varsayılan),1görsel,2dosya veya belge.msgstringmsg_type 0 olduğunda zorunluMesaj metni. Görsel ve dosyalarda açıklama metnidir ve boş olabilir. WhatsApp biçimlendirmesi çalışır:
*bold*,_italic_,~strikethrough~.messageda takma ad olarak kabul edilir.
Görseller ve dosyalar
img_urlstringmsg_type 1 olduğunda zorunluGörselin herkese açık
httpveyahttpsURL'si.file_urlstringmsg_type 2 olduğunda zorunluDosyanın doğrudan indirilebileceği herkese açık
httpveyahttpsURL'si.file_namestringisteğe bağlıAlıcıların gördüğü dosya adı, örneğin
price-list.pdf. Küçük harflerle gönderilir,& : ? * $ ;gibi karakterler_ile değiştirilir ve 150 karaktere kısaltılır. Göndermezseniz ad URL'den alınır.
Teslimat seçenekleri
webhookstringisteğe bağlıHer mesaj gönderildiğinde veya başarısız olduğunda bir
POSTalan URL. İçerik, Mesaj gönderme ile aynıdır.
curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"country_code": "91",
"phone": "9876543210,9812345670",
"img_url": "https://example.com/offers/diwali-sale.jpg",
"msg": "Our Diwali sale starts tomorrow."
}'Alıcılar nasıl okunur#
Wbiztool phone değerini virgüllerden böler, her öğenin çevresindeki boşlukları kırpar ve ardından her öğenin ne olduğuna karar verir:
- Yalnızca rakamlar (baştaki
+veya baştaki sıfırlar sorun değildir): telefon numarası olarak değerlendirilir. Numara zaten bununla başlamıyorsacountry_codeeklenir; ardından numara 6 ile 15 hane arasında olmalıdır. - Diğer her şey: WhatsApp grup adı olarak değerlendirilir ve Gruba gönderme ile aynı şekilde bulunur.
- Adı yalnızca rakamlardan oluşan bir grup (örneğin
2024) telefon numarası olarak değerlendirilir ve virgül içeren grup adlarına bu endpoint'ten gönderim yapılamaz. Bunlar için Gruba gönderme endpoint'ini kullanın.
Bilmeniz gereken diğer noktalar:
- Ülke kodu eklendikten sonra çok kısa veya çok uzun olan numaralar sessizce atlanır. Yanıtta görünmezler ve
msg_idalmazlar. - Tekrarlar kaldırılmaz. İki kez listelenen bir numara iki mesaj alır.
- Yerel bir numara
country_codeile aynı rakamlarla başlıyorsa (örneğincountry_code91ile9123456780), kod eklenmez. Bu tür numaraları ülke kodu zaten eklenmiş olarak (919123456780) gönderin. - Görsel ve dosya URL'leri API'yi çağırdığınızda kontrol edilmez. Her mesaj gönderilirken indirilirler; bu yüzden bozuk bir bağlantı isteğin değil, mesajların daha sonra başarısız olmasına yol açar. Mesaj gönderme ile aynı gönderim anı kuralları geçerlidir: 16 MB'tan büyük görseller ve 64 MB'tan büyük videolar başarısız olur, WAV ve OGG ses dosyaları desteklenmez ve desteklenen bir uzantısı olmayan dosyalara (
msg_type2).pdfeklenir. Bkz. Görsel ve dosya gönderme.
Krediler#
Herhangi bir şey oluşturulmadan önce tüm grup kalan kredilerinize göre kontrol edilir. phone içindeki boş olmayan her öğe sayılır; daha sonra atlanan öğeler de dahil. Sayı kalan kredilerinizden fazlaysa hiçbir mesaj oluşturulmaz ve şu yanıtı alırsınız:
{
"message": "Not enough credits: 120 messages requested, 85 credits remaining",
"status": 0
}
Kuyruğa alınmış ancak henüz gönderilmemiş mesajlar da kalan kredilerinizden düşülür. Büyük listeleri daha küçük isteklere bölün veya planınıza kredi ekleyin. Büyük kampanyalar için bunun yerine Kampanyalar sayfasından bir tablo dosyası yükleyin.
Yanıt#
Başarılı bir istek HTTP 200 döndürür:
{
"msg_ids": [9817263, 9817264, 9817265],
"messages": [
{ "msg_id": 9817263, "contact": "919876543210", "is_group": false },
{ "msg_id": 9817264, "contact": "919812345670", "is_group": false },
{ "msg_id": 9817265, "contact": "Sales Team Mumbai", "is_group": true }
],
"message": "Successfully created 3 messages",
"status": 1
}
| Alan | Tür | Açıklama |
|---|---|---|
status | integer | En az bir mesaj kuyruğa alındıysa 1, aksi halde 0. |
message | string | Başarıda Successfully created N messages, aksi halde hata mesajı. |
msg_ids | tam sayı dizisi | Kuyruğa alınan mesajların ID'leri, phone sırasına göre. Yalnızca başarıda bulunur. |
messages | dizi | Kuyruğa alınan her mesaj için bir nesne. Yalnızca başarıda bulunur. |
messages[].msg_id | integer | Mesajın ID'si. |
messages[].contact | string | Ülke kodu uygulanmış telefon numarası veya grup adı. |
messages[].is_group | boolean | Öğe grup adı olarak değerlendirildiyse true. |
Atlanan numaraları bulmak için messages listesini gönderdiğiniz listeyle karşılaştırın ve telefon numarası olarak kastettiğiniz her öğe için is_group değerinin false olduğunu kontrol edin.
Hatalar#
Çoğu hata, status değeri 0 olarak HTTP 200 döndürür; bu yüzden gövdedeki status değerini her zaman kontrol edin. HTTP 400 ve 403 hataları dışında yanıtlar (başarılı olanlar dahil) Content-Type: text/html ile gönderilen JSON'dur; bu yüzden otomatik JSON algılamaya güvenmek yerine (örneğin kodsuz araçlarda) gövdeyi kendiniz ayrıştırın:
{ "message": "Invalid whatsapp client", "status": 0 }
| Mesaj | Nasıl düzeltilir |
|---|---|
Auth Error | client_id ve api_key değerlerinin ikisini de gönderin. |
Invalid Client Id | client_id değerini sayı olarak gönderin. HTTP 403 ile döner. |
Auth Error: invalid api key | Anahtarın mevcut olduğunu, silinmediğini ve bu client_id değerine ait olduğunu kontrol edin. HTTP 400 ile döner. |
Msg cant be null | Metin mesajları (msg_type 0) msg gerektirir. |
Image Url Can't be null | msg_type 1 için img_url gönderin. |
File Url Can't be null | msg_type 2 için file_url gönderin. |
Not enough credits: … messages requested, … credits remaining | Daha az alıcıya gönderin veya kredi ekleyin. Bkz. Krediler. |
Invalid whatsapp client | Bu whatsapp_client ID'si çalışma alanınızda değil. |
No valid contacts found | phone içindeki her öğe boştu veya atlandı. Numaraların ülke koduyla birlikte 6 ile 15 hane arasında olduğunu kontrol edin. |
Demo Account can not access apis | Normal bir hesap kullanın. |
Invalid JSON format: … | JSON gövdesi geçerli değil veya form alanlarını client_id olmadan gönderdiniz. |
İpuçları#
phonedeğerini metin olarak gönderin: listenizi virgüllerle birleştirin. Bir JSON dizisi{}döndürür.- Şimdilik Python istemcisinin
send_bulk_messagesyöntemini kullanmayın: listeyi bu endpoint'in yok saydığıphonesalanında gönderir. Endpoint'i yukarıdaki örneklerdeki gibi doğrudan çağırın. - Her mesajı takip edin:
messagesiçindeki hermsg_iddeğerini kaydedin veya her biri gönderildiğinde ya da başarısız olduğunda bildirim almak için birwebhookiletin. - Numaranızı bağlı tutun: her mesaj WhatsApp numaranızdan gönderilir, bu yüzden tüm grup gönderilene kadar numaranın WhatsApp ayarları sayfasında bağlı kalması gerekir.
- Kişiye göre farklı metin: bu endpoint herkese aynı
msgdeğerini gönderir. Her mesajı kişiselleştirmek için her alıcı için bir kez Mesaj gönderme endpoint'ini çağırın.
