Validates an automation definition without saving

Runs every check POST /automations runs (shape, triggers, steps, languages, Liquid merge tags, decision filters, and every referenced id against your scope) and returns the errors and warnings. Nothing is written. Any JSON object body returns 200; read data.valid. A body that is not a JSON object returns 422.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Query Params
string
enum
Allowed:
integer
Body Params

Canonical automation shape that POST /automations accepts. GET /automations/{id} returns it with these extra keys: id, is_active, scope_type, scope_id, admin_url, active_enrollment_count, is_valid, and activation_errors. A write refuses those keys, so remove them before you send a GET body back.

string
required

Unique (case-insensitive) within the scope. Max 200 characters.

supported_languages
array of strings | null

Language codes for message text. Defaults to the scope languages and must include the scope default language.

supported_languages
communication_settings
object | null

Quiet hours for sends: { start: "HH:MM", end: "HH:MM", days: ["mon", ...], skip_us_holidays: boolean }. Defaults to the scope settings.

goals
array of objects | null

Optional goals. Each is { type, resource, resource_ids }. GET /automations/options lists goal types.

goals
trigger_conditions
array of objects | null

Each trigger is { type, resource, ... }. GET /automations/options lists trigger types, their resource modes (any, specified) and extra keys. At most 3 triggers. Set manual_enrollment to "allow" to permit enrolling people by hand.

trigger_conditions
steps
array of objects | null
steps
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json