API v2 (beta)
Berhenti langganan
Opt-out adalah orang yang berhenti langganan, yaitu tidak ingin menerima pesan dari workspace Anda. Tidak ada apa pun yang pernah dikirim ke nomor yang berhenti langganan: pesan baru ke nomor itu ditolak, dan pesan yang sudah masuk antrean sebelumnya gagal dengan error Opted out alih-alih terkirim. Ini berlaku untuk semua cara Anda mengirim: API (v1 dan v2), dashboard, kampanye, template pesan, pengingat, Google Sheets, dan Shopify.
Daftarnya sama dengan tab Berhenti langganan di Kontak pada dashboard.
| Operasi | Endpoint | Scope |
|---|---|---|
| Menghentikan langganan nomor | POST /api/v2/opt-outs | contacts |
| Daftar nomor yang berhenti langganan | GET /api/v2/opt-outs | contacts |
| Mengambil satu opt-out | GET /api/v2/opt-outs/{phone} | contacts |
| Mengizinkan nomor lagi | DELETE /api/v2/opt-outs/{phone} | contacts |
Balasan STOP ditambahkan otomatis#
Saat seseorang membalas ke salah satu nomor kotak masuk Anda dengan pesan yang hanya berisi kata berhenti langganan, ia berhenti langganan dengan sendirinya, dengan source reply dan pesannya sebagai keyword. Pesan yang hanya berisi START (atau Subscribe) mengizinkannya lagi.
- Kata-katanya, dengan huruf besar atau kecil dan dengan atau tanpa tanda baca:
STOP,Stop all,Unsubscribe,Opt out,Baja,Parar,Sair,Stopp,Abmelden,Arrêt,Désabonner,Basta,Disiscrivi,Стоп,Отписаться,Berhenti,Dur,توقف,إلغاء الاشتراك,עצור,הסר. - Hanya pesan yang berisi kata itu saja yang dihitung: "tolong berhenti kirimi saya daftar harga" tidak membuat siapa pun berhenti langganan.
- Nomor yang dibalas harus memakai kotak masuk, karena hanya nomor kotak masuk yang membaca pesan masuk. Balasan yang lebih lama dari 7 hari, seperti yang terbaca saat nomor kotak masuk ditambahkan, tidak dihitung.
- Tidak ada yang dikirim balik kepada mereka, dan tidak ada balasan otomatis yang menjawab STOP.
Menghentikan langganan nomor#
https://wbiztool.com/api/v2/opt-outsBody: JSON (application/json)
Body
phonestringwajibNomor dalam format internasional dengan
+(+919876543210). Spasi, tanda hubung, dan tanda kurung diabaikan.@usernameTelegram juga bisa.notestringopsionalAlasannya, untuk tim Anda, hingga 200 karakter. Ditampilkan di tab Berhenti langganan.
curl -X POST https://wbiztool.com/api/v2/opt-outs \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone": "+919876543210", "note": "Asked by email"}'import os
import requests
r = requests.post("https://wbiztool.com/api/v2/opt-outs", timeout=30,
headers={"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}"},
json={"phone": "+919876543210", "note": "Asked by email"})
print(r.status_code, r.json())// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const r = await fetch("https://wbiztool.com/api/v2/opt-outs", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ phone: "+919876543210", note: "Asked by email" }),
});
console.log(r.status, await r.json());<?php
$ch = curl_init('https://wbiztool.com/api/v2/opt-outs');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['phone' => '+919876543210', 'note' => 'Asked by email']),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);Respons: 201 dengan opt-out-nya. Nomor yang sudah berhenti langganan sebelumnya dijawab dengan 200 beserta entri yang sudah ada, tanpa perubahan.
{
"recipient": "+919876543210",
"source": "api",
"keyword": null,
"note": "Asked by email",
"created_at": "2026-10-26T09:12:03.120Z"
}
Error#
| HTTP | Kode | Kapan |
|---|---|---|
400 | validation_failed | note bukan teks atau lebih dari 200 karakter |
422 | invalid_phone | phone tidak ada atau bukan nomor telepon |
Daftar nomor yang berhenti langganan#
https://wbiztool.com/api/v2/opt-outsSemua orang yang berhenti langganan, yang terbaru lebih dulu, dalam halaman (limit 1 hingga 100, default 25, dan cursor). Tambahkan phone untuk mencari satu nomor.
curl "https://wbiztool.com/api/v2/opt-outs?limit=100" \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{
"data": [
{ "recipient": "+919876543210", "source": "reply", "keyword": "STOP", "note": null, "created_at": "2026-10-26T09:12:03.120Z" }
],
"next_cursor": null
}
Mengambil satu opt-out#
https://wbiztool.com/api/v2/opt-outs/{phone}Nomor di alamat ditulis dalam format internasional tanpa + (919876543210). Dijawab dengan 404 opt_out_not_found jika nomor itu tidak berhenti langganan, jadi ini cara cepat untuk memeriksa sebelum Anda mengirim.
curl https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Mengizinkan nomor lagi#
https://wbiztool.com/api/v2/opt-outs/{phone}Mulai sekarang pesan ke nomor itu dikirim lagi. Pesan yang sudah gagal sebagai Opted out tetap gagal. Lakukan ini hanya jika orang tersebut meminta pesan Anda lagi.
curl -X DELETE https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "recipient": "+919876543210", "deleted": true }
Nomor yang tidak berhenti langganan dijawab dengan 404 opt_out_not_found.
Mengirim ke nomor yang berhenti langganan#
POST /messagesdijawab dengan422recipient_opted_out, dan tidak ada yang masuk antrean. Dalam batch, seluruh batch ditolak danfieldpada error menyebutkan entrinya.- Pesan yang masuk antrean sebelum orang itu berhenti langganan gagal dengan
errorOpted outsaat gilirannya tiba, dan webhook menerimamessage.failed. - API v1 memasukkan pesan ke antrean, lalu pesan itu gagal dengan
Opted out, seperti yang terlihat di status pesan. - Coba lagi … yang gagal di kampanye melewati pesan-pesan ini.
Objek Opt-out#
| Field | Jenis | Keterangan |
|---|---|---|
recipient | string | + dan nomornya, atau @username Telegram |
source | string | reply: mereka membalas STOP ke nomor kotak masuk. dashboard: ditambahkan di Kontak. import: dari CSV di Kontak. api: API ini |
keyword | string or null | Balasan yang membuat mereka berhenti langganan, persis seperti yang mereka tulis |
note | string or null | Catatan tim Anda |
created_at | string | Kapan mereka berhenti langganan (ISO 8601, UTC) |
