Transaktions-E-Mails mit API-getriggerter Zustellung senden
/transactional/v1/campaigns/{campaign_id}/send
Verwenden Sie diesen Endpunkt, um sofortige, einmalige Transaktionsnachrichten an bestimmte Nutzer:innen zu senden.
Dieser Endpunkt wird zusammen mit der Erstellung einer Braze-Transaktions-E-Mail-Campaign und der entsprechenden Campaign-ID verwendet.

Transaktions-E-Mails sind derzeit als Teil ausgewählter Braze-Pakete verfügbar. Wenden Sie sich für weitere Informationen an Ihren Braze-Customer-Success-Manager.
Ähnlich wie beim Endpunkt zum Senden getriggerter Campaigns können Sie mit diesem Campaign-Typ den Nachrichteninhalt im Braze-Dashboard hinterlegen und gleichzeitig über Ihre API festlegen, wann und an wen eine Nachricht gesendet wird. Im Gegensatz zum Endpunkt „Getriggerte Campaign senden“, der eine Zielgruppe oder ein Segment als Empfänger:innen der Nachrichten akzeptiert, muss eine Anfrage an diesen Endpunkt eine:n einzelne:n Nutzer:in entweder über external_user_id oder user_alias angeben, da dieser Campaign-Typ speziell für 1:1-Benachrichtigungen wie Bestellbestätigungen oder Passwortzurücksetzungen konzipiert ist.
Voraussetzungen
Um diesen Endpunkt zu verwenden, müssen Sie einen API-Schlüssel mit der Berechtigung transactional.send generieren.
Rate-Limit
Für den Endpunkt /transactional/v1/campaigns/{campaign_id}/send gilt ein kostenpflichtiges stündliches Kontingent, das in Einheiten gemessen wird (zum Beispiel 50.000 Einheiten pro Stunde, abhängig von Ihrem Paket). Für diesen Endpunkt gibt es kein separates endpunktspezifisches Rate-Limit. Anfragen, die Ihr Kontingent überschreiten, werden trotzdem versendet, jedoch ist nur das zugewiesene Volumen durch das SLA abgedeckt. Innerhalb des vom SLA abgedeckten Volumens werden 99,9 % der E-Mails in weniger als einer Minute versendet. Der Zähler für das Transaktionsvolumen wird stündlich zurückgesetzt.
Anfragen an diesen Endpunkt werden nicht auf Ihr Gesamt-Rate-Limit für externe API-Anfragen angerechnet. Dieser Endpunkt umgeht das standardmäßige Rate-Limiting der REST API. Daher gibt er weder die standardmäßigen X-RateLimit-*-Antwort-Header noch 429-Antworten bei überschrittenen Limits zurück. Weitere Informationen erhalten Sie beim Braze-Support.
Pfad-Parameter
| Parameter | Erforderlich | Datentyp | Beschreibung |
|---|---|---|---|
campaign_id |
Erforderlich | String | ID der Campaign |
Anfragetext
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"external_send_id": (optional, string) see the following request parameters,
"trigger_properties": (optional, object) personalization key-value pairs that apply to the user in this request,
"recipient": (required, object)
{
// Either "external_user_id" or "user_alias" is required. Requests must specify only one.
"user_alias": (optional, User alias object) User alias of the user to receive message,
"external_user_id": (optional, string) External identifier of user to receive message,
"attributes": (optional, object) fields in the attributes object create or update an attribute of that name with the given value on the specified user profile before the message is sent and existing values are overwritten
}
}
Anfrage-Parameter
| Parameter | Erforderlich | Datentyp | Beschreibung |
|---|---|---|---|
external_send_id |
Optional | String | Ein Base64-kompatibler String. Wird anhand der folgenden Regex validiert:/^[a-zA-Z0-9-_+\/=]+$/ Mit diesem optionalen Feld können Sie einen internen Bezeichner für diesen bestimmten Versand übergeben, der in den Ereignissen des Transactional-HTTP-Event-Postbacks enthalten ist. Bei Übergabe wird dieser Bezeichner auch als Deduplizierungsschlüssel verwendet, den Braze 24 Stunden lang speichert. Die Übergabe desselben Bezeichners in einer weiteren Anfrage führt 24 Stunden lang nicht zu einer neuen Versandinstanz durch Braze. |
trigger_properties |
Optional | Objekt | Siehe Trigger-Eigenschaften. Personalisierungs-Schlüssel-Wert-Paare, die für die:den Nutzer:in in dieser Anfrage gelten. |
recipient |
Erforderlich | Objekt | Die:der Nutzer:in, an die:den Sie diese Nachricht senden. Kann attributes und eine einzelne external_user_id oder einen user_alias enthalten.Beachten Sie: Wenn Sie eine externe Nutzer-ID angeben, die in Braze noch nicht existiert, wird durch die Übergabe beliebiger Felder an das attributes-Objekt dieses Nutzerprofil in Braze erstellt und die Nachricht an die:den neu erstellte:n Nutzer:in gesendet. Wenn Sie mehrere Anfragen an dieselbe:n Nutzer:in mit unterschiedlichen Daten im attributes-Objekt senden, werden die Attribute first_name, last_name und email synchron aktualisiert und in Ihre Nachricht eingefügt. Angepasste Attribute verfügen nicht über diesen Schutz. Gehen Sie daher vorsichtig vor, wenn Sie eine:n Nutzer:in über diese API aktualisieren und in schneller Folge unterschiedliche Werte für angepasste Attribute übergeben. |
Beispielanfrage
curl -X POST \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer YOUR-REST-API-KEY' \
-d '{
"external_send_id" : YOUR_BASE64_COMPATIBLE_ID
"trigger_properties": {
"example_string_property": YOUR_EXAMPLE_STRING,
"example_integer_property": YOUR_EXAMPLE_INTEGER
},
"recipient": {
"external_user_id": TARGETED_USER_ID_STRING
}
}' \
https://rest.iad-01.braze.com/transactional/v1/campaigns/{campaign_id}/send
Antwort
Der Endpunkt „Transaktions-E-Mails senden“ antwortet mit der dispatch_id der Nachricht, die die Instanz dieses Versands darstellt. Dieser Bezeichner kann zusammen mit den Ereignissen aus dem Transactional-HTTP-Event-Postback verwendet werden, um den Status einer einzelnen E-Mail zu verfolgen, die an eine:n einzelne:n Nutzer:in gesendet wurde.
Beispielantworten
{
"dispatch_id": A randomly-generated unique ID of the instance of this send
"status": Current status of the message
"metadata" : Object containing additional information about the send instance
}
Fehlerbehebung
Der Endpunkt kann in einigen Fällen auch einen Fehlercode und eine lesbare Nachricht zurückgeben, wobei es sich meist um Validierungsfehler handelt. Hier finden Sie einige häufige Fehler, die bei ungültigen Anfragen auftreten können.
| Fehler | Fehlerbehebung |
|---|---|
The campaign is not a transactional campaign. Only transactional campaigns may use this endpoint |
Die angegebene Campaign-ID gehört nicht zu einer Transaktions-Campaign. |
The external reference has been queued. Please retry to obtain send_id. |
Die external_send_id wurde kürzlich erstellt. Verwenden Sie eine neue external_send_id, wenn Sie eine neue Nachricht senden möchten. |
Campaign does not exist |
Die angegebene Campaign-ID entspricht keiner bestehenden Campaign. |
The campaign is archived. Unarchive the campaign in order for trigger requests to take effect. |
Die angegebene Campaign-ID entspricht einer archivierten Campaign. |
The campaign is paused. Resume the campaign in order for trigger requests to take effect. |
Die angegebene Campaign-ID entspricht einer pausierten Campaign. |
campaign_id must be a string of the campaign api identifier |
Die angegebene Campaign-ID hat kein gültiges Format. |
Error authenticating credentials |
Der angegebene API-Schlüssel ist ungültig. |
Invalid whitelisted IPs |
Die IP-Adresse, von der die Anfrage gesendet wird, steht nicht auf der IP-Whitelist (falls diese verwendet wird). |
You do not have permission to access this resource |
Der verwendete API-Schlüssel hat keine Berechtigung, diese Aktion durchzuführen. |
Dieser Endpunkt gibt keine 429-Antworten zurück, wenn Sie Ihr Transaktionskontingent überschreiten. Details zu Kontingent, SLA und Antwort-Headern finden Sie unter Rate-Limit.
Transactional-HTTP-Event-Postback
Alle Transaktions-E-Mails werden durch Ereignisstatus-Postbacks ergänzt, die als HTTP-Anfrage an die von Ihnen angegebene URL zurückgesendet werden. So können Sie den Status der Nachricht in Realtime auswerten und Maßnahmen ergreifen, um Nutzer:innen auf einem anderen Kanal zu erreichen, wenn die Nachricht nicht zugestellt wurde, oder auf ein internes System als Fallback zurückgreifen, wenn Braze eine Latenz aufweist.
Sie können diese Updates über eindeutige Bezeichner mit einzelnen Nachrichten verknüpfen:
dispatch_id: Eine eindeutige ID, die Braze automatisch für jede Nachricht generiert.external_send_id: Ein angepasster Bezeichner, den Sie angeben, z. B. eine Bestellnummer, um Updates mit Ihren internen Systemen abzugleichen.
Wenn Sie beispielsweise external_send_id: 1234 in die Anfrage beim Versenden einer Bestellbestätigungs-E-Mail aufnehmen, enthalten alle nachfolgenden Ereignis-Postbacks für diese E-Mail – wie Sent oder Delivered – den Wert external_send_id: 1234. Damit können Sie bestätigen, ob die Kund:in für Bestellung #1234 die Bestellbestätigungs-E-Mail erhalten hat.
Einrichten von Postbacks
In Ihrem Braze-Dashboard:
- Gehen Sie zu Einstellungen > E-Mail-Präferenzen.
- Geben Sie unter Transactional Event Status Postback die URL ein, an die Braze Status-Updates für Ihre Transaktions-E-Mails senden soll.
- Testen Sie das Postback.

Postback-Body
{
"dispatch_id": (string, a randomly-generated unique ID of the instance of this send),
"status": (string, Current status of message from the following message status table,
"metadata" : (object, additional information relating to the execution of an event)
{
"external_send_id" : (string, If provided at the time of the request, Braze will pass your internal identifier for this send for all postbacks),
"campaign_api_id" : (string, API identifier of this transactional campaign),
"received_at": (ISO 8601 DateTime string, Timestamp of when the request was received by Braze, only included for events with "sent" status),
"enqueued_at": (ISO 8601 DateTime string, Timestamp of when the request was enqueued by Braze, only included for events with "sent" status),
"executed_at": (ISO 8601 DateTime string, Timestamp of when the request was processed by Braze, only included for events with "sent" status),
"sent_at": (ISO 8601 DateTime string, Timestamp of when the request was sent to the ESP by Braze, only included for events with "sent" status),
"processed_at" : (ISO 8601 DateTime string, Timestamp the event was processed by the ESP, only included for events with "processed" status),
"delivered_at" : (ISO 8601 DateTime string, Timestamp the event was delivered to the user's inbox provider, only included for events with "processed" status),
"bounced_at" : (ISO 8601 DateTime string, Timestamp the event was bounced by the user's inbox provider, only included for events with "bounced" status),
"aborted_at" : (ISO 8601 DateTime string, Timestamp the event was Aborted by Braze, only included for events with "aborted" status),
"reason" : (string, The reason Braze or the Inbox provider was unable to process this message to the user, only included for events with "aborted" or "bounced" status),
}
}
Nachrichtenstatus
| Status | Beschreibung |
|---|---|
sent |
Nachricht wurde erfolgreich an einen E-Mail-Versandpartner von Braze übergeben |
processed |
Der E-Mail-Versandpartner hat die Nachricht erfolgreich empfangen und für den Versand an den Posteingang-Anbieter der Nutzer:innen vorbereitet |
aborted |
Braze konnte die Nachricht nicht erfolgreich versenden, da die Nutzer:innen keine gültige E-Mail-Adresse haben oder die Liquid-Abbruchlogik im Nachrichtentext aufgerufen wurde. Alle abgebrochenen Ereignisse enthalten ein Feld reason im Metadaten-Objekt, das angibt, warum die Nachricht abgebrochen wurde |
delivered |
Nachricht wurde vom Posteingang-Anbieter der Nutzer:innen akzeptiert |
bounced |
Nachricht wurde vom Posteingang-Anbieter der Nutzer:innen abgelehnt. Alle Bounce-Ereignisse enthalten ein Feld reason im Metadaten-Objekt, das den vom Posteingang-Anbieter bereitgestellten Bounce-Fehlercode wiedergibt |
Beispiel-Postback
// Sent Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "sent",
"metadata": {
"received_at": "2020-08-31T18:58:41.000+00:00",
"enqueued_at": "2020-08-31T18:58:41.000+00:00",
"executed_at": "2020-08-31T18:58:41.000+00:00",
"sent_at": "2020-08-31T18:58:42.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}
// Processed Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "processed",
"metadata": {
"processed_at": "2020-08-31T18:58:42.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}
// Aborted
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "aborted",
"metadata": {
"reason": "User not emailable",
"aborted_at": "2020-08-31T19:04:51.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}
// Delivered Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "delivered",
"metadata": {
"delivered_at": "2020-08-31T18:27:32.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}
// Bounced Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "bounced",
"metadata": {
"bounced_at": "2020-08-31T18:58:43.000+00:00",
"reason": "550 5.1.1 The email account that you tried to reach does not exist",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}