Automation erstellen
Automation erstellen
Erstelle eine Famulor-Automation aus einer Definition, aktiviere sie und prüfe sie mit einem echten Testlauf.
POST
Automation erstellen
Dieser Endpunkt erstellt eine Automation aus ihrer Definition (Trigger und verkettete Steps), aktiviert sie, führt einen echten Testlauf mit deinem Sample-Payload aus und meldet das Ergebnis Schritt für Schritt. Der Testlauf ist das Tor: schlägt der Test fehl, bleibt die Automation deaktiviert; eine Assistant-Event-Automation wird erst nach bestandenem Test an den Assistant gebunden.
Wenn eine fertige Vorlage passt, ist Anwenden einer Vorlage einfacher als eine Definition von Grund auf zu schreiben.
Die Steps werden in der angegebenen Reihenfolge an den Trigger gehängt. Nesting schreibst du nur dort, wo es nötig ist — bedingte Steps eines Unterstützte Trigger (
Definitionsformat
Dasflow-Objekt ist die Definition der Automation. Bevorzugte Form ist eine flache Liste:
BRANCH-Steps unter onSuccessAction / onFailureAction. (Ein handverschachtelter Baum, in dem jeder Step unter dem nextAction des vorherigen liegt, wird ebenfalls akzeptiert.)
Eine Definition ersetzt immer die gesamte Automation — sie wird nie gemerged. Ein Trigger ohne Steps wird abgelehnt (no_steps): eine Automation, die nichts tut, kann nicht aktiviert werden.
Unterstützte Trigger (trigger.settings)
Steps referenzieren frühere Ausgaben über den Step-Namen —
{{step_1['body']['field']}} für HTTP-Steps (JSON liegt unter body). Häufige Step-Formen: HTTP-Requests, Code-Transforms, Branches, Delays, Respond-Steps und Famulor-Plattform-Aktionen (SMS/WhatsApp senden, Anruf starten, Lead erneut in die Queue). Am einfachsten lernst du die genaue Form, indem du eine bestehende Automation mit Automation abrufen liest oder eine Vorlage anwendest und das Ergebnis inspizierst.
Request Body
string
erforderlich
Ein kurzer, menschenlesbarer Name für die Automation (max. 255 Zeichen)
object
erforderlich
Die Automation-Definition —
{"trigger": {...}, "steps": [...]} wie oben beschrieben. Max. 1 MB.object
Ein realistisch geformter Sample-Payload für den Testlauf (was der Trigger empfängt). Bei Assistant-Events wird bei Weglassen ein kanonisches Sample aus den Variablen des Assistants verwendet. Max. 256 KB.
integer
Pflicht für Assistant-Event-Automationen (
phoneCallEnded, inboundCall, newConversation und bind_webhook): der Assistant, an den die Automation gebunden wird. Er empfängt die echten Events erst nach bestandenem Test. (Bei Plattform-Triggern funktioniert auch die Auswahl des Assistants in settings.input.assistant — der explizite Parameter hat Vorrang.)string
Nur für webhook-getriggerte Definitionen: an das Conversation-Ended-Event des Assistants binden. Einziger unterstützter Wert:
conversation_ended. Erfordert assistant_id.boolean
Pflicht (
true), wenn die Definition Steps enthält, die Nachrichten oder E-Mails senden, Anrufe starten oder Non-GET-HTTP-Requests machen — der Testlauf führt sie echt aus.Response
Liefert201, wenn die Automation aktiv ist (active / active_untested), 200, wenn sie gebaut wurde, der Test aber fehlschlug (test_failed), und 422 für eine Definition, die den Testlauf nie erreicht hat (siehe Fehlercodes unten).
string
Die ID der erstellten Automation
string | null
Bei webhook-getriggerten Automationen (inkl. Conversation-Ended): die URL, die externe Systeme aufrufen.
null bei Assistant-Event- und Schedule-Automationen.string
active — Testlauf bestanden; die Automation ist live (und bei Assistant-Events gebunden).
active_untested — Trigger kann nicht on-demand gefeuert werden (Schedules, externe Integrationen); die Automation ist live und scharf, der erste echte Event ist der Beweis.
test_failed — Testlauf fehlgeschlagen; Automation bleibt deaktiviert. Lies test.steps für die Klassifikation pro Step.object
Ergebnis des Testlaufs
object | string | null
Bei synchron getesteten Automationen (Webhook- und Inbound-Trigger): was die Automation während des Testlaufs geantwortet hat
object | null
Bei Assistant-Event-Automationen:
{"type": "post_call" | "inbound" | "conversation" | "conversation_ended", "assistant_id": <id>, "bound": <bool>}. bound ist nur nach grünem Test true.Fehlercodes (422)
Harte Fehler liefern{"message": "...", "error": "<code>"} und nichts wird aktiviert. Wichtige Codes:

