Automatisierungen
Workflows aus Triggern und Schritten aufbauen, ausführen und ihre Durchläufe prüfen.
- POST/automations
- GET/automations/{id}
- POST/automations/{id}
- GET/automations
- DEL/automations/{id}
- POST/automations/{id}/start
- POST/automations/{id}/pause
- POST/automations/{id}/stop
- POST/automations/{id}/trigger
- GET/automations/{id}/runs
- GET/automations/{id}/runs/{run_id}
- GET/automations/{id}/stats
- GET/automations/{id}/steps/{step_key}/stats
Automatisierung erstellen
Erstellt eine Automatisierung im Status draft aus einem Graphen von Schritten und Verbindungen. Erfordert einen API-Schlüssel mit dem Scope full. Automatisierungen sind in der Beta.
Die Automatisierung tut nichts, bis Sie sie starten. Jeder Durchlauf kostet beim Start 3 Credits, und jede E-Mail, die send_email oder forward_email sendet, kostet einen weiteren Credit. In einem nicht verifizierten Workspace können diese Aktionen nur an die E-Mail-Adressen der Konten von Workspace-Mitgliedern senden.
/automationsBody-Parameter
contextstringerforderlichcontact, email oder event. Der Kontext bestimmt, welche Trigger und Aktionen Sie verwenden können, und lässt sich später nicht ändern. Siehe Kontexte.namestringerforderlichdescriptionstring | nullsettingsobjectstepsobject[]erforderlichconnectionsobject[]erforderlich[] für einen Graphen, der nur aus einem Trigger besteht. Siehe Verbindungen.Einstellungen
on_step_failurestringStandardwert: stopstop markiert den Durchlauf als failed, wenn ein Schritt fehlschlägt. skip protokolliert den fehlgeschlagenen Schritt und lässt den Rest des Durchlaufs zu Ende laufen.allow_reentrybooleanStandardwert: truefalse überspringt einen Trigger, wenn derselbe Kontakt (oder dieselbe E-Mail) in dieser Automatisierung bereits einen laufenden Durchlauf hat.max_concurrent_runsintegerStandardwert: 0running. 0 bedeutet kein Limit.cooldown_secondsintegerStandardwert: 0Schritte
keystringerforderlichwelcome_email. Verbindungen, Schrittstatistiken und Aktualisierungen verweisen über diesen Schlüssel auf Schritte.typestringerforderlichtrigger oder action.triggerstringactionstringconfigobjectVerbindungen
fromstringerforderlichtostringerforderlichbranchstringStandardwert: defaultfrom dieser Kante folgt. Schritte vom Typ condition verwenden yes und no, Schritte vom Typ experiment die Schlüssel der Varianten. Alle anderen Schritte verwenden default.Kontexte
| Kontext | Ein Durchlauf betrifft | Trigger | Regeln |
|---|---|---|---|
contact |
Einen Kontakt. send_email geht an diesen Kontakt. |
contact.*, system.* |
Ein oder mehrere Trigger. Sie müssen alle mit derselben ersten Aktion verbunden sein. |
email |
Eine E-Mail (gesendet oder empfangen). | email.*, system.* |
Ein oder mehrere Trigger. Sie müssen alle mit derselben ersten Aktion verbunden sein. |
event |
Nur den Payload des Triggers. | event.*, system.* |
Genau ein Trigger. |
Jede Aktion muss von einem Trigger aus erreichbar sein. Ein Durchlauf beginnt bei der Aktion, die mit dem ausgelösten Trigger verbunden ist, und folgt den Verbindungen:
conditionfolgt je nach Ergebnis nur der Kante, derenbranchyesodernoist.experimentfolgt den Kanten der gewählten Variante. Wenn dieser Pfad endet, setzt sich der Durchlauf an dendefault-Kanten des Experiment-Schritts fort.waitverzögert den nächsten Schritt.- Alle anderen Aktionen folgen ihren
default-Kanten. Ein Schritt mit mehreren ausgehenden Kanten führt sie alle aus.
Ein Durchlauf ist completed, wenn keine Schritte mehr übrig sind, failed, wenn ein Schritt fehlschlägt (mit on_step_failure: "stop"), und canceled, wenn Sie die Automatisierung stoppen.
Trigger
| Trigger | Kontext | Wird ausgelöst, wenn |
|---|---|---|
contact.added_to_audience |
contact | Ein Kontakt eine Kontaktliste abonniert, auch bei erneuter Anmeldung. |
contact.removed_from_audience |
contact | Ein Abonnent aus einer Kontaktliste gelöscht wird. |
contact.updated |
contact | Ein Kontakt aktualisiert wird. |
contact.loaded_email |
contact | Ein Empfänger, der ein Kontakt im Workspace ist, eine E-Mail öffnet. |
contact.clicked_in_email |
contact | Ein Empfänger, der ein Kontakt im Workspace ist, auf einen getrackten Link klickt. |
contact.date_anniversary |
contact | Täglich um 00:00 UTC, für Kontakte, deren eigenes Datumsfeld (YYYY-MM-DD) den heutigen Monat und Tag enthält. |
contact.on_date |
contact | Täglich um 00:00 UTC, für Kontakte, deren eigenes Datumsfeld dem heutigen Datum entspricht. |
contact.visits_url, contact.on_purchase, contact.on_event |
contact | Werden akzeptiert, aber Emailit löst sie noch nicht aus. |
email.received |
Eine eingehende E-Mail eintrifft. | |
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled |
Das gleichnamige E-Mail-Event eintritt. | |
event.<name> |
event | Jeder Name, der mit event. beginnt. Emailit löst noch keine event.*-Events aus; starten Sie Event-Automatisierungen mit system.manual. |
system.manual |
alle | Sie Durchlauf auslösen aufrufen. |
system.schedule |
alle | Wird akzeptiert, aber Emailit löst geplante Trigger noch nicht aus. |
Felder in config für Trigger:
audience_idstringcontact.added_to_audience und contact.removed_from_audience: nur für diese Kontaktliste (aud_…) auslösen.date_fieldstringcontact.date_anniversary und contact.on_date: der Schlüssel des eigenen Felds, das das Datum enthält, zum Beispiel birthday.filterobjectNur auslösen, wenn das Event passt: { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match ist all (Standardwert) oder any. field ist ein Pfad mit Punkten in das object des Events, zum Beispiel to oder email.subject; ein vorangestelltes payload. wird ignoriert.
Operatoren: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Jeder Operator außer is_set und is_not_set braucht einen value; in und not_in erwarten ein Array.
Aktionen
| Aktion | Kontext | Konfiguration |
|---|---|---|
send_email |
alle | type (erforderlich, template), template_id (erforderlich: eine tem_-ID oder der Alias einer veröffentlichten Vorlage), from, subject, reply_to, to |
forward_email |
email, event | to (erforderlich), from, subject, email_id |
wait |
alle | seconds (erforderlich, 0 bis 2.592.000, also 30 Tage) |
condition |
alle | filter (erforderlich, siehe unten) |
experiment |
alle | variants (erforderlich), control |
call_webhook |
alle | url (erforderlich), method, headers, body |
run_automation |
alle | automation_id (erforderlich) |
end |
alle | Keine |
add_to_audience |
contact | audience_id (erforderlich) |
remove_from_audience |
contact | audience_id (erforderlich) |
edit_contact |
contact | fields (erforderlich) |
add_to_suppressions |
email, event | type, reason, email |
remove_from_suppressions |
email, event | email |
create_contact |
email, event | email, first_name, audience_id |
send_emailsendet die Vorlage.fromist standardmäßig der Absender der Vorlage und muss auf einer verifizierten Versanddomain liegen.subjectüberschreibt den Betreff der Vorlage.reply_toist eine Adresse oder ein Array von Adressen. Im Kontextcontactgeht die E-Mail an den Kontakt des Durchlaufs; in den Kontextenemailundeventsetzen Sieto.forward_emailleitet die E-Mail des Durchlaufs (oder die E-Mail inemail_id) antoweiter.fromist standardmäßig der ursprüngliche Absender undsubjectstandardmäßigFwd: <original subject>.conditionerwartet{ "match": "all" | "any", "rules": [...] }mit denselben Operatoren wie Trigger-Filter. Felder ohne Präfix beziehen sich auf den Kontakt des Durchlaufs (first_name,custom_fields.plan) oder auf die E-Mail (rcpt_to,subject); stellen Sie einem Feldcontact.,email.,payload.odermeta.voran, um es eindeutig anzugeben. Der Schritt wird mityesodernofortgesetzt.experimentwählt eine dervariants(einschließlichcontrol), jeweils{ "key": "a", "weight": 50 }, zufällig nach Gewichtung aus und setzt den Durchlauf auf dem Zweig fort, der nach dem gewählten Schlüssel benannt ist.call_webhooksendet eine HTTP-Anfrage (StandardmethodePOST, JSON alsContent-Type) und protokolliert die Statusklasse (2xx,4xx,5xx) odertimeoutodernetwork_error. Eine Antwort außerhalb von 2xx lässt den Schritt nicht fehlschlagen.run_automationstartet einen Durchlauf einer anderen laufenden Automatisierung mit dem Payload dieses Durchlaufs. Der aktuelle Durchlauf läuft weiter.edit_contacterwartetfields: [{ "key": "first_name", "value": "Ada" }]. Die Schlüsselemail,first_name,last_nameundunsubscribedaktualisieren den Kontakt; jeder andere Schlüssel setzt ein eigenes Feld.add_to_suppressionssperrt die Adresse des Durchlaufs (Standardwert fürtype:recipient, fürreason:automation).remove_from_suppressionshebt die Sperrung auf. Im Kontexteventübergeben Sieemail.create_contacterstellt den Kontakt (oder findet den vorhandenen) und meldet ihn optional beiaudience_idan. Im Kontextemailistemailstandardmäßig der Empfänger der E-Mail.
String-Werte in jeder Aktionskonfiguration können Platzhalter enthalten, die Emailit beim Ausführen des Schritts füllt: {{contact.email}}, {{email.mail_from}}, {{payload.object.subject}} oder {{meta.source_event_id}}, zum Beispiel "to": "{{email.mail_from}}". Vorlagen, die send_email sendet, rendern außerdem die Felder des Kontakts direkt, etwa {{ first_name }}.
Rückgabe
Gibt 201 Created mit der Automatisierung in data zurück, einschließlich der ID jedes Schritts (aus_…) und der Verbindungen. status ist draft.
Beim Erstellen wird die Struktur des Graphen geprüft: Trigger- und Aktionsnamen für den Kontext, eindeutige Schlüssel, gültige Verbindungen, Erreichbarkeit und ob jede Absenderadresse from in send_email eine verifizierte Versanddomain verwendet. Nicht geprüft wird, ob jede Aktionskonfiguration vollständig ist; das übernimmt Automatisierung aktualisieren. Fehler geben 400 mit errors zurück, nach Feldpfad gegliedert.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "draft",
"settings": { "allow_reentry": false },
"last_triggered_at": null,
"published_at": null,
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-01T09:41:05.318274+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
},
{
"id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
"key": "wait_1_day",
"type": "action",
"trigger": null,
"action": "wait",
"config": { "seconds": 86400 }
},
{
"id": "aus_3HOgOzxaXBgVRpLFtpvJNo4vd5c",
"key": "is_free_user",
"type": "action",
"trigger": null,
"action": "condition",
"config": {
"filter": {
"match": "all",
"rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
}
}
},
{
"id": "aus_3gCI5SWMPFVhOSawR6nz8sF55wp",
"key": "upgrade_tips",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "getting-started-tips" }
},
{
"id": "aus_3Pq7Wd2LxN8cVt5RmK0sHy4BfJe",
"key": "done",
"type": "action",
"trigger": null,
"action": "end",
"config": {}
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" },
{ "from": "welcome_email", "to": "wait_1_day", "branch": "default" },
{ "from": "wait_1_day", "to": "is_free_user", "branch": "default" },
{ "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
{ "from": "is_free_user", "to": "done", "branch": "no" }
]
},
"message": "Automation was successfully created.",
"notify": true
}{
"message": "Validation failed.",
"errors": {
"steps.1.action": ["Action \"forward_email\" is not allowed for context \"contact\"."],
"steps": ["Action step \"upgrade_tips\" is not reachable from any trigger."]
}
}Automatisierung abrufen
Ruft eine Automatisierung mit ihrem vollständigen Graphen ab. Erfordert einen API-Schlüssel mit dem Scope full.
/automations/{id}Pfadparameter
idstringerforderlichaut_…).Rückgabe
Gibt die Automatisierung in data zurück.
idstringaut_.contextstringcontact, email oder event.namestringdescriptionstring | nullstatusstringdraft, running, paused, stopped oder archived.settingsobjecton_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Leer, wenn Sie keine festgelegt haben.last_triggered_atstring | nullpublished_atstring | nullstepsobject[]id (aus_…), key, type, trigger, action und config. Details zu Durchläufen verweisen über id auf Schritte, Statistiken über key.connectionsobject[]from und to sowie ihr branch.Was jeder Trigger, jede Aktion und jede Einstellung bedeutet, erfahren Sie unter Automatisierung erstellen. Gibt 404 zurück, wenn die Automatisierung nicht existiert oder gelöscht wurde.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "running",
"settings": { "allow_reentry": false },
"last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-03T14:12:40.551870+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
},
{
"id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
"key": "wait_1_day",
"type": "action",
"trigger": null,
"action": "wait",
"config": { "seconds": 86400 }
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" },
{ "from": "welcome_email", "to": "wait_1_day", "branch": "default" }
]
}
}{
"message": "Automation not found."
}Automatisierung aktualisieren
Aktualisiert Name, Beschreibung, Einstellungen oder Graphen einer Automatisierung. Erfordert einen API-Schlüssel mit dem Scope full. Der Kontext lässt sich nicht ändern.
Um den Graphen zu ändern, senden Sie steps und connections zusammen; sie ersetzen den aktuellen Graphen. Schritte, deren key bereits existiert, behalten ihre ID und ihren Durchlaufverlauf, Schritte, die Sie weglassen, werden gelöscht, und neue Schlüssel werden hinzugefügt. Anders als beim Erstellen wird beim Aktualisieren auch die Konfiguration jeder Aktion validiert (zum Beispiel braucht send_email die Felder type und template_id und wait das Feld seconds).
Pausieren Sie die Automatisierung, bevor Sie den Graphen einer laufenden Automatisierung ändern, und starten Sie sie dann erneut, damit die neuen Trigger wirksam werden.
/automations/{id}Pfadparameter
idstringerforderlichaut_…).Body-Parameter
namestringdescriptionstringsettingsobjecton_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Siehe Einstellungen.stepsobject[]connections senden. Siehe Schritte.connectionsobject[]steps senden. Siehe Verbindungen.Rückgabe
Gibt die aktualisierte Automatisierung in data zurück, mit message und notify. Gibt bei fehlgeschlagener Validierung 400 mit errors nach Feldpfad zurück und 404, wenn die Automatisierung nicht existiert.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series (v2)",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "paused",
"settings": { "allow_reentry": false, "on_step_failure": "skip" },
"last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-04T08:15:22.730115+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" }
]
},
"message": "Automation was successfully updated.",
"notify": true
}{
"message": "Validation failed.",
"errors": {
"steps.2.config.seconds": ["Wait seconds cannot exceed 2592000 (30 days)."],
"steps.1.config.template_id": ["Template ID is required when type is \"template\"."]
}
}{
"message": "Automation not found."
}Automatisierungen auflisten
Gibt die Automatisierungen des Workspaces zurück, die neuesten zuerst, ohne ihre Schritte und Verbindungen. Erfordert einen API-Schlüssel mit dem Scope full. Gelöschte Automatisierungen werden nicht aufgelistet.
/automationsQuery-Parameter
pageintegerStandardwert: 1per_pageintegerStandardwert: 25filter[context]stringcontact, email oder event.filter[status]stringdraft, running, paused, stopped oder archived.filter[name]stringsortstringStandardwert: created_atname, created_at, updated_at oder last_triggered_at.orderstringStandardwert: descasc oder desc.Sie können auch die allgemeinen Filter der Form key.condition=value auf name, status, context und created_at verwenden, zusammen mit match. Siehe Filtern.
Rückgabe
dataobject[]id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. settings ist in dieser Liste immer ein leeres Objekt; rufen Sie die Automatisierung ab, um es zu lesen.total_recordsintegerper_pageintegercurrent_pageintegertotal_pagesinteger{
"data": [
{
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "running",
"settings": {},
"last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-03T14:12:40.551870+00:00"
}
],
"total_records": 1,
"per_page": 50,
"current_page": 1,
"total_pages": 1
}Automatisierung löschen
Löscht eine Automatisierung. Sie verschwindet aus Listen und reagiert nicht mehr auf Trigger. Erfordert einen API-Schlüssel mit dem Scope full.
Bereits laufende Durchläufe werden nicht abgebrochen. Um sie abzubrechen, stoppen Sie die Automatisierung, bevor Sie sie löschen.
/automations/{id}Pfadparameter
idstringerforderlichaut_…).Rückgabe
Gibt eine message zurück, die das Löschen bestätigt. Gibt 404 zurück, wenn die Automatisierung nicht existiert oder bereits gelöscht wurde.
{
"message": "Automation was deleted successfully.",
"notify": true
}{
"message": "Automation not found."
}Automatisierung starten
Setzt den Status der Automatisierung auf running. Ab dann starten passende Trigger Durchläufe; Events, die vor dem Start eingetreten sind, nicht. Erfordert einen API-Schlüssel mit dem Scope full.
Sie können eine Automatisierung im Status draft, paused oder stopped starten. Der erste Start setzt published_at.
Beim Starten wird der Graph nicht erneut validiert. Wenn Sie die Automatisierung mit Automatisierung erstellen angelegt haben, das nur die Struktur prüft, stellen Sie sicher, dass jede Aktionskonfiguration vollständig ist, oder senden Sie den Graphen einmal über Automatisierung aktualisieren, das ihn vollständig validiert. Ein Schritt mit unvollständiger Konfiguration schlägt fehl, wenn ein Durchlauf ihn erreicht.
/automations/{id}/startPfadparameter
idstringerforderlichaut_…).Rückgabe
Gibt die Automatisierung in data zurück, mit status auf running. Gibt 404 zurück, wenn die Automatisierung nicht existiert.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "running",
"settings": { "allow_reentry": false },
"last_triggered_at": null,
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-01T10:00:02.204118+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" }
]
},
"message": "Automation was successfully started.",
"notify": true
}{
"message": "Automation not found."
}Automatisierung pausieren
Setzt den Status der Automatisierung auf paused. Ihre Trigger starten keine neuen Durchläufe mehr, aber bereits laufende Durchläufe laufen weiter, auch solche, die in einem wait-Schritt warten. Erfordert einen API-Schlüssel mit dem Scope full.
Um auch laufende Durchläufe abzubrechen, stoppen Sie die Automatisierung stattdessen. Starten Sie sie erneut, damit Trigger wieder Durchläufe auslösen.
/automations/{id}/pausePfadparameter
idstringerforderlichaut_…).Rückgabe
Gibt die Automatisierung in data zurück, mit status auf paused. Gibt 404 zurück, wenn die Automatisierung nicht existiert.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "paused",
"settings": { "allow_reentry": false },
"last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-04T08:10:51.004732+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" }
]
},
"message": "Automation was successfully paused.",
"notify": true
}{
"message": "Automation not found."
}Automatisierung stoppen
Setzt den Status der Automatisierung auf stopped und bricht jeden Durchlauf ab, der noch running ist; diese Durchläufe erhalten den Status canceled, und ihre restlichen Schritte werden nicht ausgeführt. Erfordert einen API-Schlüssel mit dem Scope full.
Stoppen ist nur per API möglich. Um laufende Durchläufe weiterlaufen zu lassen, pausieren Sie die Automatisierung stattdessen. Sie können eine gestoppte Automatisierung erneut starten; neue Durchläufe beginnen dann von vorn.
/automations/{id}/stopPfadparameter
idstringerforderlichaut_…).Rückgabe
Gibt die Automatisierung in data zurück, mit status auf stopped. Gibt 404 zurück, wenn die Automatisierung nicht existiert.
{
"data": {
"id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"context": "contact",
"name": "Welcome series",
"description": "Welcome new subscribers, then nudge free users a day later.",
"status": "stopped",
"settings": { "allow_reentry": false },
"last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
"published_at": "2026-10-01T10:00:02.204118+00:00",
"created_at": "2026-10-01T09:41:05.318274+00:00",
"updated_at": "2026-10-05T16:45:09.882301+00:00",
"steps": [
{
"id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
"key": "joined",
"type": "trigger",
"trigger": "contact.added_to_audience",
"action": null,
"config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
},
{
"id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"key": "welcome_email",
"type": "action",
"trigger": null,
"action": "send_email",
"config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
}
],
"connections": [
{ "from": "joined", "to": "welcome_email", "branch": "default" }
]
},
"message": "Automation was successfully stopped.",
"notify": true
}{
"message": "Automation not found."
}Durchlauf auslösen
Löst den Trigger system.manual mit einem Payload Ihrer Wahl aus. Die Automatisierung muss running sein und einen Trigger-Schritt system.manual haben, sonst startet kein Durchlauf. Erfordert einen API-Schlüssel mit dem Scope full. Manuelle Trigger sind nur per API verfügbar.
Der Durchlauf startet asynchron und kostet wie jeder andere Durchlauf 3 Credits. Sie finden ihn über Durchläufe auflisten.
/automations/{id}/triggerPfadparameter
idstringerforderlichaut_…).Body-Parameter
payloadobjectDaten für den Durchlauf. Emailit ergänzt automation_id und speichert das Ergebnis als payload des Durchlaufs. Schritte können ihn mit Platzhaltern wie {{payload.order_id}} und in Bedingungen wie payload.plan lesen.
Worum es im Durchlauf geht, hängt vom Kontext der Automatisierung ab:
contact: Übergeben Siecontact_id(con_…). Kontaktaktionen undsend_emailverwenden diesen Kontakt.email: Übergeben Sieemail_id(em_…). E-Mail-Aktionen verwenden diese E-Mail.event: beliebige Daten. Setzen Sietooderemailin den Aktionskonfigurationen, zum Beispiel"to": "{{payload.customer_email}}".
Rückgabe
Gibt 200 mit einer message zurück, sobald der Trigger in die Warteschlange gestellt ist. Gibt 422 zurück, wenn die Automatisierung nicht running ist, und 404, wenn sie nicht existiert.
{
"message": "Automation trigger dispatched."
}{
"message": "Automation must be running to trigger."
}{
"message": "Automation not found."
}Durchläufe auflisten
Gibt die Durchläufe einer Automatisierung zurück, die neuesten zuerst. Jeder Durchlauf ist ein Durchgang durch den Graphen, gestartet von einem Trigger. Erfordert einen API-Schlüssel mit dem Scope full.
/automations/{id}/runsPfadparameter
idstringerforderlichaut_…).Query-Parameter
pageintegerStandardwert: 1per_pageintegerStandardwert: 25filter[status]stringrunning, completed, failed oder canceled.Sie können auch mit key.condition=value auf status, event und created_at filtern (zum Beispiel created_at.after=2026-10-01) und mit order und direction nach denselben Schlüsseln sortieren. Siehe Filtern.
Rückgabe
dataobject[]total_records, per_page, current_page, total_pagesintegerJeder Durchlauf hat:
idstringaur_.automation_idstringaut_…).contact_idstring | nullcon_…) im Kontext contact.email_idstring | nullem_…) im Kontext email.event_idstring | nulleventstringcontact.added_to_audience oder system.manual.payloadobjectmetaobjectfailure_reason.statusstringrunning, completed, failed oder canceled (die Automatisierung wurde gestoppt).started_at, completed_at, created_at, updated_atstring | null{
"data": [
{
"id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
"automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
"email_id": null,
"event_id": null,
"event": "contact.added_to_audience",
"payload": {},
"meta": {},
"status": "failed",
"started_at": "2026-10-03T14:12:40.551870+00:00",
"completed_at": "2026-10-03T14:12:41.093355+00:00",
"created_at": "2026-10-03T14:12:40.551870+00:00",
"updated_at": "2026-10-03T14:12:41.093355+00:00"
}
],
"total_records": 1,
"per_page": 25,
"current_page": 1,
"total_pages": 1
}{
"message": "Automation not found."
}Durchlauf abrufen
Ruft einen Durchlauf einer Automatisierung ab, einschließlich der ausgeführten Schritte. Erfordert einen API-Schlüssel mit dem Scope full.
/automations/{id}/runs/{run_id}Pfadparameter
idstringerforderlichaut_…).run_idstringerforderlichaur_…).Rückgabe
Gibt den Durchlauf in data zurück, mit den unter Durchläufe auflisten beschriebenen Feldern sowie dem vollständigen payload, meta und einem Array run_steps.
payloadobject | null{ "object": { … } }) oder der Payload, den Sie an Durchlauf auslösen übergeben haben, ergänzt um automation_id.metaobject | nullsource_event_id verknüpft den Durchlauf mit dem Event, das ihn gestartet hat. Fehlgeschlagene Durchläufe können failure_reason enthalten: insufficient_credits (die 3 Credits für den Durchlauf konnten nicht abgebucht werden) oder run_timeout (der Durchlauf war nach 72 Stunden noch running, ohne dass ein Schritt wartete).run_stepsobject[]Ein Eintrag pro Schritt, den der Durchlauf erreicht hat:
step_id: die ID des Schritts (aus_…). Ordnen Sie siesteps[].idaus Automatisierung abrufen zu.status:running,waiting(einwait-Schritt, dessen Wartezeit noch nicht abgelaufen ist),completedoderfailed.data: das Ergebnis des Schritts. Zum Beispiel gibtsend_email{ "result": "email_queued", "email_oid": "em_…", "to": "…" }zurück,conditiongibt{ "result": true, "branch": "yes" }zurück, und fehlgeschlagene Schritte geben{ "error": "…" }zurück.started_at,completed_at,created_at.
Gibt 404 zurück, wenn die Automatisierung oder der Durchlauf nicht existiert.
{
"data": {
"id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
"automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
"contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
"email_id": null,
"event_id": null,
"event": "contact.added_to_audience",
"payload": {
"object": {
"id": "sub_3Fh2pQx9LmZr4Wt7Nc0bVd8KsYe",
"object": "subscriber",
"subscribed": true,
"audience": { "id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "name": "Newsletter" },
"contact": { "id": "con_3munwNLaXKUARc6ff9wPtxKVq4A", "email": "ada@example.com" }
}
},
"meta": { "source_event_id": "evt_3Kd8sWq1NzXc5Vb7Mt2LpRy0HgA" },
"status": "running",
"started_at": "2026-10-03T14:12:40.551870+00:00",
"completed_at": null,
"created_at": "2026-10-03T14:12:40.551870+00:00",
"updated_at": "2026-10-03T14:12:40.551870+00:00",
"run_steps": [
{
"step_id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
"status": "completed",
"data": {
"result": "email_queued",
"outcome": "accepted",
"email_oid": "em_3Cp8cMgPskzB8tIlgUyNJkpDp9O",
"to": "ada@example.com"
},
"started_at": "2026-10-03T14:12:40.702113+00:00",
"completed_at": "2026-10-03T14:12:40.918540+00:00",
"created_at": "2026-10-03T14:12:40.702113+00:00"
},
{
"step_id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
"status": "waiting",
"data": { "status": "waiting", "delayMs": 86400000, "seconds": 86400 },
"started_at": "2026-10-03T14:12:41.004221+00:00",
"completed_at": null,
"created_at": "2026-10-03T14:12:41.004221+00:00"
}
]
}
}{
"message": "Run not found."
}Statistiken abrufen
Gibt Zählwerte für jeden Schritt einer Automatisierung zurück, nach Schrittschlüssel geordnet. Erfordert einen API-Schlüssel mit dem Scope full.
/automations/{id}/statsPfadparameter
idstringerforderlichaut_…).Query-Parameter
sincestring2026-10-01T00:00:00Z.untilstringrun_ids[]stringaur_…). Wiederholen Sie den Parameter für mehrere Durchläufe.Rückgabe
Gibt data zurück, ein Objekt mit einem Eintrag pro Schrittschlüssel. Schritte, die kein Durchlauf erreicht hat, haben total mit dem Wert 0.
totalintegerby_statusobjectrunning, waiting, completed, failed.by_outcomeobjectsend_email und forward_email: accepted, dann der letzte Zustand der E-Mail (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition: matched, not_matched. experiment: der Schlüssel der gewählten Variante. call_webhook: 2xx, 4xx, 5xx, timeout, network_error. Fehlgeschlagene Schritte: error.funnelobjectsend_email. Kumulierte Zählwerte: accepted umfasst jede E-Mail, die weiter gekommen ist, delivered umfasst geladene und geklickte E-Mails, und loaded umfasst geklickte. bounced, failed, complained und unsubscribed sind einfache Zählwerte.{
"data": {
"joined": { "total": 0, "by_status": {}, "by_outcome": {} },
"welcome_email": {
"total": 412,
"by_status": { "completed": 409, "failed": 3 },
"by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
"funnel": {
"accepted": 390,
"delivered": 390,
"loaded": 139,
"clicked": 41,
"bounced": 19,
"failed": 0,
"complained": 0,
"unsubscribed": 0
}
},
"wait_1_day": {
"total": 409,
"by_status": { "completed": 352, "waiting": 57 },
"by_outcome": {}
},
"is_free_user": {
"total": 352,
"by_status": { "completed": 352 },
"by_outcome": { "matched": 270, "not_matched": 82 }
},
"upgrade_tips": {
"total": 270,
"by_status": { "completed": 270 },
"by_outcome": { "accepted": 12, "delivered": 180, "loaded": 61, "clicked": 17 },
"funnel": {
"accepted": 270,
"delivered": 258,
"loaded": 78,
"clicked": 17,
"bounced": 0,
"failed": 0,
"complained": 0,
"unsubscribed": 0
}
},
"done": {
"total": 82,
"by_status": { "completed": 82 },
"by_outcome": {}
}
}
}{
"message": "Automation not found."
}Schrittstatistiken abrufen
Gibt die Zählwerte für einen Schritt einer Automatisierung zurück. Erfordert einen API-Schlüssel mit dem Scope full. Die Felder sind dieselben wie unter Statistiken abrufen.
/automations/{id}/steps/{step_key}/statsPfadparameter
idstringerforderlichaut_…).step_keystringerforderlichkey des Schritts, zum Beispiel welcome_email.Query-Parameter
sincestringuntilstringRückgabe
Gibt data mit total, by_status, by_outcome und bei Schritten vom Typ send_email mit funnel zurück. Gibt 404 zurück, wenn die Automatisierung oder der Schrittschlüssel nicht existiert.
{
"data": {
"total": 412,
"by_status": { "completed": 409, "failed": 3 },
"by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
"funnel": {
"accepted": 390,
"delivered": 390,
"loaded": 139,
"clicked": 41,
"bounced": 19,
"failed": 0,
"complained": 0,
"unsubscribed": 0
}
}
}{
"message": "Step not found."
}