Zum Inhalt springen
WbizTool

Messaging-API

An mehrere Nummern senden (Send to Multiple Numbers API)

Senden Sie dieselbe WhatsApp-Nachricht in einem Request an mehrere Telefonnummern und Gruppen. Nutzen Sie die API für kleine Rundsendungen wie Newsletter, Angebote und Ankündigungen.

POSThttps://wbiztool.com/api/v1/send_msg/multi/

Body: JSON oder Formularfelder

WbizTool erstellt pro Empfänger eine Nachricht und gibt für jede eine msg_id zurück, damit Sie ihren Status einzeln prüfen können.

Kurzes Beispiel#

curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "country_code": "91",
    "phone": "9876543210,9812345670,Sales Team Mumbai",
    "msg": "Our Diwali sale starts tomorrow. Get 20% off on all orders!"
  }'

Ersetzen Sie 12345, YOUR_API_KEY und 678 durch Ihre eigenen Werte. Wo Sie diese finden, steht unter Authentifizierung.

Request-Parameter#

Authentifizierung

client_idintegererforderlich

Ihre API-Client-ID aus Einstellungen → API-Schlüssel.

api_keystringerforderlich

Ihr API-Schlüssel von derselben Seite.

whatsapp_clientintegererforderlich

ID der WhatsApp-Nummer oder des Telegram-Kontos, von dem gesendet wird, aus den WhatsApp-Einstellungen. Anders als Nachricht senden wählt dieser Endpoint nie automatisch eine Nummer für Sie aus.

Empfänger und Nachricht

phonestringerforderlich

Telefonnummern und Gruppennamen in einem kommagetrennten String, zum Beispiel 9876543210,9812345670,Sales Team Mumbai. Senden Sie kein JSON-Array. Siehe Wie Empfänger gelesen werden.

country_codestringoptional

Internationale Vorwahl ohne +, zum Beispiel 91. Sie wird vor jede Telefonnummer gesetzt, sofern die Nummer nicht bereits damit beginnt oder mit + oder 00 geschrieben ist. In JSON funktionieren ein String ("91") und eine Zahl (91) gleichermaßen.

msg_typeintegeroptional

0 Text (Standard), 1 Bild, 2 Datei oder Dokument.

msgstringErforderlich, wenn msg_type 0 ist

Nachrichtentext. Bei Bildern und Dateien ist es die Bildunterschrift, die leer sein darf. WhatsApp-Formatierung funktioniert: *bold*, _italic_, ~strikethrough~. message wird als Alias akzeptiert.

Bilder und Dateien

img_urlstringErforderlich, wenn msg_type 1 ist

Öffentliche http- oder https-URL des Bildes.

file_urlstringErforderlich, wenn msg_type 2 ist

Öffentliche http- oder https-URL, von der die Datei direkt heruntergeladen werden kann.

file_namestringoptional

Dateiname, den die Empfänger sehen, zum Beispiel price-list.pdf. Er wird in Kleinbuchstaben gesendet, Zeichen wie & : ? * $ ; werden durch _ ersetzt, und er wird auf 150 Zeichen gekürzt. Wenn Sie den Parameter weglassen, wird der Name aus der URL übernommen.

Zustelloptionen

webhookstringoptional

URL, die für jede Nachricht einen POST erhält, wenn sie gesendet wird, fehlschlägt, storniert wird oder abläuft. Der Payload ist derselbe wie bei Nachricht senden.

Bild von einer URLcURL
curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 1,
    "country_code": "91",
    "phone": "9876543210,9812345670",
    "img_url": "https://example.com/offers/diwali-sale.jpg",
    "msg": "Our Diwali sale starts tomorrow."
  }'

Wie Empfänger gelesen werden#

WbizTool teilt phone an den Kommas auf, entfernt Leerzeichen um jeden Eintrag und entscheidet dann, was jeder Eintrag ist:

  • Telefonnummern können so geschrieben werden, wie Sie sie haben: +91 98765 43210, 98765-43210, (987) 654-3210, 0091 98765 43210 und +44 (0)20 7946 0018 funktionieren alle, ebenso Tabellenwerte wie 919876543210.0 und 9.19876543210E+11.
  • country_code wird vorangestellt, sofern die Nummer nicht bereits damit beginnt oder mit + oder 00 geschrieben ist: +44 20 7946 0018 mit country_code 91 bleibt 442079460018. Eine Liste kann also Länder mischen: Schreiben Sie die Nummern der anderen Länder mit +.
  • Eine örtliche Nummer mit ihrer führenden 0 funktioniert auch: 09876543210 mit country_code 91 geht an 919876543210, und 0612345678 mit 39 (Italien, wo die 0 zur Nummer gehört) geht an 390612345678.
  • Einschließlich Ländervorwahl muss eine Nummer 7 bis 15 Ziffern lang sein.
  • Text mit Buchstaben oder anderen Zeichen, zum Beispiel Sales Team Mumbai oder Family 2024, wird als Name einer WhatsApp-Gruppe behandelt, die genauso gesucht wird wie bei An Gruppe senden.
  • Ein Gruppenname ohne Buchstaben, zum Beispiel 2024-2025, wird als Telefonnummer gelesen, außer er hat weniger als 10 Ziffern und Ihr Arbeitsbereich hat schon eine Nachricht an eine Gruppe mit genau diesem Namen gesendet (sie steht unter Gruppen in Kontakte). Ein kurzer mit weniger als 7 Ziffern und einem Bindestrich, Punkt oder Klammern, zum Beispiel 2024-25 oder (2024), ist immer ein Gruppenname. Gruppennamen mit Kommas können über diesen Endpoint nicht gesendet werden. Verwenden Sie dafür An Gruppe senden.
  • Von einem Telegram-Konto aus ist ein @username, ein Link t.me/username oder tg:<id> eine Person, kein Gruppenname, und eine Telefonnummer geht an diese Person auf Telegram. Von einer WhatsApp-Nummer aus werden Benutzernamen, t.me-Links und tg:<id> übersprungen.

Außerdem wichtig:

  • Nummern, die nach dem Hinzufügen der Ländervorwahl zu kurz oder zu lang sind, gerundete Tabellenwerte und Einträge, die nur aus Nullen bestehen (0, 00), werden stillschweigend übersprungen. Sie erscheinen nicht in der Antwort und erhalten keine msg_id.
  • Duplikate werden nicht entfernt. Eine doppelt aufgeführte Nummer erhält zwei Nachrichten.
  • Wenn eine lokale Nummer zufällig mit denselben Ziffern wie country_code beginnt (zum Beispiel 9123456780 mit country_code 91), wird die Vorwahl nicht hinzugefügt. Senden Sie solche Nummern mit bereits enthaltener Ländervorwahl (919123456780).
  • Bild- und Datei-URLs werden beim Aufruf der API nicht geprüft. Sie werden erst beim Senden jeder Nachricht heruntergeladen, daher führt ein defekter Link später zum Fehlschlagen der Nachrichten und nicht des Requests. Es gelten dieselben Regeln beim Senden wie bei Nachricht senden: Bilder über 16 MB und Videos über 64 MB schlagen fehl, WAV- und OGG-Audio kann nicht als Bild (msg_type 1) gesendet werden, und an Dateien (msg_type 2) ohne Endung oder mit einer nicht unterstützten wird .pdf angehängt. Siehe Bilder und Dateien senden.

Nachrichtenlimits#

Der gesamte Stapel wird geprüft, bevor etwas erstellt wird, sodass eine Liste nie nur teilweise gesendet wird. Jeder nicht leere Eintrag in phone zählt, auch Einträge, die später übersprungen werden, und Nachrichten, die in der Warteschlange stehen, aber noch nicht gesendet wurden, zählen ebenfalls.

  • Jeder Plan: Der Stapel muss in das tägliche Fair-Use-Limit der Absendernummer passen – 1.000 Nachrichten in beliebigen 24 Stunden. Sonst werden keine Nachrichten erstellt und Sie erhalten:
{
  "message": "Daily limit reached: a number can send 1,000 messages in 24 hours (fair use). Send the rest tomorrow. 1200 messages requested, 640 more can go out from this number in the next 24 hours.",
  "code": "daily_limit_reached",
  "status": 0
}
  • Kostenloser Plan: Der Stapel muss außerdem in die verbleibenden kostenlosen Nachrichten des Arbeitsbereichs passen (50 in beliebigen 30 Tagen). Sonst erhalten Sie:
{
  "message": "Not enough credits: 120 messages requested, 35 credits remaining",
  "status": 0
}

Verteilen Sie große Listen auf mehrere Nummern oder Tage. Für große Kampagnen laden Sie stattdessen eine Tabelle auf der Seite Kampagnen hoch.

Antwort#

Ein erfolgreicher Request gibt HTTP 200 zurück:

{
  "msg_ids": [9817263, 9817264, 9817265],
  "messages": [
    { "msg_id": 9817263, "contact": "919876543210", "is_group": false },
    { "msg_id": 9817264, "contact": "919812345670", "is_group": false },
    { "msg_id": 9817265, "contact": "Sales Team Mumbai", "is_group": true }
  ],
  "message": "Successfully created 3 messages",
  "status": 1
}
FeldTypBeschreibung
statusinteger1, wenn mindestens eine Nachricht in die Warteschlange gestellt wurde, sonst 0.
messagestringSuccessfully created N messages bei Erfolg, andernfalls der Fehler.
msg_idsarray of integersIDs der Nachrichten in der Warteschlange, in der Reihenfolge von phone. Nur bei Erfolg vorhanden.
messagesarrayEin Objekt pro Nachricht in der Warteschlange. Nur bei Erfolg vorhanden.
messages[].msg_idintegerID der Nachricht.
messages[].contactstringDie Telefonnummer mit angewendeter Ländervorwahl oder der Gruppenname.
messages[].is_groupbooleantrue, wenn der Eintrag als Gruppenname behandelt wurde.

Vergleichen Sie messages mit der gesendeten Liste, um übersprungene Nummern zu finden, und prüfen Sie, dass is_group bei jedem Eintrag, den Sie als Telefonnummer gemeint haben, false ist.

Fehler#

Die meisten Fehler geben HTTP 200 mit status gleich 0 zurück. Prüfen Sie daher immer status im Body. Mit Ausnahme der Fehler mit HTTP 400 und 403 werden Antworten (auch erfolgreiche) als JSON mit Content-Type: text/html gesendet. Parsen Sie den Body daher selbst, statt sich auf die automatische JSON-Erkennung zu verlassen (zum Beispiel in No-Code-Tools):

{ "message": "Invalid whatsapp client", "status": 0 }
MeldungLösung
Auth ErrorSenden Sie client_id und api_key.
Invalid Client IdSenden Sie client_id als Zahl. Wird mit HTTP 403 zurückgegeben.
Auth Error: invalid api keyPrüfen Sie, ob der Schlüssel existiert, nicht gelöscht wurde und zu dieser client_id gehört. Wird mit HTTP 400 zurückgegeben.
Msg cant be nullTextnachrichten (msg_type 0) benötigen msg.
Image Url Can't be nullSenden Sie für msg_type 1 eine img_url.
File Url Can't be nullSenden Sie für msg_type 2 eine file_url.
Not enough credits: … messages requested, … credits remainingDie Nachrichten des kostenlosen Plans reichen nicht für die Liste. Senden Sie an weniger Empfänger oder wählen Sie einen Plan. Siehe Nachrichtenlimits.
Daily limit reached: … messages requested, … more can go out from this number in the next 24 hours.Verteilen Sie die Liste auf mehrere Tage oder Nummern. Siehe Nachrichtenlimits.
Invalid whatsapp clientDiese whatsapp_client-ID gehört nicht zu Ihrem Arbeitsbereich.
No valid contacts foundJeder Eintrag in phone war leer oder wurde übersprungen. Prüfen Sie, ob die Nummern mit Ländervorwahl 7 bis 15 Ziffern haben.
Demo Account can not access apisVerwenden Sie ein reguläres Konto.
Invalid JSON format: …Der JSON-Body ist ungültig, oder Sie haben Formularfelder ohne client_id gesendet.

Tipps#

  • Senden Sie phone als String: Verbinden Sie Ihre Liste mit Kommas. Ein JSON-Array liefert {} zurück.
  • Verwenden Sie send_bulk_messages des Python-Clients vorerst nicht: Die Methode sendet die Liste als phones, was dieser Endpoint ignoriert. Rufen Sie den Endpoint direkt auf, wie in den Beispielen oben.
  • Jede Nachricht verfolgen: Speichern Sie jede msg_id aus messages oder übergeben Sie einen webhook, um benachrichtigt zu werden, sobald jede Nachricht gesendet wird, fehlschlägt, storniert wird oder abläuft.
  • Halten Sie Ihre Nummer verbunden: Jede Nachricht wird von Ihrer WhatsApp-Nummer gesendet, daher muss sie in den WhatsApp-Einstellungen verbunden bleiben, bis der gesamte Stapel versendet ist.
  • Unterschiedlicher Text pro Person: Dieser Endpoint sendet allen dieselbe msg. Rufen Sie Nachricht senden einmal pro Empfänger auf, um jede Nachricht zu personalisieren.