Push API v4 – Web-Push-Benachrichtigungen per JSON versenden
Versenden Sie gezielte Push-Benachrichtigungen oder Nachrichten an einzelne Geräte oder eine Liste von Geräten – schnell, sicher und flexibel mit der Push API v4. Push-Inhalte werden ausschließlich als Push-Objekt im JSON-Format bereitgestellt. Weitere Funktionen im Zusammenhang mit Label oder Alias finden Sie in der AppPushAPI.
- Verwendung von HTTP Basic Authentication zur Zugriffsauthorisierung. Dadurch kann die gesamte API-Anfrage komfortabel mit gängigen HTTP-Tools wie
curloder Browser-Plugins durchgeführt werden. - Push-Inhalte werden im JSON-Format bereitgestellt.
Anfrage-Limits
Um die Stabilität und Fairness unseres Dienstes sicherzustellen, begrenzen wir die Aufrufhäufigkeit der API. Die QPS (Queries Per Second)-Grenzwerte pro AppKey lauten wie folgt:
- Standardlimit: Bis zu 500 Anfragen pro Sekunde.
- Erweitertes Limit: Wenn Ihr kostenpflichtiger AppKey ein höheres QPS-Limit benötigt, wenden Sie sich bitte an unser Vertriebsteam: Sales@engagelab.com.
Authentifizierung der Anfragen
Detaillierte Informationen finden Sie unter Authentifizierungsmethode.
API-Endpunkt
POST v4/push
Beispielanfragen
Request Header
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Request Body
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !", //optional
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "business info"
}
Anfrageparameter
Die Struktur der Push-Parameter ist in der folgenden Tabelle detailliert beschrieben.
| Schlüsselwort | Typ | Optional | Beschreibung |
|---|---|---|---|
| from | String | Optional | Aktueller Absender der Anwendung |
| to | String oder JSON-Objekt | Erforderlich | Zielgerät(e) |
| body | JSON-Objekt | Erforderlich | Inhalt der Anfrage |
| platform | String oder JSON-Array | Erforderlich | Ziel-Plattform |
| notification | JSON-Objekt | Optional | |
| message | JSON-Objekt | Optional | |
| options | JSON-Objekt | Optional | Zusätzliche Push-Parameter |
| request_id | String | Optional | Benutzerdefiniertes Feld zur Identifizierung der Anfrage, wird in der Antwort zurückgegeben. |
| custom_args | JSON-Objekt | Optional | Benutzerdefinierte optionale Felder, die beim Callback zurückgegeben werden. |
from
Der Absender der aktuellen Anwendung. Wert ist vom Typ String und optional.
Beispielanfrage
{
"from": "push"
}
to
Push-Geräteobjekt, das die Liste der Geräte angibt, an die gepusht werden kann. MTPush bietet zwei Methoden: Registration ID und Broadcast.
Push-Ziel
| Schlüsselwort | Typ | Erklärung | Beschreibung | Hinweis |
|---|---|---|---|---|
| all | String | Broadcast | Push an alle Geräte | Zielgeräte, die in den letzten 30 Tagen aktiv waren. |
| registration_id | JSON-Array | Registration ID | Array. Mehrere Registration IDs sind ODER-verknüpft (Vereinigung). | Geräte-ID. Maximal 1.000 Nachrichten pro Push. |
| tag | JSON-Array | Tag | Arrays. Mehrere Tags sind ODER-verknüpft (Vereinigung). | Tags für großflächige Geräte- oder Nutzerattribut-Gruppierungen. Maximal 20 Tags pro Push. Gültige Zeichen: Buchstaben (Groß-/Kleinschreibung), Zahlen, Unterstriche, chinesische Zeichen. Jeder Tag max. 40 Bytes (UTF-8). |
| tag_and | JSON-Array | Tag UND | Array. Mehrere Tags sind UND-verknüpft (Schnittmenge). | Bis zu 20 Tags pro Push. |
| tag_not | JSON-Array | Tag NICHT | Array. Zuerst Vereinigung aller Tags, dann Komplement. | Bis zu 20 Tags pro Push. |
| alias | JSON-Array | Alias | Array. Mehrere Aliase sind ODER-verknüpft (Vereinigung). | Identifiziert Nutzer:innen eindeutig. Ein Gerät kann nur einem Alias zugeordnet werden und umgekehrt. Maximal 1.000 Aliase pro Push. Gültige Zeichen: Buchstaben (Groß-/Kleinschreibung), Zahlen, Unterstriche, chinesische Zeichen. Jeder Alias max. 40 Bytes (UTF-8). |
Die implizite Beziehung zwischen mehreren Werten in einem Array ist ODER (Vereinigung); bei tag_and ist die Beziehung UND (Schnittmenge).
Wird tag_not allein verwendet, erfolgt die tag_not-Verarbeitung unter den Broadcast-Nutzer:innen.
Diese Typen können koexistieren. Die implizite Beziehung zwischen mehreren Feldern beim gemeinsamen Auftreten ist UND (Schnittmenge). Beispiel:
"to" : {"tag" : [ "tag1", "tag2"],
"tag_and" : ["tag3", "tag4"],
"tag_not" : ["tag5", "tag6"]
}
Berechnung:
- "tag"-Feld: tag1 oder tag2 = A
- "tag_and"-Feld: tag3 und tag4 = B
- "tag_not"-Feld: nicht (tag5 oder tag6) = C
Das Endergebnis von "to" ist A und B und C.
Beispielanfragen
- Push an alle (Broadcast):
{
"to": "all"
}
- Push an mehrere Registration IDs:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
Der Anfragetext. Unterstützte Felder:
| Schlüsselwort | Typ | Optional | Beschreibung |
|---|---|---|---|
| platform | String oder JSON-Array | Erforderlich | Ziel-Plattform |
| notification | JSON-Objekt | Optional | |
| message | JSON-Objekt | Optional | |
| options | JSON-Objekt | Optional | Zusätzliche Push-Parameter |
platform
MTPush unterstützt derzeit nur Push für die Web-Plattform. Der Wert von platform ist daher immer „web“.
{ "platform": "web" }
notification
Das notification-Objekt ist einer der möglichen Push-Inhalte (das andere ist message) und wird als Benachrichtigung an die Web-Plattform gesendet.
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| web | JSON-Objekt | Erforderlich | Plattform-Eigenschaften | Web-Plattform-Benachrichtigungen, siehe web |
web
Web-Plattform-Benachrichtigungen
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| alert | String oder JSON-Objekt | Erforderlich | Inhalt | Der eigentliche Nachrichtentext, überschreibt die alert-Information der übergeordneten Ebene. |
| url | String | Erforderlich | Web-Push-URL | Zieladresse beim Klick auf die Benachrichtigung |
| title | String | Optional | Titel | Nachrichtentitel |
| extras | JSON-Objekt | Optional | Erweiterte Felder | Benutzerdefinierte Key/Value-Informationen im JSON-Format für geschäftliche Zwecke. |
| icon | String | Optional | Benachrichtigungs-Icon | Empfohlen: 192x192px, max. 1 MB, Formate: JPG, PNG, GIF. Unterstützt Chrome, Firefox (Safari und Edge unterstützen keine eigenen Icons). |
| image | String | Optional | Großes Bild für Benachrichtigung | Empfohlen: 360x180px, max. 1 MB, Formate: JPG, PNG, GIF. Unterstützt Chrome, Edge (Firefox und Safari nicht unterstützt). |
{
"notification": {
"web": {
"alert": "Hallo, Push!",
"title": "Push-Test",
"url": "http://www.google.com",
"icon": "",
"image": "",
"extras": {
"news_id": 134,
"my_key": "ein Wert"
}
}
}
}
message
In-App-Nachrichten oder benutzerdefinierte Nachrichten. Dieser Inhalt wird nicht im Browser angezeigt. Nach Empfang wird die Nachricht vom SDK an das Web übertragen und dort verarbeitet.
| Schlüsselwort | Typ | Optional | Beschreibung |
|---|---|---|---|
| msg_content | String oder JSON-Objekt | Erforderlich | Nachrichteninhalt |
| title | String | Optional | Nachrichtentitel |
| content_type | String | Optional | Nachrichtentyp |
| extras | JSON-Objekt | Optional | Optionale Parameter im JSON-Format |
Beispiel:
{
"message": {
"msg_content": "Hallo, Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "Wert"
}
}
}
options
Push-Optionen. Folgende Optionen sind verfügbar:
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| time_to_live | Int oder String | Optional | Dauer der Offline-Nachrichten (Sekunden) | |
| override_msg_id | Long | Optional | Zu überschreibende Nachrichten-ID | Wenn der aktuelle Push eine frühere Nachricht überschreiben soll, hier die msg_id der alten Nachricht angeben. Die Funktion ist 1 Tag gültig. Existiert die msg_id nicht, wird Fehler 1003 zurückgegeben und der Push nicht durchgeführt. |
| big_push_duration | Int | Optional | Dauer für verzögerten Push (Minuten) | |
| web_buttons | JSON-Objekt | Optional | Benachrichtigung mit Buttons versehen | |
| multi_language | JSON-Objekt | Optional | Mehrsprachige Push-Einstellungen | Mehrsprachige Anpassung für Push-Inhalte. Details siehe multi_language. |
| third_party_channel | JSON-Objekt | Optional | Konfiguration für Web-Systemkanal | Gültig nur für Nutzer:innen mit Systemkanal-Konfiguration. Details siehe third_party_channel. |
| plan_id | String | Optional | Push-Plan-ID | Muss zuvor erstellt werden, entweder in der Konsole oder per API. |
| cid | String | Optional | Push-Request-ID zur Duplikatsvermeidung | Nur Buchstaben, Zahlen, Unterstriche, Bindestriche, max. 64 Zeichen. Muss unter einem AppKey eindeutig sein. |
multi_language
Dieses Feld ermöglicht mehrsprachige Push-Benachrichtigungen. Sie können für verschiedene Sprachen individuelle Inhalte und Titel angeben, die je nach Spracheinstellung der Nutzer:innen versendet werden.
Anfrageparameter
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| en, de, ... | string | Optional | Sprachcode | Entspricht der Nutzersprache, siehe Tabelle unten |
| content | string | Optional | Nachrichtentext | Ersetzt notification.web.alert bzw. message.msg_content je nach Sprache |
| title | string | Optional | Nachrichtentitel | Ersetzt notification.web.title bzw. message.title je nach Sprache |
Beispielanfrage
HTTP-Methode: POST
Anfrage-URL: /v4/push
POST-Datenformat: json
POST-Datenbeispiel:
{
"options": {
"multi_language": {
"de": {
"content": "",
"title": ""
}
}
}
}
Beispielantwort
Bei Erfolg:
{
}
Bei Fehler:
{
"code": 400,
"data": "",
"message": "Fehlerinformation"
}
web_buttons
Mit dem Parameter web_buttons können Buttons in Benachrichtigungen hinzugefügt werden. Die Parameter sind:
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| id | String | Erforderlich | Button-ID | Unterstützt ab Chrome 48+ |
| text | String | Erforderlich | Button-Text | Unterstützt ab Chrome 48+ |
| icon | String | Optional | Button-Icon | Unterstützt ab Chrome 50+ |
| url | String | Erforderlich | Button-Link | Unterstützt ab Chrome 48+. Wird web_buttons verwendet, ist das url-Feld im web-Parameter inaktiv. |
Beispiel:
[
{
"id": "like-button",
"text": "Gefällt mir",
"icon": "http://i.imgur.com/N8SN8ZS.png",
"url": "https://yoursite.com"
},
{
"id": "read-more-button",
"text": "Mehr lesen",
"icon": "http://i.imgur.com/MIxJp1L.png",
"url": "https://yoursite.com"
}
]
third_party_channel
Dieses Feld dient zur Angabe von Informationen für den Web-Systemkanal. Der Schlüsselname ist w3push, der Wert ein JSON-Objekt mit einem optionalen distribution-Feld (String).
| Schlüsselwort | Typ | Optional | Erklärung | Beschreibung |
|---|---|---|---|---|
| distribution | String | Erforderlich | Priorität der Zustellung | Werte: first_ospush: Zuerst Systemkanal, Engagelab nicht verwendet. mtpush: Nur über Engagelab. secondary_push: Erst Engagelab, dann Systemkanal (empfohlen). ospush: Nur über Systemkanal. |
Beispiel:
{
"third_party_channel": {
"w3push": {
"distribution": "mtpush"
}
}
}
request_id
Die ID der Anfrage. Dient zur Identifikation und wird in der Antwort zurückgegeben.
Beispiel
{
"request_id": "12345678"
}
custom_args
Benutzerdefiniertes optionales Feld. Wird nicht in der Antwort, sondern beim Callback zurückgegeben.
{
"custom_args": "Geschäftsinformationen"
}
Antwortparameter
Antwort bei Erfolg
| Feld | Typ | Optional | Beschreibung |
|---|---|---|---|
| request_id | String | Optional | Die übermittelte Anfrage-ID, wird in der Antwort zurückgegeben. |
| msg_id | String | Erforderlich | Eindeutige Nachrichten-ID. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
Fehlerantwort
Der HTTP-Statuscode ist 4xx oder 5xx. Der Antwort-Body enthält folgende Felder:
| Feld | Typ | Optional | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode. Weitere Infos siehe return-code. |
| message | String | Erforderlich | Fehlerdetails |
{
"code": 3002,
"message": "Push.template Feld muss korrekt gesetzt werden, wenn Typ 'template' ist"
}
Antwort
HTTP-Statuscodes
Referenz: HTTP-Status-Code
Rückgabecodes
| Code | Beschreibung | Details | HTTP-Statuscode |
|---|---|---|---|
| 20101 | Ungültiger Push-Parameter. | registration_id ist ungültig oder gehört nicht zum aktuellen AppKey. | 400 |
| 21001 | Nur HTTP POST wird unterstützt. | GET wird nicht unterstützt. | 405 |
| 21002 | Fehlende Pflichtparameter. | Muss korrigiert werden. | 400 |
| 21003 | Ungültiger Parameterwert. | Muss korrigiert werden. | 400 |
| 21004 | Authentifizierung fehlgeschlagen. | Muss korrigiert werden. Siehe Authentifizierung. | 401 |
| 21005 | Nachrichtenkörper zu groß. | Muss korrigiert werden. Notification max. 2.048 Bytes. | 400 |
| 21008 | Ungültiger app_key Parameter. | Bitte prüfen Sie app_key auf Korrektheit und Leerzeichen. | 400 |
| 21009 | Interner Systemfehler. | Muss korrigiert werden. | 400 |
| 21011 | Keine passenden Push-Ziele. | Bitte prüfen. | 400 |
| 21015 | Anfrageparameter ungültig. | Unerwartete Parameter. | 400 |
| 21016 | Anfrageparameter ungültig. | Falscher Typ oder Länge überschritten. | 400 |
| 21030 | Interner Dienst-Timeout. | Später erneut versuchen. | 503 |
| 23006 | Parameterfehler. | big_push_duration maximal 1.440. | 400 |
| 23008 | Schnittstellen-Limit erreicht. | Push QPS-Limit (500 QPS) erreicht. | 400 |
| 27000 | Speicherfehler. | Bitte erneut versuchen. | 500 |
| 27001 | Parameterfehler. | Verifizierungsinformation ist leer. | 401 |
| 27008 | Parameterfehler. | distribution in third_party_channel ist nicht leer, aber notification.alert ist leer. | 401 |
| 27009 | Parameterfehler. | Format von distribution in third_party_channel ungültig oder leer. | 401 |
Push-Beschränkungen
| Kanal | Betreff-Länge | Inhaltslänge | Zusätzliche Hinweise |
|---|---|---|---|
| Engagelab | Kein Limit, aber Gesamtgröße des Nachrichtenkörpers begrenzt | Kein Limit, aber Gesamtgröße des Nachrichtenkörpers begrenzt | Notification MTPush max. 4.000 Bytes. |
| Systemkanal | <20 Zeichen (40 englische Zeichen) | Keine |
Sprachcodes
| Sprache | Sprachcode |
|---|---|
| Englisch | en |
| Arabisch | ar |
| Chinesisch (vereinfacht) | zh-Hans |
| Chinesisch (traditionell) | zh-Hant |
| Tschechisch | cs |
| Dänisch | da |
| Niederländisch | nl |
| Französisch | fr |
| Deutsch | de |
| Hindi | hi |
| Italienisch | it |
| Japanisch | ja |
| Koreanisch | ko |
| Malaiisch | ms |
| Russisch | ru |
| Spanisch | es |
| Thailändisch | th |
| Vietnamesisch | vi |
| Indonesisch | id |
| Norwegisch | no |
| Schwedisch | sv |
| Polnisch | pl |
| Türkisch | tr |
| Hebräisch | he |
| Portugiesisch | pt |
| Rumänisch | ro |
| Ungarisch | hu |
| Finnisch | fi |
| Griechisch | el |
| Ukrainisch | uk |
| Laotisch | lo |
| Portugiesisch (Portugal) | pt_PT |
| Portugiesisch (Brasilien) | pt_BR |
| Spanisch (Argentinien) | es_AR |
| Spanisch (Spanien) | es_ES |
| Spanisch (Lateinamerika) | es_419 |

