API v2 (beta)
Abonelikten çıkanlar
Abonelikten çıkan kişi, çalışma alanınızın mesajlarını istemeyen biridir. Abonelikten çıkmış bir numaraya asla hiçbir şey gönderilmez: ona gönderilen yeni bir mesaj reddedilir ve daha önce kuyruğa alınmış mesajlar gönderilmek yerine Opted out hatasıyla başarısız olur. Bu, her gönderim yolunda geçerlidir: API (v1 ve v2), panel, kampanyalar, şablon mesajlar, hatırlatıcılar, Google Sheets ve Shopify.
Liste, paneldeki Kişiler sayfasının Abonelikten çıkanlar sekmesiyle aynıdır.
| İşlem | Endpoint | Kapsam |
|---|---|---|
| Bir numarayı abonelikten çıkarın | POST /api/v2/opt-outs | contacts |
| Abonelikten çıkanları listeleyin | GET /api/v2/opt-outs | contacts |
| Bir kaydı alın | GET /api/v2/opt-outs/{phone} | contacts |
| Bir numarayı yeniden abone edin | DELETE /api/v2/opt-outs/{phone} | contacts |
STOP yanıtları sizin için eklenir#
Biri gelen kutusu numaralarınızdan birine yalnızca bir abonelikten çıkma kelimesinden oluşan bir mesajla yanıt verdiğinde kendiliğinden abonelikten çıkar; source değeri reply olur ve mesajı keyword olarak kaydedilir. Yalnızca START (veya Subscribe) olan bir mesaj onu yeniden abone eder.
- Kelimeler, büyük veya küçük harfle, noktalama işaretli ya da işaretsiz:
STOP,Stop all,Unsubscribe,Opt out,Baja,Parar,Sair,Stopp,Abmelden,Arrêt,Désabonner,Basta,Disiscrivi,Стоп,Отписаться,Berhenti,Dur,توقف,إلغاء الاشتراك,עצור,הסר. - Yalnızca sadece kelimeden oluşan bir mesaj sayılır: "lütfen bana fiyat listesini göndermeyi durdurun" kimseyi abonelikten çıkarmaz.
- Yanıt verdikleri numarada gelen kutusu açık olmalıdır, çünkü gelen mesajları yalnızca gelen kutusu numaraları okur. Bir gelen kutusu numarası eklendiğinde okunanlar gibi 7 günden eski yanıtlar sayılmaz.
- Onlara hiçbir şey geri gönderilmez ve hiçbir otomatik yanıt STOP mesajını yanıtlamaz.
Bir numarayı abonelikten çıkarın#
https://wbiztool.com/api/v2/opt-outsGövde: JSON (application/json)
Gövde
phonestringzorunlu+ile uluslararası biçimde numara (+919876543210). Boşluklar, tireler ve parantezler yok sayılır. Bir Telegram@usernameda çalışır.notestringisteğe bağlıEkibiniz için neden, en fazla 200 karakter. Abonelikten çıkanlar sekmesinde gösterilir.
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);Yanıt: abonelikten çıkma kaydı ile birlikte 201. Zaten abonelikten çıkmış bir numara, mevcut kaydıyla ve hiçbir şey değiştirmeden 200 ile yanıt verir.
{
"recipient": "+919876543210",
"source": "api",
"keyword": null,
"note": "Asked by email",
"created_at": "2026-10-26T09:12:03.120Z"
}
Hatalar#
| HTTP | Kod | Ne zaman |
|---|---|---|
400 | validation_failed | note metin değil veya 200 karakterden uzun |
422 | invalid_phone | phone eksik veya bir telefon numarası değil |
Abonelikten çıkanları listeleyin#
https://wbiztool.com/api/v2/opt-outsAbonelikten çıkan herkes, en yeniden başlayarak sayfalar halinde (limit 1 ile 100 arası, varsayılan 25, ve cursor). Tek bir numarayı aramak için phone ekleyin.
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
}
Bir kaydı alın#
https://wbiztool.com/api/v2/opt-outs/{phone}Adresteki numara, + olmadan uluslararası biçimdedir (919876543210). Numara abonelikten çıkmamışsa 404 opt_out_not_found ile yanıt verir; bu yüzden göndermeden önce hızlı bir kontroldür.
curl https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Bir numarayı yeniden abone edin#
https://wbiztool.com/api/v2/opt-outs/{phone}Numaraya gönderilen mesajlar bundan sonra yeniden gider. Opted out olarak zaten başarısız olmuş mesajlar başarısız kalır. Bunu yalnızca kişi mesajlarınızı yeniden istediğinde yapın.
curl -X DELETE https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "recipient": "+919876543210", "deleted": true }
Abonelikten çıkmamış bir numara 404 opt_out_not_found ile yanıt verir.
Abonelikten çıkmış bir numaraya gönderim#
POST /messages422recipient_opted_outile yanıt verir ve hiçbir şey kuyruğa alınmaz. Toplu gönderimde toplu gönderimin tamamı reddedilir ve hatanınfieldalanı ilgili öğeyi belirtir.- Kişi abonelikten çıkmadan önce kuyruğa alınmış bir mesaj, sırası geldiğinde
errordeğeriOpted outile başarısız olur ve bir webhookmessage.failedalır. - API v1 mesajı kuyruğa alır ve mesaj, mesaj durumunda göreceğiniz gibi
Opted outile başarısız olur. - Kampanyalardaki Başarısızları tekrar dene bu mesajları atlar.
Opt-out nesnesi#
| Alan | Tür | Açıklama |
|---|---|---|
recipient | string | + ve numara ya da bir Telegram @username |
source | string | reply: bir gelen kutusu numarasına STOP yanıtı verdi. dashboard: Kişiler sayfasında eklendi. import: Kişiler sayfasında bir CSV'den. api: bu API |
keyword | string veya null | Onu abonelikten çıkaran yanıt, yazdığı şekliyle |
note | string veya null | Ekibinizin notu |
created_at | string | Abonelikten çıktığı zaman (ISO 8601, UTC) |
