The automation object
Internal beta â not released yet
The Automation API is an internal beta and is not released yet. Its endpoints and payloads are not final and may change or be withdrawn at any time without notice.
The automation object is returned â wrapped as { "automation": ⌠} â by retrieve, create, update, the lifecycle
endpoints and delete, and in automations[] by the list endpoints. Its three
substantive blocks â trigger,
filter and
actions â each have their own reference page.
{
"automation": {
"id": 4021,
"app_id": 87,
"workspace_id": 12,
"name": "Email the owner on a new high-priority lead",
"description": "Notifies the record owner whenever a lead is created.",
"paused": false,
"broken": false,
"broken_reason": null,
"trigger": { "type": "record_created", "config": {} },
"filter": {
"operator": "and",
"rows": [
{
"id": "6a1fâŚ",
"subject": { "kind": "variable", "source": "field", "field_id": 512, "field_type": "single_category", "previous": false, "collection": false, "triggering": false },
"operator": "is_any_of",
"value": { "type": "ids", "ids": [9001] }
}
]
},
"actions": [
{ "id": "3f9a2c", "type": "send_email", "group": "action", "config": { "subject": ["A new lead was created"] } }
],
"created_at": "2024-05-14 09:12:31",
"updated_at": "2024-05-20 16:03:08"
}
}
Fieldsâ
| Field | Type | Description |
|---|---|---|
id | integer | ID of the automation. |
app_id | integer | The app the automation belongs to. Only database apps can have automations. |
workspace_id | integer | The workspace the app belongs to. |
name | string | Name of the automation. |
description | string | Optional. Absent when the automation has none. |
paused | boolean | Whether the automation is paused. See status. |
broken | boolean | Whether the definition is not executable. Reflects the last validation, not the current edit â see the note below. |
broken_reason | object | null | { errors: [...] } when broken, else null. Same entry shape as validate. |
trigger | object | null | The single trigger { type, config }, or null. |
filter | object | null | The root filter group, or null when there is no filter. |
actions | array | The ordered action list. [] when none. |
created_at | string | Creation time, UTC YYYY-MM-DD HH:mm:ss. |
updated_at | string | Last-modified time, UTC YYYY-MM-DD HH:mm:ss. |
There is no status field (state is the paused + broken pair) and no owner/author field in this
release.
broken reflects the last validation, not the current definition
Create and update do not re-validate. A freshly written definition that references something invalid still reads
broken: false until you activate it (which recomputes validity and refuses
a broken automation with 409) or call validate for a fresh verdict.
So broken_reason on the object can differ from what validate returns.
Identifiersâ
id, app_id and workspace_id are plain JSON integers. The only string-wrapped ID in this resource is a
revision ID (a 64-bit value). Node IDs inside filter and actions
are opaque strings â a caller-supplied id is preserved verbatim; server-minted ones (when you omit an id) are
UUIDs. Treat them as handles, not numbers.