Wir stellen die On-Premises API ein. Weitere Informationen und wie du auf unsere Cloud API der nächsten Generation migrieren kannst, findest du in unserem Dokument zur Einstellung der On-Premises API.
We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.
/v1/messages
Nutze den messages
-Node, um Text, Medien, Kontakte, Standorte und interaktive Nachrichten und Nachrichtenvorlagen an deine Kund*innen zu senden.
In den folgenden Leitfäden findest du Informationen zu den spezifischen Arten von Nachrichten, die du versenden kannst: Textnachrichten, Mediennachrichten, Kontakt- und Standortnachrichten, Interaktive Nachrichten, Nachrichtenvorlagen, Vorlagen für Mediennachrichten und Vorlagen für interaktive Nachrichten.
Voraussetzungen:
Ab Version 2.39 musst du den Kontakt-Node nicht mehr aufrufen, bevor du eine Nachricht sendest.
Du sendest Nachrichten unabhängig vom Nachrichtentyp, indem du einen POST
-Aufruf an den /messages
-Node sendest. Der Inhalt des JSON-Nachrichtentexts ist bei jedem Nachrichtentyp anders (SMS, Bild usw.).
Dies sind die Hauptparameter, die in /messages
-POST-Anforderungen verwendet werden:
Name | Beschreibung (Klicke für unterstützte Optionen auf den Pfeil in der linken Spalte.) |
---|---|
| Erforderlich, wenn Ein |
| Optional. Ein beliebiger String für das Tracking. Du kannst beispielsweise die Nachrichtenvorlagen-ID in diesem Feld übergeben, um den Verlauf deines*deiner Kund*in ab der ersten von dir gesendeten Nachricht zu tracken. Anschließend kannst du den ROI verschiedener Nachrichtenvorlagentypen tracken, um den effektivsten Typ zu ermitteln. Jede App, die das Webhook-Feld Die Cloud API verarbeitet dieses Feld nicht, sondern gibt es nur als Teil der Webhooks für gesendete/zugestellte/gelesene Nachrichten zurück. Maximal 512 Zeichen. Nur Cloud API. |
| Erforderlich, wenn Ein |
| Erforderlich, wenn auf eine Nachricht in der Unterhaltung geantwortet wird. Ein Objekt, das die ID einer vorherigen Nachricht enthält, auf die du antwortest. Beispiel:
Nur Cloud API. |
| Erforderlich, wenn Das |
| Enthält ein Nur On-Premises API. |
| Erforderlich, wenn Ein |
| Erforderlich, wenn Ein |
| Erforderlich, wenn Ein |
| Erforderlich Messaging-Dienst, der für die Anfrage verwendet wird. Verwende Nur Cloud API. |
| Erforderlich, wenn Ermöglicht eine URL-Vorschau in SMS-Nachrichten – weitere Informationen unter URLs in SMS-Nachrichten senden. Dieses Feld ist optional, wenn du keine URL in deine Nachricht einfügst. Werte: Nur On-Premises API. Cloud API-Benutzer*innen können dieselbe Funktionalität mit dem |
| Optional. Derzeit kannst du nur Nachrichten an Einzelpersonen senden. Lege hierfür Standard: |
| Der Status einer Nachricht. Mit diesem Feld kannst du eine Nachricht als
|
| Erforderlich, wenn Ein Cloud API: Zusätzlich zu allen Typen von eingehenden Stickern werden statische und animierte ausgehende Sticker von Drittanbietern unterstützt. Ein statischer Sticker muss 512 x 512 Pixel groß sein und darf 100 KB nicht überschreiten. Ein animierter Sticker muss 512 x 512 Pixel groß sein und darf 500 KB nicht überschreiten. On-Premises API: Zusätzlich zu allen Typen eingehender Stickern werden nur statische ausgehende Sticker von Drittanbietern unterstützt. Ein statischer Sticker muss 512 x 512 Pixel groß sein und darf 100 KB nicht überschreiten. Animierte Sticker werden nicht unterstützt. |
| Erforderlich, wenn Ein |
| Erforderlich für SMS. Ein |
| Erforderlich. Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an den/die du die Nachricht senden möchtest. Siehe Formate von Telefonnummern. Bei Bedarf können On-Premises-API-Benutzer*innen diese Nummer abrufen, indem sie den |
| Optional. Der Typ der Nachricht, die du senden möchtest. Wenn nicht angegeben, ist der Standardwert |
Name | Beschreibung |
---|---|
| Erforderlich. Enthält den Text der Nachricht, der URLs und Formatierung enthalten kann. |
Die Medienobjekt-ID für die On-Premises-API wird zurückgegeben, wenn die Medien erfolgreich über den media
-Endpunkt in den WhatsApp Business On-Premises-/Referenz-Client hochgeladen wurden.
Name | Description |
---|---|
| Required when The media object ID. Do not use this field when message |
| Required when The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Do not use this field when message Cloud API users only:
|
| Optional. Media asset caption. Do not use with On-Premises API users:
|
| Optional. Describes the filename for the specific document. Use only with The extension of the filename will specify what format the document is displayed as in WhatsApp. |
| Optional. On-Premises API only. This path is optionally used with a |
Innerhalb von contacts
kannst du folgende Objekte verschachteln: addresses
, emails
, name
, org
, phone
und urls
. Pluralisierte Objekte müssen wie unten dargestellt in einem Array eingeschlossen werden.
Name | Description |
---|---|
| Optional. Full contact address(es) formatted as an
|
| Optional.
|
| Optional. Contact email address(es) formatted as an
|
| Required. Full contact name formatted as a
*At least one of the optional parameters needs to be included along with the |
| Optional. Contact organization information formatted as an
|
| Optional. Contact phone number(s) formatted as a
|
| Optional. Contact URL(s) formatted as a
|
Beispiel eines contacts
-Objekts mit eingeschlossenen pluralisierten Objekten:
"contacts": [ { "addresses": [ { "city": "city name", "country": "country name", "country_code": "code", "state": "Contact's State", "street": "Contact's Street", "type": "Contact's Address Type", "zip": "Contact's Zip Code" } ], "birthday": "birthday", "emails": [ { "email": "email", "type": "HOME" }, { "email": "email", "type": "WORK" } ], "name": { "first_name": "first name value", "formatted_name": "formatted name value", "last_name": "last name value", "suffix": "suffix value" }, "org": { "company": "company name", "department": "dep name", "title": "title" }, "phones": [ { "phone": "Phone number", "wa-id": "WA-ID value", "type": "MAIN" }, { "phone": "Phone number", "type": "HOME" }, { "phone": "Phone number", "type": "WORK" } ], "urls": [{ "url": "some url", "type": "WORK" }] } ]
Name | Description |
---|---|
| Required. Location latitude in decimal degrees. |
| Required. Location longitude in decimal degrees. |
| Required. Name of the location. |
| Required. Address of the location. |
Innerhalb von template
kannst du die Objekte components
und language
verschachteln.
Ab Version v2.27.8
muss der namespace
einer Vorlage dem Namespace entsprechen, der mit dem WABA verknüpft ist, welcher Eigentümer der Telefonnummer im aktuellen lokalen WhatsApp Business Client ist. Ist dies nicht der Fall, kann die Nachricht nicht gesendet werden.
Außerdem ist ab Version v2.41
das Feld namespace
optional.
Name | Beschreibung |
---|---|
| Erforderlich. Namespace der Vorlage Ab |
| Erforderlich. Name der Vorlage |
| Erforderlich. Gibt die Sprache an, in der die Vorlage dargestellt werden kann Nur die Sprachrichtlinie |
| Optional. Array, das die Parameter der Nachricht enthält |
Innerhalb von components
kannst du das Objekt parameters
verschachteln. Zusätzlich kannst du als type
button
festlegen.
Name | Beschreibung |
---|---|
| Erforderlich. Beschreibt den |
| Optional. Array, das den Inhalt der Nachricht enthält |
Name | Beschreibung |
---|---|
| Erforderlich. Beschreibt den Die Medientypen ( Weitere Informationen zu |
Innerhalb des components
-Objekts kannst du für type
button
festlegen. Die Button-Parameter sehen wie folgt aus:
Name | Beschreibung |
---|---|
| Erforderlich. Art des erstellten Buttons. |
| Erforderlich. Positionsindex für den Button. Du kannst mit den Indexwerten |
| Erforderlich. Die Parameter für den Button, die zum Zeitpunkt der Erstellung im Business Manager festgelegt werden. Schließe die folgenden Parameter ein:
|
Beispiel eines button
-Typs mit dem sub_type quick_reply
:
{ "type": "button", "sub_type": "quick_reply", "index": 0, "parameters": [{ "type": "payload", "payload": "Yes-Button-Payload" }] }
Beispiel eines button
-Typs mit dem sub_type copy_code
{ "type": "button", "sub_type": "copy_code", "index": 0, "parameters": [{ "type": "coupon_code", "coupon_code": "DISCOUNT20" }] }
Das Objekt hsm
wird mit v2.39
des WhatsApp Business On-Premises-/Referenz-Clients eingestellt. Verwende stattdessen das template
-Objekt.
Name | Beschreibung |
---|---|
| Erforderlich. Der zu verwendende Namespace. Ab |
| Erforderlich. Der Elementname, der angibt, welche Vorlage innerhalb des Namespace verwendet werden soll. Ab |
| Erforderlich. Ermöglicht die Angabe einer deterministischen Sprache. Weitere Informationen findest du im Abschnitt Sprache. Dieses Feld ermöglichte in früheren Versionen eine |
| Erforderlich. Dieses Feld ist ein Array von Werten, die auf Variablen in der Vorlage angewendet werden. Weitere Informationen findest du im Abschnitt Lokalisierbare Parameter. |
The interactive
object generally contains 4 main components: header
, body
, footer
, and action
. Additionally, some of those components can contain one or more different objects:
header
, you can nest media
objects.action
, you can nest section
and button
objects.Name | Description |
---|---|
| Required. The type of interactive message you want to send. Supported values:
|
| Required for type Header content displayed on top of a message. You cannot set a The
|
| Optional for type An object with the body of the message. The
|
| Optional. An object with the footer of the message. The
|
| Required. An |
Name | Description |
---|---|
| Required for List Messages. Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters. |
| Required for Reply Button Messages. A
Wenn du die ID festlegst, darf sie nicht mit einem Leerzeichen beginnen oder enden. |
| Required for List Messages and Multi-Product Messages. Array of |
| Required for Single-Product Messages and Multi-Product Messages. Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via Commerce Manager. |
| Required for Single-Product Messages and Multi-Product Messages. Unique identifier of the product in a catalog. Maximum 100 characters for both Single-Product and Multi-Product messages. To get this ID, go to Commerce Manager, select your Facebook Business account, and you will see a list of shops connected to your account. Click the shop you want to use. On the left-side panel, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name. |
| Optional for Flows Messages. The current mode of the Flow, either Default: |
| Required for Flows Messages. Must be |
| Required for Flows Messages. A token that is generated by the business to serve as an identifier. |
| Required for Flows Messages. Unique identifier of the Flow provided by WhatsApp. |
| Required for Flows Messages. Text on the CTA button, eg. "Signup". Maximum length: 20 characters (no emoji). |
| Optional for Flows Messages.
Default: |
| Optional for Flows Messages. Required only if
|
Name | Description |
---|---|
| Required if the message has more than one Title of the section. Maximum length: 24 characters. |
| Required for List Messages. Contains a list of row objects. Limited to 10 rows across all sections. Each
|
| Required for Multi-Product Messages. Array of Each
|
Audionachrichten:
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "audio", "audio": { "id": "your-media-id", } }
Dokumentnachrichten mit filename
:
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "document", "document": { "id": "your-media-id", "filename": "your-document-filename" } }
Dokumentnachrichten mit link
:
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "document", "document": { "link": "http(s)://the-url" "provider": { "name" : "provider-name" } } }
Videonachrichten mit link
:
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "video", "video": { "link": "http(s)://the-url" "provider": { "name" : "provider-name" } } } }
Textnachrichten:
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "text", "text": { "body": "your-message-content" } }
Interaktive Nachrichten (Listen):
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "interactive", "interactive":{ "type": "list", "header": { "type": "text", "text": "your-header-content-here" }, "body": { "text": "your-text-message-content-here" }, "footer": { "text": "your-footer-content-here" }, "action": { "button": "cta-button-content-here", "sections":[ { "title":"your-section-title-content-here", "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] }, { "title":"your-section-title-content-here", "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] }, ... ] } } }
Interaktive Nachrichten (Antwort-Buttons):
POST /v1/messages { "recipient_type": "individual", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "button", "header": { # optional "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, # end header "body": { "text": "your-text-body-content" }, "footer": { # optional "text": "your-text-footer-content" }, "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } # end action } # end interactive }
Interaktive Nachrichten (Nachrichten für einzelne und mehrere Produkte):
{ "recipient_type": "individual", "to" : "{{Recipient-WA-ID}}", "type": "interactive", "interactive": { "type": "product", "body": { "text": "body text" }, "footer": { "text": "footer text" }, "action": { " _id": "catalog-ID", "product_retailer_id": "product-ID" } } }
Interaktive Nachrichten (Nachrichten für mehrere Produkte):
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive", "interactive": { "type": "product_list", "Header":{ "type": "text", "text": "text-header-content" }, "body":{ "text": "text-body-content" }, "footer":{ "text":"text-footer-content" }, "action":{ "catalog_id":"catalog-id", "sections": [ { "title": "section-title", "product_items": [ { "product_retailer_id": "product-SKU-in-catalog" }, { "product_retailer_id": "product-SKU-in-catalog" }, ... ]}, { "title": "the-section-title", "product_items": [ { "product_retailer_id": "product-SKU-in-catalog" } ... ]}, ... ] }, } }
Interaktive Nachrichten (Katalognachrichten):
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive", "interactive": { "type": "catalog_message", "body":{ "text": "text-body-content" }, "footer":{ "text":"text-footer-content" }, "action":{ "name": "catalog_message", "parameters":{ "thumbnail_product_retailer_id": "product-SKU-in-catalog" } }, } }
Interaktive Nachrichten (Flows):
{ "recipient_type": "individual", "to": "{{Recipient-WA-ID}}", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s", "flow_id": "<FLOW_ID>", "flow_cta": "Book!", "flow_action": "navigate", "flow_action_payload": { "screen": "<SCREEN_ID>", "data": { # optional "user_name": "name", "user_age": 25 } } } } } }
Im Folgenden findest du ein Beispiel für payload
in einer Antwort. Die Meta- und Fehlerobjekte wurden der Kürze halber weggelassen.
{ "messages": [{ "id": "message-id" }] }
Bei erfolgreicher Anfrage erhältst du eine Antwort mit einer Nachrichten-ID. Wenn die Anfrage einen errors
-Abschnitt zurückgibt, prüfe die Ursprungsnachricht und korrigiere die Fehler, bevor du die Anfrage erneut sendest. Weitere Informationen zu Fehlern findest du unter Fehlercodes des WhatsApp Business On-Premises-/Referenz-Clients und HTTP-Statuscodes.
Gilt ab dem 12. September 2023 für Unternehmen in Brasilien, Kolumbien und Singapur. Gilt ab dem 12. Oktober 2023 für alle Unternehmen.
Wenn die Anfrage aufgrund der Qualitätsbewertung zurückgehalten wird, enthält die Antwort die message_status
-Eigenschaft mit einer Nachricht, die angibt, dass die Nachricht nicht direkt gesendet wurde und nach der Überprüfung der Qualität gesendet oder verworfen wird. Diese Eigenschaft ist nur vorhanden, wenn die Nachricht zurückgehalten wird.
{ "messages": [{ "id": "message-id", "message_status": "Message has been held because quality assessment is pending", }] }
WhatsApp unterstützt einige Formatierungen in Nachrichten. Mit diesen Symbolen kannst du eine komplette Nachricht oder bestimmte Nachrichteninhalte formatieren:
Formatierung | Symbol | Beispiel |
---|---|---|
Fett | Sternchen (*) | Gesamtsumme: *10,50 €*. |
Kursiv | Unterstrich (_) | Willkommen bei _WhatsApp_! |
Tilde (~) | Das ist ~besser~ am besten! | |
| Drei Backticks (```) | ```print 'Hello World';``` |
In diesem Zusammenhang steht Performance für die Anzahl der Nachrichten, die in einer Sekunde mit dem WhatsApp Business On-Premises-/Referenz-Client gesendet werden können. Die maximal erreichbare Performance hängt von verschiedenen Faktoren ab. Die wichtigsten Faktoren sind dein Client-Setup und die Frage, ob eine Nachricht an eine*n neue*n oder eine*n vorhandene*n Nutzer*in gesendet werden soll. Die Einrichtung von Verschlüsselungssitzungen dauert etwas länger, wenn Nachrichten an eine*n neue*n Nutzer*in gesendet werden.
Client-Einrichtung | Unterstützte Textnachrichten pro Sekunde |
---|---|
Einzelne Shard | 70 |
Mehrere Shards (32 Shards) | 250 |
Hinweis: Bitte sende eine Nachricht nicht mehrmals über die WhatsApp Business API an denselben*dieselbe Empfänger*in.
Es kann mehrere Ursachen haben, wenn die Auslieferungsrate nicht 100 % beträgt. Beispielsweise kann es sein, dass Benutzer*innen nur sporadisch Zugriff auf das Netzwerk haben, für einen längeren Zeitraum nicht aktiv sind oder dass ein hochwertiges Nutzungserlebnis gewährleistet werden soll.
Nachrichten, die mit WhatsApp ausgeliefert werden können, haben eine sehr hohe Auslieferungsrate. Es gibt jedoch viele Gründe, warum eine Nachricht nicht ausgeliefert wird. Durch Verfolgen deiner Rückrufe hast du Zugriff auf den genauen Status einer Nachricht. Darin liegt beispielsweise der Unterschied zum Senden von Nachrichten per SMS, wo du keinen Zugriff auf den endgültigen Auslieferungsstatus hast und durch erneutes Senden der Nachricht möglicherweise tatsächlich ein anderes Ergebnis entsteht.
Nachrichten gelten womöglich weiterhin als „nicht ausgeliefert“, weil das Telefon eines*einer Benutzer*in außer Betrieb ist, der Akku leer ist oder der*die Benutzer*in es verloren hat, sich daraufhin ein neues Telefon gekauft und die SIM-Karte deaktiviert hat. Denkbar ist auch, dass der Unternehmenskunde beim Herstellen der Verbindung mit dem Netzwerk Fehlermeldungen erhalten hat. Es ist außerdem möglich, dass Rückrufe (Webhooks) nicht ausgeliefert werden. Diese Fälle kannst du mit dem Node health
überwachen. Durch Aktivieren von Server-Empfangsrückrufen hast du die Gewissheit, dass die Nachricht in der WhatsApp-Server-Cloud angekommen ist.
Wenn ein*e Benutzer*in erneut eine Verbindung mit dem Netzwerk herstellt, werden alle von dir gesendeten Nachrichten ausgeliefert. Bei dem*der Benutzer*in kommt es nicht gut an, wenn er mehrere Nachrichten mit demselben Inhalt erhält. Die Wahrscheinlichkeit steigt, dass der*die Benutzer*in dich blockiert oder sich über dich beschwert. Auch eine Sperrung wird wahrscheinlicher.
Wenn du eine Nachricht sendest und von der API eine Nachrichten-ID erhältst, hast du alles Nötige getan, um diese Nachricht zu senden. Du solltest denselben Inhalt nicht erneut an denselben Empfänger senden.
Wenn die Auslieferungsrate über einen längeren Zeitraum niedrig ist, öffne ein Support-Ticket beim Direct Support.
Wenn du eine Nachricht sendest und eine Nachrichten-ID erhältst, bedeutet das, dass die Nachrichtenanforderung in der Datenbank gespeichert wurde. Der WhatsApp Business API-Client versucht weiterhin, diese Nachricht zu senden, bis der Vorgang vom WhatsApp-Server bestätigt wird. Dieser Prozess ist nicht zeitlich begrenzt. Der WhatsApp-Server versucht dann, diese Nachricht an das Telefon des Nutzers zu übermitteln. Wenn das Telefon des Benutzers nicht online ist, wird die Nachricht 30 Tage lang gespeichert, bevor sie vom WhatsApp-Server entfernt wird.
Ja. Mit WhatsApp kannst du ausgewählten Text in deinen Nachrichten mit Fett, Kursiv, Durchgestrichen und Monospace formatieren.
Es gibt derzeit keine Möglichkeit zu sehen, wie viele oder welche Benutzer dein Unternehmen blockieren. Eine gute Möglichkeit, dies herauszufinden, ist, auf Status-Rückrufe zu warten. Wenn du den Status delivered
nicht erhältst, hat der Nutzer dein Unternehmen entweder blockiert oder er hat keine Verbindung zum Netzwerk. Weitere Informationen findest du in der Dokumentation zu Webhooks.
Wenn ein Nutzer dein Unternehmen gesperrt hat, wird diese Telefonnummer von der Kontakte-API weiterhin als ein gültiger WhatsApp-Nutzer zurückgegeben. Wenn du die Nachricht sendest, wird sie allerdings niemals zugestellt. Handelt es sich dabei um eine bezahlte Nachricht, fallen keine Kosten an.
Nein. Es wird nicht garantiert, dass Nachrichten in der Reihenfolge ankommen, in der sie gesendet wurden. Wenn die richtige Reihenfolge für deinen Anwendungsfall wichtig ist, schlagen wir vor, den „Zugestellt“-Rückruf abzuwarten, bevor du die zweite Nachricht sendest.
Bei Verwendung des messages
-Node musst du den Content-Type
-Header auf application/json
festlegen, damit der Nachrichtentext von WhatsApp Business API-Client richtig geparst wird. Es gibt auch einen Authorization
-Header, der festgelegt werden und einen nicht abgelaufenen Zugriffsschlüssel enthalten muss. Informationen dazu, wie du den Zugriffsschlüssel abrufen kannst und wann er abläuft, findest du in der Dokumentation zu Anmeldung und Authentifizierung
Es kann sein, dass du mehr Zeit benötigst, um eine Kundenanfrage zu bearbeiten, und du daher erst später als nach 24 Stunden antworten kannst. Wir empfehlen, Nachrichtenvorlagen zu erstellen, um:
In beiden Fällen solltest du der Nachrichtenvorlage möglichst viel Kontext hinzufügen. Beispiel: