API Pesan
API Status Pesan
Periksa apakah pesan yang Anda kirim melalui API masih dalam antrean, sudah terkirim, atau gagal. Gunakan untuk memastikan pesan penting sudah terkirim dan untuk mengetahui mengapa sebuah pesan tidak terkirim.
https://wbiztool.com/api/v1/message/status/{msg_id}/Body: JSON atau field formulir
Masukkan ID pesan di URL, dengan mengganti {msg_id} dengan msg_id yang dikembalikan oleh Kirim pesan, Kirim ke grup, Kirim ke banyak nomor, atau Jadwalkan pesan. Contoh: https://wbiztool.com/api/v1/message/status/9817263/.
Contoh singkat#
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'];
}Ganti 12345 dan YOUR_API_KEY dengan nilai Anda sendiri. Lihat Autentikasi untuk mengetahui di mana menemukannya.
Parameter request#
URL
msg_idintegerwajibID pesan, sebagai bagian dari path URL. ID harus berupa bilangan bulat dan termasuk dalam workspace API key Anda.
Body
client_idintegerwajibAPI Client ID Anda dari Settings → API keys (Pengaturan → Kunci API).
api_keystringwajibAPI key Anda dari halaman yang sama.
Menggunakan klien resmi#
Klien Python memanggil endpoint ini untuk Anda.
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"))Klien mengembalikan field yang sama seperti API, jadi result["status"] adalah status pesan, bukan penanda keberhasilan. Error autentikasi memunculkan requests.HTTPError; baca penyebabnya dengan e.response.json()["message"].
Respons#
Endpoint mengembalikan HTTP 200 dengan status pesan saat ini:
{
"message": "Sent",
"status": 1,
"status_text": "Sent",
"error": ""
}
Pesan yang gagal:
{
"message": "Failed",
"status": 2,
"status_text": "Failed",
"error": "Phone number invalid"
}
| Field | Tipe | Deskripsi |
|---|---|---|
status | integer | Kode status pesan. Lihat tabel di bawah. |
status_text | string | Nama status: Created, Sent, Failed, Cancelled, atau Expired. |
message | string | Nilainya sama dengan status_text. |
error | string atau null | Alasan pesan gagal. Selalu ada; kosong ("" atau null) jika tidak ada error. |
Nilai status#
status | status_text | Arti |
|---|---|---|
0 | Created | Dalam antrean atau terjadwal, menunggu dikirim. |
1 | Sent | Sudah dikirim dari nomor WhatsApp Anda. |
2 | Failed | Tidak dapat dikirim, atau pengiriman terputus. error menjelaskan penyebabnya. Jika error berisi Sending was interrupted and may have been delivered. Check WhatsApp before resending., penerima mungkin sudah menerima pesan tersebut, jadi jangan kirim ulang secara otomatis. |
3 | Cancelled | Dibatalkan sebelum terkirim, misalnya dengan Batalkan pesan. |
4 | Expired | Tidak terkirim sebelum batas waktu expire_after_seconds. |
Sent adalah status sukses terakhir. Endpoint ini tidak melaporkan apakah pesan sudah sampai ke ponsel atau sudah dibaca.
Contoh nilai error untuk pesan yang gagal: 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.
Error#
{
"message": "Unknown message id",
"status": 0,
"status_text": "pending",
"error": "Invalid message id"
}
| Pesan | Cara memperbaikinya |
|---|---|
Unknown message id | Tidak ada pesan dengan ID tersebut di workspace API key Anda. Periksa ID-nya dan pastikan Anda menggunakan key dari workspace yang sama. |
Auth Error | Kirim client_id dan api_key. Body JSON yang tidak valid (misalnya ada koma di akhir) juga mengembalikan Auth Error. |
Invalid Client Id | Kirim client_id sebagai angka. Dikembalikan dengan HTTP 403. |
Auth Error: invalid api key | Pastikan key tersebut ada, belum dihapus, dan milik client_id ini. Dikembalikan dengan HTTP 400. |
Tips#
- Utamakan webhook untuk update real-time: kirim
webhooksaat mengirim pesan, dan Wbiztool akan memberi tahu Anda ketika pesan terkirim atau gagal, sehingga Anda tidak perlu melakukan polling. Pesan yang dibatalkan dan kedaluwarsa tidak memicu webhook, jadi periksa pesan tersebut di sini. - Polling: jika Anda melakukan polling, berhenti setelah
statustidak lagi bernilai0. Beri jeda beberapa detik di antara setiap pengecekan. - Banyak pesan sekaligus: untuk memeriksa pesan selama satu hari penuh, gunakan Riwayat pesan, bukan memanggil endpoint ini untuk setiap ID.
- Pesan lama dihapus: pesan terkirim, gagal, dibatalkan, dan kedaluwarsa yang tidak tersentuh selama sekitar 90 hari mengembalikan
Unknown message id. Begitu pula pesan yang masih dalam antrean 90 hari setelah dibuat atau dijadwalkan, pada nomor yang terputus atau dihapus. - Integrasi lama:
POST /api/v1/msg_status/denganmsg_iddi body sudah usang (deprecated). Endpoint tersebut mengembalikan field yang sama. Endpoint itu juga menerimaGETdenganclient_id,api_key, danmsg_iddi query string, yang membuat API key Anda terekspos di URL dan log. Beralihlah ke endpoint ini.
