Vorlagenverwaltungs-API
Übersicht
Mit der Vorlagenverwaltungs-API können Sie die Vorlagen eines WABA anlegen, löschen, ändern und abfragen sowie Vorlagen über benutzerdefinierte Tags gruppieren. Dieses Dokument umfasst zwei Gruppen von Endpunkten:
- Vorlagen-Endpunkte: Vorlagen abrufen, Vorlageninformationen abfragen, Beispiel-Mediendatei hochladen, Vorlage erstellen, Vorlage aktualisieren, Vorlage löschen.
- Tag-Endpunkte: Vorlagen-Tags abrufen, Vorlagen-Tag erstellen, Vorlagen-Tag ändern, Vorlagen-Tag löschen, Vorlagen-Tags zuweisen. Tags gelten innerhalb des WABA, zu dem der aktuelle API-Schlüssel gehört. Sie dienen ausschließlich der Vorlagenverwaltung auf EngageLab-Seite: Sie ändern keine WhatsApp-Vorlageninhalte und lösen keine erneute Prüfung durch Meta aus.
Aufrufvalidierung
Die EngageLab REST API nutzt die HTTP-Basic-Authentifizierung als Verifizierungsmethode. Fügen Sie dazu folgenden HTTP-Header hinzu:
Authorization: Basic ${base64_auth_string}
Der base64_auth_string wird wie folgt generiert: base64(DevKey:DevSecret)
- Der Header-Name lautet „Authorization“ und der Wert ist ein base64-kodiertes „Benutzername:Passwort“-Paar (getrennt durch einen Doppelpunkt).
- Im WhatsApp Business API-Szenario ist der Benutzername DevKey und das Passwort DevSecret. Diese Werte finden Sie im Konsolenbereich unter Konfigurationsmanagement – API-Schlüssel.
Vorlagen abrufen
Aufrufadresse
GET https://wa.api.engagelab.cc/v1/templates
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| name | String | Optional | Vorlagenname. Beachten Sie, dass dieses Feld eine unscharfe Suche verwendet. |
| language_code | String | Optional | Sprache der Vorlage, siehe Sprachcodes. |
| category | String | Optional | Vorlagenkategorie. ● AUTHENTICATION: Bestätigungscode ● MARKETING: Marketing ● UTILITY: Servicebenachrichtigung |
| status | String | Optional | Vorlagenstatus: Für Entwickler sind vor allem APPROVED/PENDING/REJECTED/DISABLED relevant. |
| tag_id | String | Optional | Tag-ID zum Filtern von Vorlagen nach Tag. Zulässige Werte:ungrouped - nur Vorlagen ohne jegliches Tag zurückgeben; Groß-/Kleinschreibung wird nicht berücksichtigt |
tag_id steht zu den übrigen Suchkriterien wie name, language_code, category und status in einer UND-Beziehung. Die Übergabe mehrerer Tags auf einmal wird derzeit nicht unterstützt. Bei ungültigem Format von tag_id wird der Fehlercode 3002 zurückgegeben; existiert das Tag nicht oder gehört es nicht zum aktuellen WABA, wird der Fehlercode 4001 zurückgegeben.
Hinweis: Existiert im WABA ein Tag mit dem Namen „ungrouped“ (oder dessen lokalisierter Entsprechung), müssen Sie zum Filtern nach diesem Tag dessen numerische Tag-ID übergeben. Die direkte Übergabe von ungrouped wird stets als „Vorlagen ohne Tag filtern“ behandelt.
Anfragebeispiel
Nach Tag filtern:
GET https://wa.api.engagelab.cc/v1/templates?tag_id=101
Vorlagen ohne Tag filtern:
GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
Antwortparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| id | String | Erforderlich | Vorlagen-ID |
| name | String | Erforderlich | Vorlagenname |
| language | String | Erforderlich | Sprache der Vorlage, siehe Sprachcodes. |
| category | String | Erforderlich | Vorlagenkategorie. |
| components | Object Array | Erforderlich | Komponenten des Vorlageninhalts, siehe das components-Objekt unter Vorlage erstellen. |
| status | String | Erforderlich | Vorlagenstatus: Für Entwickler sind vor allem APPROVED/PENDING/REJECTED/DISABLED relevant. |
| tags | Object Array | Erforderlich | Die aktuell für die Vorlage gesetzten Tags. Ist kein Tag gesetzt, wird ein leeres Array zurückgegeben. |
Antwortbeispiel
// Ein JSON-Array, in dem jedes Objekt die Informationen einer Vorlage enthält
[
{
"id": "406979728071589", // Vorlagen-ID
"name": "code", // Vorlagenname
"language": "zh_CN", // Sprache der Vorlage
"status": "APPROVED", // Status; APPROVED bedeutet genehmigt und verwendbar
"category": "OTP", // Kategorie; derzeit werden OTP/TRANSACTIONAL/MARKETING unterstützt
"components": [ // Vorlageninhalt; kann HEADER/BODY/FOOTER/BUTTON enthalten
{
"type": "HEADER",
"format": "text", // Format; text/image/location/video/document werden unterstützt, Standard TEXT
"text": "Registrierungscode" // Textinhalt; erforderlich, wenn format text ist
},
{
"type": "BODY",
"text": "Ihr Bestätigungscode lautet {{1}}. Bitte geben Sie ihn innerhalb von 5 Minuten ein." // In doppelte geschweifte Klammern {{}} gesetzter Text ist eine Vorlagenvariable
}
],
"tags": [ // für diese Vorlage gesetzte Tags; leeres Array, wenn kein Tag gesetzt ist
{
"id": "101",
"name": "Versandbenachrichtigung"
}
]
},
......
]
Vorlageninformationen abfragen
Aufrufadresse
GET https://wa.api.engagelab.cc/v1/templates/{template_id}
Dabei ist {template_id} die ID der abzufragenden Vorlage.
Anfrageparameter
NULL
Anfragebeispiel
GET https://wa.api.engagelab.cc/v1/templates/406979728071589
Antwortparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| id | String | Erforderlich | Vorlagen-ID |
| name | String | Erforderlich | Vorlagenname |
| language | String | Erforderlich | Sprache der Vorlage, siehe Sprachcodes. |
| category | String | Erforderlich | Vorlagenkategorie. Hinweis: Die Vorlagenkategorien wurden spätestens am 1. Mai 2023 aktualisiert auf: |
| components | Object Array | Erforderlich | Komponenten des Vorlageninhalts, siehe das components-Objekt unter Vorlage erstellen. |
| status | String | Erforderlich | Vorlagenstatus: APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED |
| tags | Object Array | Erforderlich | Die aktuell für die Vorlage gesetzten Tags. Ist kein Tag gesetzt, wird ein leeres Array zurückgegeben. |
Antwortbeispiel
{
"id": "406979728071589", // Vorlagen-ID
"name": "code", // Vorlagenname
"language": "zh_CN", // Sprache der Vorlage
"status": "APPROVED", // Status; APPROVED bedeutet genehmigt und verwendbar
"category": "OTP", // Kategorie; derzeit werden OTP/TRANSACTIONAL/MARKETING unterstützt
"components": [ // Vorlageninhalt; kann HEADER/BODY/FOOTER/BUTTON enthalten
{
"type": "HEADER",
"format": "text", // Format; text/image/location/video/document werden unterstützt, Standard TEXT
"text": "Registrierungscode" // Textinhalt; erforderlich, wenn format text ist
},
{
"type": "BODY",
"text": "Ihr Bestätigungscode lautet {{1}}. Bitte geben Sie ihn innerhalb von 5 Minuten ein." // In doppelte geschweifte Klammern {{}} gesetzter Text ist eine Vorlagenvariable
}
],
"tags": [ // für diese Vorlage gesetzte Tags; leeres Array, wenn kein Tag gesetzt ist
{
"id": "101",
"name": "Versandbenachrichtigung"
}
]
}
Beispiel-Mediendatei hochladen
Beim Erstellen oder Bearbeiten einer Vorlage mit einem Medien-Header (image, video, document) verlangt Meta, dass die Mediendatei zunächst auf die Server von Meta hochgeladen wird. Diese API lädt die Beispieldatei der Vorlage hoch und liefert eine handle_id, die Sie im Feld header_handle des Endpunkts zum Erstellen/Bearbeiten von Vorlagen angeben.
Aufrufadresse
POST https://wa.api.engagelab.cc/v1/media/handles
Anfrageparameter
Content-Type: multipart/form-data
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| file | file | Erforderlich | Beispiel-Mediendatei. Größenbeschränkung 20 MB. Zu den Formatanforderungen siehe Formatanforderungen für Mediennachrichten. |
Anfragebeispiel
POST '/v1/media/handles'
--header 'Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0'
--form 'file=@"/Users/demo/files/demopic.jpeg"'
Antwortparameter
Erfolgreiche Antwort
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| handle_id | String | Erforderlich | Die von Meta zurückgegebene Dateikennung, die beim Erstellen oder Bearbeiten einer Vorlage im Feld example.header_handle anzugeben ist. |
Antwortbeispiel:
{
"handle_id": "4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlczcn4hxLC6tkwjasjD4WL6_i34tIisq0IdWNFFFj1KwJMRXPU4xwygHSJd4DHu1f19LcBBl2qeb8EuEcgnIUPYIQ:e:1682169041:4985146461608173:100084026087657:ARazr9kxfzKshJE4WpY"
}
Fehlerhafte Antwort
Der HTTP-Statuscode lautet 4xx oder 5xx, und der Antworttext enthält die folgenden Felder:
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode |
| message | String | Erforderlich | Fehlerdetails |
Antwortbeispiel:
{
"code": 3002,
"message": "whatsapp.template field must be set correctly when type is template"
}
Vorlage erstellen
Aufrufadresse
POST https://wa.api.engagelab.cc/v1/templates
Aufrufbeispiel
{
"name": "template_name", // Vorlagenname; gleichnamige Vorlagen sind zulässig; nur Kleinbuchstaben, Ziffern und Unterstriche werden unterstützt
"language": "zh_CN", // Sprache der Vorlage; gleichnamige Vorlagen dürfen nicht dieselbe Sprache verwenden
"category": "OTP", // Kategorie; derzeit werden OTP/TRANSACTIONAL/MARKETING unterstützt
"components": [
{ // Vorlageninhalt
"type": "BODY", // Inhaltsblock; derzeit werden HEADER/BODY/FOOTER/BUTTONS unterstützt
"text": "define var as {{1}}" // der eigentliche Text; das Feld format ist nicht erforderlich, wenn der Body Text ist
"example": {
"body_text": [
[
"var1"
]
]
}
},
{
"type": "HEADER",
"format": "image", // Inhaltstyp; text/image/video/document/location werden unterstützt
"example": {
"header_handle": [
"https://jiguang.cn/demopic.jpg"
]
}
},
{
"type": "FOOTER",
"text": "footer only support text without variable"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER", // Schaltflächentyp; PHONE_NUMBER/URL/QUICK_REPLY werden unterstützt
"text": "this is a phone number",
"phone_number": "8613800138000"
}
]
}
]
}
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| name | String | Erforderlich | Vorlagenname. Nur Kleinbuchstaben, Ziffern und Unterstriche werden unterstützt, maximal 512 Zeichen. |
| language | String | Erforderlich | Sprache der Vorlage, siehe Sprachcodes. |
| category | String | Erforderlich | Vorlagenkategorie. Hinweis: Die Vorlagenkategorien wurden spätestens am 1. Mai 2023 aktualisiert auf: |
| components | Object Array | Erforderlich | Komponenten, die den Vorlageninhalt beschreiben, siehe components-Objekt. Beachten Sie, dass eine Komponente mit type=BODY enthalten sein muss. |
components-Objekt
Dieses Objekt beschreibt den Vorlageninhalt. Eine Vorlage besteht aus den Komponenten „Header HEADER“, „Body BODY“, „Footer FOOTER“ und „Buttons BUTTONS“, die über type angegeben werden. Die verschiedenen Komponententypen unterstützen unterschiedliche Parameter:
header-Komponente
Die header-Komponente ist insgesamt optional. Wenn Sie keinen Header benötigen, geben Sie diese Komponente einfach nicht an.
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| type | String | Erforderlich | Komponententyp, Wert HEADER |
| format | String | Erforderlich | Header-Format, Werte: text, image, video, document — entsprechend Text, Bild, Video und Datei. |
| text | String | Optional | Textinhalt des Headers. Setzen Sie dieses Feld, wenn format=text. Der Header-Text kann eine Variable enthalten, es wird jedoch nur 1 Variable unterstützt, dargestellt als {{1}}. |
| example | JSON Object | Optional | Header-Beispiel. Erforderlich, wenn text eine Variable enthält oder format ein Medientyp ist. Siehe Beschreibung des example-Objekts. |
Beschreibung des example-Objekts
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| header_handle | String Array | Optional | Erforderlich, wenn format image, video oder document ist. Dieses Feld akzeptiert keine Medien-URL mehr; Sie müssen die über die API „Beispiel-Mediendatei hochladen“ erhaltene handle_id übergeben. |
| header_text | String Array | Optional | Wenn format text ist und eine Variable enthält, übergeben Sie in diesem Feld den Ersatzwert dieser Variablen. Beispiel: "header_text": ["var1"] |
body-Komponente
Die body-Komponente ist erforderlich; der Body-Inhalt muss gesetzt werden.
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| type | String | Erforderlich | Komponententyp, Wert BODY |
| text | String | Erforderlich | Body-Inhalt, maximal 1024 Zeichen. Mehrere Variablen werden unterstützt. Eine Variable besteht aus doppelten geschweiften Klammern und der Variablennummer; die Nummerierung muss bei 1 beginnen und fortlaufend sein, z. B. {{1}} und {{2}}. |
| example | JSON Object | Optional | Body-Beispiel. Die Prüfer von Meta beurteilen anhand des Beispiels, ob Ihre Nachricht den Richtlinien entspricht. Siehe Beschreibung des example-Objekts. Erforderlich, wenn text Variablen enthält. |
Beschreibung des example-Objekts
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| body_text | String Array | Optional | Wenn text Variablen enthält, übergeben Sie in diesem Feld die Ersatzwerte aller Variablen in der Reihenfolge ihrer Nummerierung. Beispiel: "body_text": [["var1","var2","var3"]] |
footer-Komponente
Die footer-Komponente ist insgesamt optional. Wenn Sie keinen Footer benötigen, geben Sie diese Komponente einfach nicht an.
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| type | String | Erforderlich | Komponententyp, Wert FOOTER |
| text | String | Erforderlich | Footer-Inhalt. Nur reiner Text; Variablen dürfen nicht definiert werden. |
buttons-Komponente
Die buttons-Komponente ist insgesamt optional. Wenn Sie keine Schaltflächen benötigen, geben Sie diese Komponente einfach nicht an.
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| type | String | Erforderlich | Komponententyp, Wert BUTTONS |
| buttons | Object Array | Erforderlich | Schaltflächeninformationen, siehe Beschreibung des buttons-Objekts. |
Beschreibung des buttons-Objekts
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| type | String | Erforderlich | Schaltflächentyp, Werte: QUICK_REPLY, URL, PHONE_NUMBER — entsprechend Schnellantwort, Website aufrufen und Telefonnummer anrufen. |
| text | String | Erforderlich | Der Text auf der Schaltfläche. Darf keine Variablen enthalten, nur reiner Text, maximal 25 Zeichen. |
| url | String | Optional | Erforderlich, wenn type=URL. Sie können am Ende der URL eine Variable setzen; es wird nur 1 Variable unterstützt, dargestellt als {{1}}. |
| phone_number | String | Optional | Erforderlich, wenn type=PHONE_NUMBER. Darf keine Variablen enthalten. Der Wert ist eine Telefonnummer inklusive internationaler Vorwahl. |
| example | String Array | Optional | Erforderlich bei type=QUICK_REPLY und type=URL. Beispiel: "example": [" https://www.website.com/dynamic-url-example"] |
Besondere Hinweise zu Authentifizierungsvorlagen
Zu beachten
Für Vorlagen der Authentifizierungskategorie (also AUTHENTICATION):
- Setzen Sie in Components keine HEADER-Komponente.
- Der Text des Vorlageninhalts wird anhand des Feldes language der Vorlage automatisch lokalisiert.
- Für den ONE_TAP-Modus zum Öffnen einer App werden derzeit nur Android-Apps unterstützt, und Sie müssen in Ihrer App den entsprechenden Handshake implementieren. Eine ausführliche Anleitung finden Sie in der offiziellen Dokumentation – Authentifizierungsvorlagen.
- Die beim Erstellen einer Vorlage übermittelten Parameterfelder stimmen nicht mit den nach der Erstellung auf WhatsApp-Seite gespeicherten Vorlagenfeldern überein; im Kern ersetzt WhatsApp bei Vorlagen dieser Kategorie BODY, FOOTER und BUTTONS. Achten Sie deshalb beim Versenden von Vorlagennachrichten besonders darauf, die Button-Variable zu ergänzen. Einzelheiten finden Sie in der Dokumentation zur Nachrichtenversand-API.
COPY_CODE-Beispiel
Übermittelte Daten:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// body ist erforderlich
"type": "BODY",
"add_security_recommendation": true // ob der Sicherheitshinweis ergänzt werden soll
},
{
// footer ist optional
"type": "FOOTER",
"code_expiration_minutes": 2 // ergänzt die Anzeige der Ablaufzeit, Bereich [1,90]; das Feld weglassen, wenn nicht benötigt
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "copy_code",
"text": "copy it" // Längenbeschränkung 25 Zeichen
}
]
}
]
}
Der nach erfolgreicher Erstellung tatsächlich auf WhatsApp-Seite gespeicherte Vorlageninhalt:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "*{{1}}* ist Ihr Bestätigungscode. Geben Sie diesen Code aus Sicherheitsgründen nicht weiter.",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "Dieser Code läuft in 2 Minuten ab."
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "Copy code",
"url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}",
"example": [
"https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456"
]
}]
}
]
}
ONE_TAP-Beispiel
Übermittelte Daten:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// body ist erforderlich
"type": "BODY",
"add_security_recommendation": true // ob der Sicherheitshinweis ergänzt werden soll
},
{
// footer ist optional
"type": "FOOTER",
"code_expiration_minutes": 2 // ergänzt die Anzeige der Ablaufzeit, Bereich [1,90]; das Feld weglassen, wenn nicht benötigt
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "one_tap",
"text": "auto1", // Längenbeschränkung 25 Zeichen
"autofill_text": "auto1", // Längenbeschränkung 25 Zeichen
"package_name": "ppssd",
"signature_hash": "asds"
}
]
}
]
}
Der nach erfolgreicher Erstellung tatsächlich auf WhatsApp-Seite gespeicherte Vorlageninhalt:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "*{{1}}* ist Ihr Bestätigungscode. Geben Sie diesen Code aus Sicherheitsgründen nicht weiter.",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "Dieser Code läuft in 2 Minuten ab."
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "copy1",
"url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp{{1}}",
"example": ["https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp123456"]
}]
}
]
}
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| template_id | String | Erforderlich | Vorlagen-ID, wird bei Erfolg zurückgegeben |
{
"template_id": "1275172986566180" // Vorlagen-ID
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 5002,
"message": "Invalid parameter. code:100:2388042"
}
Vorlage aktualisieren
Aufrufadresse
PUT https://wa.api.engagelab.cc/v1/templates/{templateId}
Aufrufbeispiel
{
"components": [{ // Vorlageninhalt
"type": "BODY", // Inhaltsblock
"text": "define var as {{1}}",
"example": {
"body_text": [["var1"]]
}
},{
"type": "HEADER",
"format": "image", // Inhaltstyp: image/video/document
"example": {
// Hinweis: Hier muss die vom Upload-Endpunkt zurückgegebene handle_id angegeben werden; eine Bild-URL wird nicht mehr unterstützt
"header_handle": ["4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlcz..."]
}
},{
"type": "FOOTER",
"text": "footer only support text without variable"
},{
"type": "BUTTONS",
"buttons": [{
"type": "PHONE_NUMBER",
"text": "this is a phone number",
"phone_number": "8613800138000"
}]
}]
}
Anfrageparameter
Identisch mit den Anfrageparametern des Endpunkts zum Erstellen von Vorlagen.
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Rückgabecode, immer 0 |
| message | String | Erforderlich | Rückgabemeldung, immer success |
{
"code": 0,
"message": "success"
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 5002,
"message": "Invalid parameter. code:100:2593002"
}
Vorlage löschen
Aufrufadresse
DELETE https://wa.api.engagelab.cc/v1/templates/{template_name}
Hinweis: Hier wird der Vorlagenname übergeben, nicht die Vorlagen-ID. Es werden alle Sprachversionen der Vorlage mit diesem Namen gelöscht.
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Rückgabecode, immer 0 |
| message | String | Erforderlich | Rückgabemeldung, immer success |
{
"code": 0,
"message": "success"
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 2004,
"message": "something error"
}
Vorlagen-Tags abrufen
Gibt alle Tags des WABA zurück, zu dem der aktuelle API-Schlüssel gehört – ohne Paginierung.
Aufrufadresse
GET https://wa.api.engagelab.cc/v1/template-tags
Anfrageparameter
NULL
Anfragebeispiel
GET https://wa.api.engagelab.cc/v1/template-tags
Antwortparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| id | String | Erforderlich | Tag-ID |
| name | String | Erforderlich | Tag-Name |
| template_count | Integer | Erforderlich | Anzahl der Vorlagen im aktuellen WABA, für die dieses Tag gesetzt ist. Gleichnamige Vorlagen in verschiedenen Sprachen werden anhand der Vorlagen-ID separat gezählt. |
Antwortbeispiel
[
{
"id": "101",
"name": "Versandbenachrichtigung",
"template_count": 3
},
{
"id": "102",
"name": "Kundenservice nach dem Kauf",
"template_count": 0
}
]
Hat das WABA keine Tags, wird ein leeres Array [] zurückgegeben.
Vorlagen-Tag erstellen
Aufrufadresse
POST https://wa.api.engagelab.cc/v1/template-tags
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| name | String | Erforderlich | Tag-Name, 1–64 Zeichen. Zu den Namensanforderungen siehe Regeln für Tag-Namen. |
Anfragebeispiel
{
"name": "Versandbenachrichtigung"
}
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| id | String | Erforderlich | Tag-ID |
| name | String | Erforderlich | Der normalisierte Tag-Name |
{
"id": "101",
"name": "Versandbenachrichtigung"
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 3003,
"message": "template tag name already exists"
}
Vorlagen-Tag ändern
Aufrufadresse
PUT https://wa.api.engagelab.cc/v1/template-tags/{tag_id}
Dabei ist {tag_id} die ID des zu ändernden Tags.
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| name | String | Erforderlich | Der neue Tag-Name, 1–64 Zeichen. Zu den Namensanforderungen siehe Regeln für Tag-Namen. |
Anfragebeispiel
{
"name": "Kundenservice nach dem Kauf"
}
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| id | String | Erforderlich | Tag-ID |
| name | String | Erforderlich | Der geänderte Tag-Name |
{
"id": "101",
"name": "Kundenservice nach dem Kauf"
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 4001,
"message": "template tag not found"
}
Vorlagen-Tag löschen
Aufrufadresse
DELETE https://wa.api.engagelab.cc/v1/template-tags/{tag_id}
Hinweis: Beim Löschen eines Tags wird lediglich die Verknüpfung zwischen Vorlagen und diesem Tag aufgehoben. Die Vorlagen werden nicht gelöscht, und der Versand wird nicht beeinträchtigt.
Dabei ist {tag_id} die ID des zu löschenden Tags.
Anfrageparameter
NULL
Anfragebeispiel
DELETE https://wa.api.engagelab.cc/v1/template-tags/101
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| affected_template_count | Integer | Erforderlich | Anzahl der bei diesem Vorgang entkoppelten Vorlagen. Gleichnamige Vorlagen in verschiedenen Sprachen werden anhand der Vorlagen-ID separat gezählt. |
{
"affected_template_count": 3
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
{
"code": 4001,
"message": "template tag not found"
}
Vorlagen-Tags zuweisen
Aufrufadresse
PUT https://wa.api.engagelab.cc/v1/templates/{template_id}/tags
Hinweis: Dieser Endpunkt überschreibt vollständig. tag_ids enthält die vollständige Menge der Tags, die die Vorlage nach dem Speichern besitzt; nicht enthaltene bestehende Tags werden entkoppelt.
Dabei ist {template_id} die ID der Vorlage, deren Tags gesetzt werden sollen.
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| tag_ids | String Array | Erforderlich | Die vollständige Menge der Tag-IDs, die die Vorlage nach dem Speichern besitzt. Sie muss explizit übergeben werden und darf nicht null sein. Alle IDs müssen zum aktuellen WABA gehören; doppelte IDs werden automatisch entfernt. |
Hinweise zu tag_ids:
- Die Übergabe von
[]löscht alle Tags dieser Vorlage. - Wird tag_ids nicht übergeben oder ist
null, schlägt die Anfrage fehl, und die bestehenden Tags werden nicht gelöscht. - Schlägt die Anfrage fehl, bleibt die Tag-Menge der Vorlage unverändert, sodass Sie sie einfach erneut senden können.
- Die Anzahl der Tags pro Vorlage ist nicht begrenzt; Sie können alle Tags des aktuellen WABA übergeben.
Anfragebeispiel
{
"tag_ids": ["101", "102"]
}
Antwortparameter
Erfolgreiche Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Rückgabecode, immer 0 |
| message | String | Erforderlich | Rückgabemeldung, immer success |
{
"code": 0,
"message": "success"
}
Fehlerhafte Antwort
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, wird bei Fehler zurückgegeben |
| message | String | Erforderlich | Fehlermeldung, wird bei Fehler zurückgegeben |
Die Vorlage existiert nicht oder gehört nicht zum aktuellen WABA:
{
"code": 4001,
"message": "template not found"
}
Das Tag existiert nicht oder gehört nicht zum aktuellen WABA:
{
"code": 4001,
"message": "template tag not found"
}
tag_ids wurde nicht übergeben oder ist null:
{
"code": 3002,
"message": "template tag IDs must be provided as an array"
}
Fehlercodes
Mit „Tag-Endpunkte“ sind in der folgenden Tabelle die fünf in der Übersicht genannten Tag-Endpunkte gemeint; hinzu kommt der Fall, dass beim Abrufen von Vorlagen nach tag_id gefiltert wird.
| Fehlercode | HTTP-Code | Betroffene Endpunkte | Beschreibung |
|---|---|---|---|
| 1000 | 500 | Alle Endpunkte | Interner Fehler |
| 2001 | 401 | Alle Endpunkte | Authentifizierung auf EngageLab-Seite fehlgeschlagen: kein Token in gültigem Datenformat übergeben |
| 2002 | 401 | Alle Endpunkte | Authentifizierung auf EngageLab-Seite fehlgeschlagen: Token abgelaufen oder deaktiviert |
| 2003 | 400 | Alle Endpunkte | Authentifizierung auf WhatsApp-Seite fehlgeschlagen. Bitte wenden Sie sich an den EngageLab-Kundenservice. |
| 2004 | 403 | Alle Endpunkte | Keine Berechtigung zum Aufruf dieser API, oder das zugehörige Konto bzw. WABA wurde deaktiviert |
| 3001 | 400 | Alle Endpunkte | Ungültiges Format der Anfrageparameter. Prüfen Sie, ob JSON verwendet wird und die Feldtypen den Anforderungen entsprechen. |
| 3002 | 400 | Alle Endpunkte | Fehlerhafte Anfrageparameter. Prüfen Sie, ob die Anfrageparameter den Anforderungen entsprechen. |
| 3002 | 400 | Tag-Endpunkte | Der Tag-Name ist leer |
| 3002 | 400 | Tag-Endpunkte | Der Tag-Name überschreitet 64 Zeichen, siehe Regeln für Tag-Namen |
| 3002 | 400 | Tag-Endpunkte | Der Tag-Name enthält unzulässige Zeichen, siehe Regeln für Tag-Namen |
| 3002 | 400 | Tag-Endpunkte | Ungültiges Format der Tag-ID; sie muss ein String aus positiven Ganzzahlen sein |
| 3002 | 400 | Tag-Endpunkte | Beim Zuweisen von Vorlagen-Tags wurde tag_ids nicht übergeben oder war null |
| 3003 | 400 | Alle Endpunkte | Fehlerhafte Anfrageparameter: die zugehörige fachliche Prüfung ist fehlgeschlagen |
| 3003 | 400 | Tag-Endpunkte | Im selben WABA existiert bereits ein Tag mit demselben Namen. Bei der Dublettenprüfung werden Groß-/Kleinschreibung und Akzente nicht berücksichtigt. |
| 3003 | 400 | Tag-Endpunkte | Die Obergrenze von 20 Tags pro WABA ist erreicht |
| 3003 | 400 | Tag-Endpunkte | Tag-Vorgänge sind ausgelastet. Versuchen Sie es später erneut; ein erneuter Versuch erzeugt keine doppelten Daten. |
| 4001 | 400 | Alle Endpunkte | Die Vorlage existiert nicht oder gehört nicht zum aktuellen WABA |
| 4001 | 400 | Tag-Endpunkte | Das Tag existiert nicht oder gehört nicht zum aktuellen WABA |
| 5002 | 400 | Alle Endpunkte | Die Vorlagenanfrage ist auf Meta-Seite fehlgeschlagen. Einzelheiten finden Sie in der Fehlerbeschreibung im Feld message. |
Anmerkungen
Formatanforderungen für Mediennachrichten
| Medientyp | Unterstützter Content-Type | Größenbeschränkung |
|---|---|---|
| image | image/jpeg, image/png; transparente Hintergründe werden nicht unterstützt | 5 MB |
| video | video/mp4 | 16MB |
| document | Nur PDF-Format | 100 MB |
Regeln für Tag-Namen
Beim Erstellen und Ändern von Tags normalisiert der Server zuerst den Namen und prüft anschließend Länge und Dubletten.
Normalisierung: Führende und abschließende Leerzeichen werden entfernt, und aufeinanderfolgende Leerzeichen innerhalb des Namens werden zu einem einzelnen Leerzeichen zusammengefasst. Übermitteln Sie beispielsweise " Versand benachrichtigung ", lautet der tatsächlich gespeicherte und zurückgegebene Name "Versand benachrichtigung".
Zeichenbeschränkungen: Zulässig sind Leerzeichen, Unterstriche, Bindestriche, sichtbare Zeichen aller Sprachen und Emojis; unzulässig sind Zeilenumbrüche, Tabulatoren, Steuerzeichen und unsichtbare Formatierungszeichen.
Länge: Nach der Normalisierung muss der Name 1–64 Zeichen lang sein. Die Länge wird in Unicode-Codepunkten gezählt; ein Emoji kann mehrere Codepunkte belegen.
Dublettenprüfung: Namen müssen innerhalb eines WABA eindeutig sein. Bei der Dublettenprüfung werden Groß-/Kleinschreibung und Akzente nicht berücksichtigt – Logistics, logistics und Logístics gelten beispielsweise als derselbe Name. Es gibt keine reservierten Wörter.
Nutzungsbeschränkungen für Tags
- Ein einzelnes WABA kann maximal 20 Tags anlegen.
- Die Anzahl der Tags pro Vorlage ist nicht begrenzt; Sie können alle vorhandenen Tags des aktuellen WABA zuweisen, sodass die tatsächliche Obergrenze bei 20 liegt.
- Tag-IDs sind in Anfragen und Antworten stets Strings (z. B.
"101"). Bitte interpretieren Sie sie nicht als Zahlen. - Gleichnamige Vorlagen in verschiedenen Sprachen erhalten ihre Tags unabhängig voneinander anhand der jeweiligen Vorlagen-ID. Die deutsche und die englische Fassung derselben Vorlage müssen also separat gesetzt werden.
- Tags werden nicht an Meta übermittelt. Sie ändern weder den Vorlagenstatus noch die Qualitätsbewertung und lösen keine erneute Prüfung aus.
Sprachcodes
| Sprache | Code |
|---|---|
| Afrikaans | af |
| Albanisch | sq |
| Arabisch | ar |
| Aserbaidschanisch | az |
| Bengalisch | bn |
| Bulgarisch | bg |
| Katalanisch | ca |
| Chinesisch (Festlandchina) | zh_CN |
| Chinesisch (Hongkong) | zh_HK |
| Chinesisch (Taiwan) | zh_TW |
| Kroatisch | hr |
| Tschechisch | cs |
| Dänisch | da |
| Niederländisch | nl |
| Englisch | en |
| Englisch (UK) | en_GB |
| Englisch (USA) | en_US |
| Estnisch | et |
| Filipino | fil |
| Finnisch | fi |
| Französisch | fr |
| Georgisch | ka |
| Deutsch | de |
| Griechisch | el |
| Gujarati | gu |
| Hausa | ha |
| Hebräisch | he |
| Hindi | hi |
| Ungarisch | hu |
| Indonesisch | id |
| Irisch | ga |
| Italienisch | it |
| Japanisch | ja |
| Kannada | kn |
| Kasachisch | kk |
| Kinyarwanda | rw_RW |
| Koreanisch | ko |
| Kirgisisch | ky_KG |
| Laotisch | lo |
| Lettisch | lv |
| Litauisch | lt |
| Mazedonisch | mk |
| Malaiisch | ms |
| Malayalam | ml |
| Marathi | mr |
| Norwegisch | nb |
| Persisch | fa |
| Polnisch | pl |
| Portugiesisch (Brasilien) | pt_BR |
| Portugiesisch (Portugal) | pt_PT |
| Punjabi | pa |
| Rumänisch | ro |
| Russisch | ru |
| Serbisch | sr |
| Slowakisch | sk |
| Slowenisch | sl |
| Spanisch | es |
| Spanisch (Argentinien) | es_AR |
| Spanisch (Spanien) | es_ES |
| Spanisch (Mexiko) | es_MX |
| Suaheli | sw |
| Schwedisch | sv |
| Tamilisch | ta |
| Telugu | te |
| Thailändisch | th |
| Türkisch | tr |
| Ukrainisch | uk |
| Urdu | ur |
| Usbekisch | uz |
| Vietnamesisch | vi |
| Zulu | zu |
Die Zuordnung von Sprachen und zugehörigen Codes können Sie auch dieser Datei entnehmen:
Vorlagen-Sprachcodes.xlsx










