Mesajlaşma API'si
Mesaj durumu API'si
API üzerinden gönderdiğiniz bir mesajın hâlâ kuyrukta mı olduğunu, gönderildiğini veya başarısız olduğunu kontrol edin. Önemli mesajların gittiğini doğrulamak ve gitmeyen bir mesajın nedenini öğrenmek için kullanın.
https://wbiztool.com/api/v1/message/status/{msg_id}/Gövde: JSON veya form alanları
Mesaj ID'sini URL'ye koyun: {msg_id} yerine Mesaj gönderme, Gruba gönderme, Birden fazla numaraya gönderme veya Mesaj zamanlama tarafından döndürülen msg_id değerini yazın. Örneğin: https://wbiztool.com/api/v1/message/status/9817263/.
Hızlı örnek#
curl -X POST https://wbiztool.com/api/v1/message/status/9817263/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY"
}'import requests
msg_id = 9817263
response = requests.post(
f"https://wbiztool.com/api/v1/message/status/{msg_id}/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("message") == "Unknown message id":
print("No message with this ID in your workspace")
elif "status_text" not in result:
print("Request failed:", result.get("message", "no message in response"))
elif result["status"] == 1:
print("Sent")
elif result["status"] == 2:
print("Failed:", result["error"])
else:
print("Status:", result["status_text"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const msgId = 9817263;
const response = await fetch(`https://wbiztool.com/api/v1/message/status/${msgId}/`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.message === "Unknown message id") {
console.log("No message with this ID in your workspace");
} else if (!("status_text" in result)) {
console.error("Request failed:", result.message ?? "no message in response");
} else if (result.status === 1) {
console.log("Sent");
} else if (result.status === 2) {
console.log("Failed:", result.error);
} else {
console.log("Status:", result.status_text);
}<?php
$msgId = 9817263;
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
];
$ch = curl_init("https://wbiztool.com/api/v1/message/status/{$msgId}/");
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['message'] ?? '') === 'Unknown message id') {
echo 'No message with this ID in your workspace';
} elseif (!isset($result['status_text'])) {
echo 'Request failed: ' . ($result['message'] ?? 'no message in response');
} elseif ($result['status'] === 1) {
echo 'Sent';
} elseif ($result['status'] === 2) {
echo 'Failed: ' . $result['error'];
} else {
echo 'Status: ' . $result['status_text'];
}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.
İstek parametreleri#
URL
msg_idintegerzorunluURL yolunun parçası olarak mesaj ID'si. Bir tam sayı olmalı ve API anahtarınızın çalışma alanına ait olmalıdır.
Gövde
client_idintegerzorunluAyarlar → API anahtarları sayfasındaki API Client ID'niz.
api_keystringzorunluAynı sayfadaki API anahtarınız.
Resmi istemciyi kullanma#
Python istemcisi bu endpoint'i sizin için çağırır.
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.get_message_status(msg_id=9817263)
print(result.get("status_text"), result.get("error"))İstemci API ile aynı alanları döndürür; bu yüzden result["status"] bir başarı göstergesi değil, mesajın durumudur. Kimlik doğrulama hataları requests.HTTPError fırlatır; nedeni e.response.json()["message"] ile okuyun.
Yanıt#
Endpoint, mesajın mevcut durumuyla birlikte HTTP 200 döndürür:
{
"message": "Sent",
"status": 1,
"status_text": "Sent",
"error": ""
}
Başarısız bir mesaj:
{
"message": "Failed",
"status": 2,
"status_text": "Failed",
"error": "Phone number invalid"
}
| Alan | Tür | Açıklama |
|---|---|---|
status | integer | Mesajın durum kodu. Aşağıdaki tabloya bakın. |
status_text | string | Durumun adı: Created, Sent, Failed, Cancelled veya Expired. |
message | string | status_text ile aynı değer. |
error | string veya null | Mesajın neden başarısız olduğu. Her zaman bulunur; hata yoksa boştur ("" veya null). |
Durum değerleri#
status | status_text | Anlamı |
|---|---|---|
0 | Created | Kuyrukta veya zamanlanmış, gönderilmeyi bekliyor. |
1 | Sent | WhatsApp numaranızdan gönderildi. |
2 | Failed | Gönderilemedi veya gönderim yarıda kesildi. error nedenini söyler. error değeri Sending was interrupted and may have been delivered. Check WhatsApp before resending. ise alıcıda mesaj zaten olabilir; bu yüzden otomatik olarak yeniden göndermeyin. |
3 | Cancelled | Gönderilmeden önce iptal edildi; örneğin Mesaj iptal etme ile. |
4 | Expired | expire_after_seconds süresi dolmadan gönderilemedi. |
Sent son başarı durumudur. Bu endpoint mesajın telefona teslim edilip edilmediğini veya okunup okunmadığını bildirmez.
Başarısız mesajlar için error değerlerine örnekler: Phone number invalid, Group not found, Image Url Error, File Url Error, Blocked Contact, File exceeds WhatsApp size limit (…), File type not supported, Sending was interrupted and may have been delivered. Check WhatsApp before resending.
Hatalar#
{
"message": "Unknown message id",
"status": 0,
"status_text": "pending",
"error": "Invalid message id"
}
| Mesaj | Nasıl düzeltilir |
|---|---|
Unknown message id | API anahtarınızın çalışma alanında bu ID'ye sahip bir mesaj yok. ID'yi ve aynı çalışma alanından bir anahtar kullandığınızı kontrol edin. |
Auth Error | client_id ve api_key değerlerinin ikisini de gönderin. Geçersiz bir JSON gövdesi (örneğin sondaki bir virgül) de Auth Error döndürür. |
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. |
İpuçları#
- Anlık güncellemeler için webhook'ları tercih edin: mesajı gönderirken
webhookiletin; Wbiztool mesaj gönderildiğinde veya başarısız olduğunda sizi bilgilendirir, böylece sürekli sorgulama yapmanız gerekmez. İptal edilen ve süresi dolan mesajlar webhook tetiklemez; bunları burada kontrol edin. - Sorgulama: sorgulama yapıyorsanız,
statusartık0olmadığında durun. Kontroller arasında birkaç saniye bırakın. - Aynı anda çok sayıda mesaj: bir günün tüm mesajlarını kontrol etmek için her ID için bu endpoint'i çağırmak yerine Mesaj geçmişi endpoint'ini kullanın.
- Eski mesajlar temizlenir: yaklaşık 90 gündür değişmeyen gönderilmiş, başarısız, iptal edilmiş ve süresi dolmuş mesajlar
Unknown message iddöndürür. Bağlantısı kesik veya silinmiş bir numarada, oluşturulduktan veya zamanlandıktan 90 gün sonra hâlâ kuyrukta olan mesajlar da öyle. - Eski entegrasyonlar: gövdede
msg_idilePOST /api/v1/msg_status/kullanımı artık önerilmiyor. Aynı alanları döndürür. Sorgu dizesindeclient_id,api_keyvemsg_idileGETde kabul eder; bu da API anahtarınızı URL'lerde ve günlüklerde açığa çıkarır. Bu endpoint'e geçin.
