We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.

Nachrichten

Nutze den /PHONE_NUMBER_ID/messages-Endpunkt, um Text, Medien, Kontakte, Standorte und interaktive Nachrichten und Nachrichtenvorlagen an deine Kund*innen zu senden. Erfahre mehr über die Nachrichten, die du senden kannst.

EndpunktAuthentifizierung

/PHONE_NUMBER_ID/messages

Developers can authenticate their API calls with the access token generated in the App Dashboard > WhatsApp > API Setup.


Solution Partners must authenticate themselves with an access token with the whatsapp_business_messaging permission.

Nachrichten werden durch eine eindeutige ID (WAMID) identifiziert. Du kannst den Nachrichtenstatus in den Webhooks über die entsprechende WAMID tracken. Du kannst eine eingehende Nachricht auch über den Nachrichtenendpunkt als gelesen markieren. Diese WAMID kann eine maximale Länge von bis zu 128 Zeichen haben.

Mit der Cloud API besteht nicht länger die Möglichkeit, explizit zu prüfen, ob eine Telefonnummer über eine WhatsApp-ID verfügt. Wenn du jemandem eine Nachricht über die Cloud API sendest, sende sie direkt an die Telefonnummer des Kunden, sofern er zugestimmt hat. Beispiele findest du unter Referenzen, Nachrichten.

Objekt „message“

Um eine Nachricht zu senden, musst du zunächst ein „message“-Objekt mit dem Inhalt zusammenstellen, den du senden möchtest. Dies sind die Parameter, die in einem message-Objekt verwendet werden:

NameBeschreibung (Klicke für unterstützte Optionen auf den Pfeil in der linken Spalte.)

audio

Objekt

Erforderlich, wenn type=audio ist.

Ein media-Objekt, das Audio enthält.

biz_opaque_callback_data

String

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 messages im WhatsApp-Unternehmenskonto abonniert hat, kann diesen String abrufen, da er im Objekt statuses in den Webhook-Payloads enthalten ist.


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.

contacts

Objekt

Erforderlich, wenn type=contacts ist.

Ein contacts-Objekt .

context

Objekt

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:


{"message_id":"MESSAGE_ID"}


Nur Cloud API.

document

Objekt

Erforderlich, wenn type=document ist.

Das media-Objekt, das ein Dokument enthält.

hsm

Objekt

Enthält ein hsm-Objekt. Diese Option wurde in Version v2.39 der On-Premises API eingestellt. Verwende stattdessen das template-Objekt.


Nur On-Premises API.

image

Objekt

Erforderlich, wenn type=image ist.

Ein media-Objekt, das ein Bild enthält.

interactive

Objekt

Erforderlich, wenn type=interactive ist.

Ein interactive-Objekt. Die Komponenten jedes interactive-Objekts folgen im Allgemeinen einem einheitlichen Muster: header, body, footer und action.

location

Objekt

Erforderlich, wenn type=location ist.

Ein location-Objekt.

messaging_product

String

Erforderlich

Messaging-Dienst, der für die Anfrage verwendet wird. Verwende "whatsapp".


Nur Cloud API.

preview_url

Boolescher Wert

Erforderlich, wenn type=text ist.

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:false (Standard), true.


Nur On-Premises API. Cloud API-Benutzer*innen können dieselbe Funktionalität mit dem preview_url-Feld innerhalb eines „text“-Objekts verwenden.

recipient_type

String

Optional.

Derzeit kannst du nur Nachrichten an Einzelpersonen senden. Lege hierfür individual fest.


Standard: individual

status

String

Der Status einer Nachricht. Mit diesem Feld kannst du eine Nachricht als read markieren. Weitere Informationen findest du in den folgenden Leitfäden:


sticker

Objekt

Erforderlich, wenn type=sticker ist.

Ein media-Objekt, das ein Sticker enthält.


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.

template

Objekt

Erforderlich, wenn type=template ist.

Ein template-Objekt.

text

Objekt

Erforderlich für SMS.

Ein text-Objekt.

to

String

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 contacts-Endpunkt aufrufen.

type

String

Optional.

Der Typ der Nachricht, die du senden möchtest. Wenn nicht angegeben, ist der Standardwert text.

Die folgenden Objekte sind im Objekt „message“ verschachtelt:

Objekt „contacts“

NameDescription

addresses

object

Optional.

Full contact address(es) formatted as an addresses object. The object can contain the following fields:

streetstringOptional. Street number and name.

citystringOptional. City name.

statestringOptional. State abbreviation.

zipstringOptional. ZIP code.

countrystringOptional. Full country name.

country_codestringOptional. Two-letter country abbreviation.

typestringOptional. Standard values are HOME and WORK.

birthday

Optional.

YYYY-MM-DD formatted string.

emails

object

Optional.

Contact email address(es) formatted as an emails object. The object can contain the following fields:

emailstringOptional. Email address.

typestringOptional. Standard values are HOME and WORK.

name

object

Required.

Full contact name formatted as a name object. The object can contain the following fields:

formatted_namestringRequired. Full name, as it normally appears.

first_namestringOptional*. First name.

last_namestringOptional*. Last name.

middle_namestringOptional*. Middle name.

suffixstringOptional*. Name suffix.

prefixstringOptional*. Name prefix.


*At least one of the optional parameters needs to be included along with the formatted_name parameter.

org

object

Optional.

Contact organization information formatted as an org object. The object can contain the following fields:

companystringOptional. Name of the contact's company.

departmentstringOptional. Name of the contact's department.

titlestringOptional. Contact's business title.

phones

object

Optional.

Contact phone number(s) formatted as a phone object. The object can contain the following fields:

phonestringOptional. Automatically populated with the `wa_id` value as a formatted phone number.

typestringOptional. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.

wa_idstringOptional. WhatsApp ID.

urls

object

Optional.

Contact URL(s) formatted as a urls object. The object can contain the following fields:

urlstringOptional. URL.

typestringOptional. Standard values are HOME and WORK.

Objekt „interactive“

NameBeschreibung

action

Objekt

Erforderlich.

Eine Handlung, die Benutzer*innen nach dem Lesen der Nachricht ausführen sollen.

body

Objekt

Optional für Typ product. Für andere Nachrichtentypen erforderlich.

Ein Objekt mit dem Nachrichtentext.


Das Objekt body enthält das folgende Feld:

textString – Erforderlich, wenn Text vorhanden ist. Der Inhalt der Nachricht. Emojis und Markdown werden unterstützt. Maximale Länge: 1024 Zeichen.

footer

Objekt

Optional. Ein Objekt mit der Fußzeile der Nachricht.


Das Objekt footer enthält das folgende Feld:

textString – Erforderlich, wenn Fußzeile vorhanden ist. Der Inhalt der Fußzeile. Emojis, Markdown und Links werden unterstützt. Maximale Länge: 60 Zeichen.

header

Objekt

Erforderlich für den Typen product_list. Für andere Typen optional.

Der Inhalt der Kopfzeile wird oben in der Nachricht angezeigt. Du kannst keine Kopfzeile festlegen, wenn das „interactive“-Objekt den Typ product hat. Weitere Informationen findest du im Abschnitt zum header-Objekt.

type

Objekt

Erforderlich.

Der Typ der interaktiven Nachricht, die du senden möchtest. Unterstützte Werte:


  • button: Wird für Antwort-Buttons verwendet.
  • catalog_message: Wird für Katalognachrichten verwendet.
  • list: Wird für Listennachrichten verwendet.
  • product: Wird für Nachrichten zu einzelnen Produkten verwendet.
  • product_list: Wird für Nachrichten zu mehreren Produkten verwendet.
  • flow: Wird für Flow-Nachrichten verwendet.

Die folgenden Objekte sind im Objekt interactive verschachtelt:

Objekt „action“

NameBeschreibung

button

String

Erforderlich für Listennachrichten.

Der Button-Inhalt. Dabei darf es sich nicht um eine leere Zeichenfolge handeln und muss innerhalb der Nachricht eindeutig sein. Emojis werden unterstützt, Markdown nicht.


Maximale Länge: 20 Zeichen.

buttons

Array von Objekten

Erforderlich für Antwort-Buttons.

Ein Button-Objekt kann die folgenden Parameter enthalten:


  • type: Als Typ wird nur reply unterstützt (für Antwort-Button)
  • title: Der Button-Titel. Dabei darf es sich nicht um eine leere Zeichenfolge handeln und muss innerhalb der Nachricht eindeutig sein. Emojis werden unterstützt, Markdown nicht. Maximale Länge: 20 Zeichen.
  • id: Die eindeutige Kennung für deinen Button. Diese ID wird im Webhook zurückgegeben, wenn der Button vom Benutzer angeklickt wird. Maximale Länge: 256 Zeichen.

Du kannst bis zu drei Buttons haben. Wenn du die ID festlegst, darf sie nicht mit einem Leerzeichen beginnen oder enden.

catalog_id

String

Erforderlich für Nachrichten für einzelne und mehrere Produkte.

Eindeutige ID des Facebook-Katalogs, der mit deinem WhatsApp-Unternehmenskonto verknüpft ist. Diese ID kann über den Meta Commerce Manager abgerufen werden.

product_retailer_id

String

Erforderlich für Nachrichten für einzelne und mehrere Produkte.

Eindeutige ID des Produkts im Katalog.


Um diese ID zu erhalten, öffne den Meta Commerce Manager und wähle dein Meta-Unternehmenskonto aus. Dir wird eine Liste der Shops angezeigt, die mit deinem Konto verbunden sind. Klicke auf den gewünschten Shop. Klicke links auf Katalog > Artikel und suche den Artikel, den du erwähnen möchtest. Die ID für diesen Artikel wird unter seinem Namen angezeigt.

sections

Array von Objekten

Erforderlich für Listennachrichten und Nachrichten für mehrere Produkte.

Ein Array aus section-Objekten. Mindestens 1, maximal 10. Siehe Objekt section.

mode

String

Optional für Flow-Nachrichten.

Der aktuelle Modus des Flows: entweder draft oder published.


Standard: published

flow_message_version

String

Erforderlich für Flow-Nachrichten.

Muss 3 sein.

flow_token

String

Erforderlich für Flow-Nachrichten.

Ein Token, der vom Unternehmen als Kennung generiert wird.

flow_id

String

Erforderlich für Flow-Nachrichten.

Eindeutige ID für den Flow, die von WhatsApp bereitgestellt wird.

flow_cta

String

Erforderlich für Flow-Nachrichten.

Text auf dem CTA-Button, z. B. „Anmelden“.


Maximale Länge: 20 Zeichen (keine Emoji).

flow_action

String

Optional für Flow-Nachrichten.

navigate oder data_exchange. Verwende navigate, um den ersten Bildschirm als Teil der Nachricht vorab zu definieren. Verwende data_exchange für erweiterte Anwendungsfälle, für die der erste Bildschirm von deinem Endpunkt zur Verfügung gestellt wird.


Standard: navigate

flow_action_payload

Objekt

Optional für Flow-Nachrichten.

Nur erforderlich, wenn flow_action gleich navigate ist. Das Objekt kann folgende Parameter enthalten:

screenString – Erforderlich. Die id des ersten Bildschirms des Flows.

dataObjekt – Optional. Die Eingabedaten für den ersten Bildschirm des Flows. Darf kein leeres Objekt sein.

Objekt „header“

NameBeschreibung

document

Objekt

Erforderlich, wenn für typedocument festgelegt wurde.

Enthält das Objekt „media“ für dieses Dokument.

image

Objekt

Erforderlich, wenn für typeimage festgelegt wurde.

Enthält das Objekt „media“ für dieses Bild.

text

String

Erforderlich, wenn für typetext festgelegt wurde.

Text für die Kopfzeile. Formatierung erlaubt Emojis, aber kein Markdown.


Maximale Länge: 60 Zeichen.

sub_text

String

Optional.

Text für die Kopfzeile. Formatierung erlaubt Emojis, aber kein Markdown.


Maximale Länge: 60 Zeichen.

type

String

Erforderlich.

Der gewünschte Kopfzeilentyp. Unterstützte Werte:


  • text: Wird für Listennachrichten, Antwort-Buttons und Nachrichten für mehrere Produkte verwendet.
  • video: Wird für Antwort-Buttons verwendet.
  • image: Wird für Antwort-Buttons verwendet.
  • document: Wird für Antwort-Buttons verwendet.

video

Objekt

Erforderlich, wenn für typevideo festgelegt wurde.

Enthält das Objekt „media“ für dieses Video.

Objekt „section“

NameBeschreibung

product_items

Array von Objekten

Erforderlich für Nachrichten zu mehreren Produkten.

Array von product-Objekten. Es gibt mindestens 1 Produkt pro Abschnitt und maximal 30 Produkte in allen Abschnitten.


Jedes product-Objekt enthält das folgende Feld:


  • product_retailer_idStringErforderlich für Nachrichten zu mehreren Produkten. Eindeutige ID des Produkts im Katalog. Um diese ID zu erhalten, öffne den Meta Commerce Manager und wähle dein Konto und den Shop aus, den du verwenden möchtest. Klicke dann auf Katalog > Artikel und suche den Artikel, den du erwähnen möchtest. Die ID für diesen Artikel wird unter seinem Namen angezeigt.

rows

Array von Objekten

Erforderlich für Listennachrichten.

Enthält eine Zeilenliste. Du kannst insgesamt 10 Zeilen in deinen Abschnitten haben.


Jede Zeile muss einen Titel (Maximale Länge: 24 Zeichen) und eine ID (Maximale Länge: 200 Zeichen) haben. Du kannst eine optionale Beschreibung hinzufügen (Maximale Länge: 72 Zeichen).


Beispiel:

"rows": [
  {
   "id":"unique-row-identifier-here",
   "title": "row-title-content-here",
   "description": "row-description-content-here",           
   }
]

title

String

Erforderlich, wenn sich in der Nachricht mehr als ein Abschnitt befindet.

Titel des Abschnitts.


Maximale Länge: 24 Zeichen.

Objekt „location“

NameDescription

latitude

Required.

Location latitude in decimal degrees.

longitude

Required.

Location longitude in decimal degrees.

name

Required.

Name of the location.

address

Required.

Address of the location.

Objekt „media“

Unter Medien-ID abrufen findest du Informationen darüber, wie du die ID deines „media“-Objekts abrufst. Weitere Informationen zu unterstützten Medientypen für die Cloud API findest du unter Unterstützte Medientypen.

NameDescription

id

string

Required when type is audio, document, image, sticker, or video and you are not using a link.


The media object ID. Do not use this field when message type is set to text.

link

string

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID (i.e. you are hosting the media asset on your public server).

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs.


Do not use this field when message type is set to text.


Cloud API users only:


  • See Media HTTP Caching if you would like us to cache the media asset for future messages.
  • When we request the media asset from your server you must indicate the media's MIME type by including the Content-Type HTTP header. For example: Content-Type: video/mp4. See Supported Media Types for a list of supported media and their MIME types.

caption

string

Optional.


Media asset caption. Do not use with audio or sticker media.


On-Premises API users:

  • For v2.41.2 or newer, this field is is limited to 1024 characters.
  • Captions are currently not supported for document media.

filename

string

Optional.


Describes the filename for the specific document. Use only with document media.


The extension of the filename will specify what format the document is displayed as in WhatsApp.

provider

string

Optional. On-Premises API only.

This path is optionally used with a link when the HTTP/HTTPS link is not directly accessible and requires additional configurations like a bearer token. For information on configuring providers, see the Media Providers documentation.

Objekt „template“

NameBeschreibung

namespace

Erforderlich.

Namespace der Vorlage


Ab v2.27.8 muss dies der mit dem WhatsApp-Unternehmenskonto verknüpfte Namespace sein, dem die mit dem aktuellen WhatsApp Business API-Client verknüpfte Telefonnummer zugewiesen ist.

name

Erforderlich.

Name der Vorlage

language

Erforderlich.

Gibt die Sprache an, in der die Vorlage dargestellt werden kann Nur die Sprachrichtlinie deterministic kann mit Medienvorlagennachrichten verwendet werden. Weitere Informationen findest du im Abschnitt Sprache.

components

Optional.

Array, das die Parameter der Nachricht enthält

Die folgenden Objekte sind im Objekt template verschachtelt:

Parameterobjekt „button“

NameBeschreibung (Klicke für unterstützte Optionen auf den Pfeil in der linken Spalte.)

type

String

Erforderlich.

Gibt den Parametertyp für den Button an.

Unterstützte Optionen

  • "payload"
  • "text"

payload

Erforderlich für quick_reply-Buttons.

Vom*von der Entwickler*in definierte Payload, die zusammen mit dem Anzeigetext auf dem Button zurückgegeben wird, wenn der Button angeklickt wird.


Unter Rückruf per Klick auf Schnellantwort-Button findest du hierzu ein Beispiel.

text

Erforderlich für URL-Buttons.

Von dem*der Entwickler*in bereitgestelltes Suffix, das an die vordefinierte Präfix-URL in der Vorlage angehängt ist.

Objekt „components“

NameBeschreibung

type

Erforderlich.

Beschreibt den component-Typ
Werte:header, body, footer

parameters

Optional.

Array, das den Inhalt der Nachricht enthält

Objekt „currency“

NameBeschreibung

fallback_value

Erforderlich.

Standardtext, wenn die Lokalisierung fehlschlägt

code

Erforderlich.

Währungscode gemäß der Definition in ISO 4217.

amount_1000

Erforderlich.

Betrag multipliziert mit 1000.

Date_Time-Objekt

NameBeschreibung

fallback_value

Erforderlich.

Standardtext. Für die Cloud API verwenden wir immer den Fallback-Wert und versuchen nicht, mithilfe anderer optionaler Felder zu lokalisieren.

Parameterobjekt

NameBeschreibung

type

String

Erforderlich.

Beschreibt den Parametertyp. Unterstützte Werte:


  • currency
  • date_time
  • document
  • image
  • text
  • video

Für textbasierte Vorlagen sind die einzigen unterstützten Parametertypen currency, date_time und text.

text

String

Erforderlich, wenn type=text ist.

Der Text der Nachricht. Die Zeichenbeschränkung variiert je nach dem folgenden enthaltenen Komponententyp.


Für den Komponententyp header:

  • 60 Zeichen

Für den Komponententyp body:

  • 1024 Zeichen, wenn andere Komponententypen enthalten sind
  • 32768 Zeichen, wenn body der einzige Komponententyp ist

currency

Objekt

Erforderlich, wenn type=currency ist.

Ein currency-Objekt.

date_time

Objekt

Erforderlich, wenn type=date_time ist.

Ein date_time-Objekt.

image

Objekt

Erforderlich, wenn type=image ist.

Ein media-Objekt vom Typ image. Untertitel werden nicht unterstützt, wenn sie in einer Medienvorlage verwendet werden.

document

Objekt

Erforderlich, wenn type=document ist.

Ein media-Objekt vom Typ document. Für medienbasierte Nachrichtenvorlagen werden nur PDF-Dokumente unterstützt. Untertitel werden nicht unterstützt, wenn sie in einer Medienvorlage verwendet werden.

video

Objekt

Erforderlich, wenn type=video ist.

Ein media-Objekt vom Typ video. Untertitel werden nicht unterstützt, wenn sie in einer Medienvorlage verwendet werden.

Objekt „text“

NameBeschreibung

body

String

Erforderlich für SMS.

Der Text der SMS-Nachricht, die URLs enthalten kann, die mit http:// oder https:// beginnen und formatiert sind. Die verfügbaren Formatierungsoptionen findest du hier.


Wenn du URLs in deinen Text und ein Vorschaufeld in SMS-Nachrichten (preview_url: true) einschließen möchtest, stelle sicher, dass die URL mit http:// oder https:// beginnt – https://-URLs werden bevorzugt. Sie müssen einen Hostnamen angeben, da IP-Adressen nicht abgeglichen werden.


Maximale Länge: 4096 Zeichen

preview_url

Boolescher Wert

Optional. Nur Cloud API.

Lege true fest, damit die WhatsApp Messenger- und WhatsApp Business-Apps versuchen, eine Linkvorschau jeder URL im body-Textstring zu rendern. URLs müssen mit http:// oder https:// beginnen. Wenn mehrere URLs im body-Textstring enthalten sind, wird nur die erste URL gerendert.


Wenn preview_url weggelassen wird oder keine Vorschau abgerufen werden kann, wird stattdessen ein anklickbarer Link angezeigt.


On Premises API-Benutzer*innen verwenden stattdessen preview_url in der obersten Nachrichten-Payload. Siehe Parameter.

Objekt „reaction“

NameBeschreibung

message_id

String

Erforderlich.

Die WhatsApp-Nachrichten-ID (wamid) der Nachricht, für die die Reaktion erscheinen soll. Die Reaktion wird nicht gesendet, wenn:


  • die Nachricht älter als 30 Tage ist.
  • die Nachricht eine Reaktionsnachricht ist.
  • die Nachricht gelöscht wurde.

Wenn es sich um eine ID einer gelöschten Nachricht handelt, wird die Nachricht nicht zugestellt.

emoji

String

Erforderlich.

Das Emoji, das in der Nachricht angezeigt werden soll.


  • Alle von Android- und iOS-Geräten unterstützten Emojis werden unterstützt.
  • Gerenderte Emojis werden unterstützt.
  • Wenn Emoji-Unicode-Werte verwendet werden, müssen die Werte Java- oder JavaScript-Escape-codiert sein.
  • Nur ein Emoji kann in einer Reaktionsnachricht gesendet werden.
  • Verwende einen leeren String, um ein zuvor gesendetes Emoji zu entfernen.

Übersicht

Leitfäden

In den folgenden Leitfäden findest du alle Informationen darüber, wie du den /messages-Endpunkt zum Senden von Nachrichten verwenden kannst:

Beispiele

Textnachrichten

curl -X  POST \
'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '
    {
      "messaging_product": "whatsapp",
      "recipient_type": "individual",
      "to": "PHONE_NUMBER",
      "type": "text",
      "text": { // the text object
        "preview_url": false,
        "body": "MESSAGE_CONTENT"
        }
    }'

Reaktionsnachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "reaction",
  "reaction": {
    "message_id": "wamid.HBgLM...",
    "emoji": "\uD83D\uDE00"
  }
}'

Mediennachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM-PHONE-NUMBER-ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE-NUMBER",
  "type": "image",
  "image": {
    "id" : "MEDIA-OBJECT-ID"
  }
}'

Standortnachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "to": "PHONE_NUMBER",
  "type": "location",
  "location": {
    "longitude": LONG_NUMBER,
    "latitude": LAT_NUMBER,
    "name": LOCATION_NAME,
    "address": LOCATION_ADDRESS
  }
}'

Kontaktnachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "to": "PHONE_NUMBER",
  "type": "contacts",
  "contacts": [{
      "addresses": [{
          "street": "STREET",
          "city": "CITY",
          "state": "STATE",
          "zip": "ZIP",
          "country": "COUNTRY",
          "country_code": "COUNTRY_CODE",
          "type": "HOME"
        },
        {
          "street": "STREET",
          "city": "CITY",
          "state": "STATE",
          "zip": "ZIP",
          "country": "COUNTRY",
          "country_code": "COUNTRY_CODE",
          "type": "WORK"
        }],
      "birthday": "YEAR_MONTH_DAY",
      "emails": [{
          "email": "EMAIL",
          "type": "WORK"
        },
        {
          "email": "EMAIL",
          "type": "HOME"
        }],
      "name": {
        "formatted_name": "NAME",
        "first_name": "FIRST_NAME",
        "last_name": "LAST_NAME",
        "middle_name": "MIDDLE_NAME",
        "suffix": "SUFFIX",
        "prefix": "PREFIX"
      },
      "org": {
        "company": "COMPANY",
        "department": "DEPARTMENT",
        "title": "TITLE"
      },
      "phones": [{
          "phone": "PHONE_NUMBER",
          "type": "HOME"
        },
        {
          "phone": "PHONE_NUMBER",
          "type": "WORK",
          "wa_id": "PHONE_OR_WA_ID"
        }],
      "urls": [{
          "url": "URL",
          "type": "WORK"
        },
        {
          "url": "URL",
          "type": "HOME"
        }]
    }]
}'

Interaktive Nachrichten

Nachrichten für einzelne Produkte

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
   "messaging_product": "whatsapp",
   "recipient_type": "individual",
   "to": "PHONE_NUMBER",
   "type": "interactive",
   "interactive": {
     "type": "product",
     "body": {
       "text": "optional body text"
     },
     "footer": {
       "text": "optional footer text"
     },
     "action": {
       "catalog_id": "CATALOG_ID",
       "product_retailer_id": "ID_TEST_ITEM_1"
     }
   }
 }'

Nachrichten für mehrere Produkte

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
 "messaging_product": "whatsapp",
   "recipient_type": "individual",
   "to": "PHONE_NUMBER",
   "type": "interactive",
   "interactive": {
     "type": "product_list",
     "header":{
       "type": "text",
       "text": "header-content"
     },
     "body": {
       "text": "body-content"
     },
     "footer": {
       "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": "section-title",
           "product_items": [
             { "product_retailer_id": "product-SKU-in-catalog" },
             { "product_retailer_id": "product-SKU-in-catalog" },
             ...
           ]
         }
       ]
     }
   }
 }

Katalognachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "interactive",
  "interactive" : {
    "type" : "catalog_message",
    "body" : {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "catalog_message",
      "parameters": { 
        "thumbnail_product_retailer_id": "<Product-retailer-id>"
      }
    }
  }
}'

Flow-Nachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "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": {
            "user_name": "name",
            "user_age": 25
          }
        }
      }
    }
  }
}'
  

Listennachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "interactive",
  "interactive": {
    "type": "list",
    "header": {
      "type": "text",
      "text": "HEADER_TEXT"
    },
    "body": {
      "text": "BODY_TEXT"
    },
    "footer": {
      "text": "FOOTER_TEXT"
    },
    "action": {
      "button": "BUTTON_TEXT",
      "sections": [
        {
          "title": "SECTION_1_TITLE",
          "rows": [
            {
              "id": "SECTION_1_ROW_1_ID",
              "title": "SECTION_1_ROW_1_TITLE",
              "description": "SECTION_1_ROW_1_DESCRIPTION"
            },
            {
              "id": "SECTION_1_ROW_2_ID",
              "title": "SECTION_1_ROW_2_TITLE",
              "description": "SECTION_1_ROW_2_DESCRIPTION"
            }
          ]
        },
        {
          "title": "SECTION_2_TITLE",
          "rows": [
            {
              "id": "SECTION_2_ROW_1_ID",
              "title": "SECTION_2_ROW_1_TITLE",
              "description": "SECTION_2_ROW_1_DESCRIPTION"
            },
            {
              "id": "SECTION_2_ROW_2_ID",
              "title": "SECTION_2_ROW_2_TITLE",
              "description": "SECTION_2_ROW_2_DESCRIPTION"
            }
          ]
        }
      ]
    }
  }
}'

Antwort-Button

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "body": {
      "text": "BUTTON_TEXT"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "UNIQUE_BUTTON_ID_1",
            "title": "BUTTON_TITLE_1"
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "UNIQUE_BUTTON_ID_2",
            "title": "BUTTON_TITLE_2"
          }
        }
      ]
    }
  }
}'

Vorlagennachrichten

curl -X  POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "http(s)://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT_STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "0",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "1",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      }
    ]
  }
}'

Antwort auf Nachricht

curl -X POST \
 'https://graph.facebook.com/v21.0/FROM_PHONE_NUMBER/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "context": {
     "message_id": "MESSAGE_ID"
  },
  "to": "PHONE_NUMBER",
  "type": "text",
  "text": {
    "preview_url": false,
    "body": "your-text-message-content"
  }
}’

Erfolgreiche Antwort

    {
      "messaging_product": "whatsapp",
      "contacts": [
        {
          "input": "16505555555",
          "wa_id": "16505555555"
        }
      ],
      "messages": [
        {
          "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA"
        }
      ]
    }
    

Applies to businesses in Brazil, Colombia, and Singapore, starting September 12, 2023. Applies to all businesses starting October 12, 2023.

Messages will have one of the following statuses which will be returned in each of the messages objects

  • "message_status":"accepted" : means the message was sent to the intended recipient
  • "message_status":"held_for_quality_assessment": means the message send was delayed until quality can be validated and it will either be sent or dropped at this point

      {
      "messaging_product": "whatsapp",
      "contacts": [
        {
          "input": "16505555555",
          "wa_id": "16505555555"
        }
      ],
      "messages": [
        {
          "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA",
          "message_status": "accepted",
        }
      ]
    }