API v2 (Beta)
Abmeldungen
Eine Abmeldung (Opt-out) ist eine Person, die keine Nachrichten Ihres Arbeitsbereichs möchte. An eine abgemeldete Nummer wird nie etwas gesendet: Eine neue Nachricht an sie wird abgelehnt, und früher eingereihte Nachrichten schlagen mit dem Fehler Opted out fehl, statt rauszugehen. Das gilt für jeden Weg, auf dem Sie senden: die API (v1 und v2), das Dashboard, Kampagnen, Nachrichtenvorlagen, Erinnerungen, Google Sheets und Shopify.
Die Liste ist dieselbe wie der Tab Abgemeldet unter Kontakte im Dashboard.
| Vorgang | Endpoint | Scope |
|---|---|---|
| Nummer abmelden | POST /api/v2/opt-outs | contacts |
| Abmeldungen auflisten | GET /api/v2/opt-outs | contacts |
| Eine Abmeldung abrufen | GET /api/v2/opt-outs/{phone} | contacts |
| Nummer wieder anmelden | DELETE /api/v2/opt-outs/{phone} | contacts |
STOP-Antworten werden automatisch eingetragen#
Antwortet jemand einer Ihrer Posteingangsnummern mit einer Nachricht, die nur aus einem Abmeldewort besteht, wird er von selbst abgemeldet, mit source reply und seiner Nachricht als keyword. Eine Nachricht, die nur START (oder Subscribe) lautet, meldet ihn wieder an.
- Die Wörter, in beliebiger Groß- und Kleinschreibung und mit oder ohne Satzzeichen:
STOP,Stop all,Unsubscribe,Opt out,Baja,Parar,Sair,Stopp,Abmelden,Arrêt,Désabonner,Basta,Disiscrivi,Стоп,Отписаться,Berhenti,Dur,توقف,إلغاء الاشتراك,עצור,הסר. - Nur eine Nachricht, die genau aus dem Wort besteht, zählt: „Stopp, bitte keine Preislisten mehr“ meldet niemanden ab.
- Die Nummer, der geantwortet wird, braucht den Posteingang, denn nur Posteingangsnummern lesen eingehende Nachrichten. Antworten, die älter als 7 Tage sind, etwa solche, die beim Hinzufügen einer Posteingangsnummer gelesen werden, zählen nicht.
- Es wird nichts an die Person zurückgesendet, und keine automatische Antwort beantwortet das STOP.
Nummer abmelden#
https://wbiztool.com/api/v2/opt-outsBody: JSON (application/json)
Body
phonestringerforderlichDie Nummer im internationalen Format mit
+(+919876543210). Leerzeichen, Bindestriche und Klammern werden ignoriert. Ein Telegram-@usernamefunktioniert auch.notestringoptionalDer Grund, für Ihr Team, bis zu 200 Zeichen. Wird auf dem Tab Abgemeldet angezeigt.
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);Antwort: 201 mit der Abmeldung. Eine Nummer, die schon abgemeldet war, antwortet mit 200 und ihrem bestehenden Eintrag, unverändert.
{
"recipient": "+919876543210",
"source": "api",
"keyword": null,
"note": "Asked by email",
"created_at": "2026-10-26T09:12:03.120Z"
}
Fehler#
| HTTP | Code | Wann |
|---|---|---|
400 | validation_failed | note ist kein Text oder länger als 200 Zeichen |
422 | invalid_phone | phone fehlt oder ist keine Telefonnummer |
Abmeldungen auflisten#
https://wbiztool.com/api/v2/opt-outsAlle, die sich abgemeldet haben, die neuesten zuerst, in Seiten (limit 1 bis 100, Standard 25, und cursor). Geben Sie phone an, um eine einzelne Nummer nachzuschlagen.
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
}
Eine Abmeldung abrufen#
https://wbiztool.com/api/v2/opt-outs/{phone}Die Nummer in der Adresse im internationalen Format ohne + (919876543210). Antwortet mit 404 opt_out_not_found, wenn die Nummer nicht abgemeldet ist; so ist es eine schnelle Prüfung vor dem Senden.
curl https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Nummer wieder anmelden#
https://wbiztool.com/api/v2/opt-outs/{phone}Nachrichten an die Nummer gehen ab jetzt wieder raus. Nachrichten, die bereits als Opted out fehlgeschlagen sind, bleiben fehlgeschlagen. Tun Sie das nur, wenn die Person Ihre Nachrichten wieder erhalten möchte.
curl -X DELETE https://wbiztool.com/api/v2/opt-outs/919876543210 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "recipient": "+919876543210", "deleted": true }
Eine Nummer, die nicht abgemeldet war, antwortet mit 404 opt_out_not_found.
An eine abgemeldete Nummer senden#
POST /messagesantwortet mit422recipient_opted_out, und nichts kommt in die Warteschlange. In einem Batch wird der ganze Batch abgelehnt, undfieldim Fehler nennt den Eintrag.- Eine Nachricht, die eingereiht wurde, bevor sich die Person abgemeldet hat, schlägt mit
errorOpted outfehl, wenn sie an der Reihe ist, und ein Webhook erhältmessage.failed. - API v1 stellt die Nachricht in die Warteschlange, und sie schlägt mit
Opted outfehl, wie Sie im Nachrichtenstatus sehen. - … Fehlgeschlagene erneut senden bei Kampagnen überspringt diese Nachrichten.
Das Opt-out-Objekt#
| Feld | Typ | Beschreibung |
|---|---|---|
recipient | string | + und die Nummer, oder ein Telegram-@username |
source | string | reply: hat einer Posteingangsnummer STOP geantwortet. dashboard: unter Kontakte hinzugefügt. import: aus einer CSV-Datei unter Kontakte. api: diese API |
keyword | string or null | Die Antwort, mit der sich die Person abgemeldet hat, so wie sie sie geschrieben hat |
note | string or null | Die Notiz Ihres Teams |
created_at | string | Wann sich die Person abgemeldet hat (ISO 8601, UTC) |
