Automation
Your workflows and what they act on. Requires workflows:read.
/v1/workflows/{id} returns the resolved configuration — the node graph plus every variable with its effective value and whether it was overridden. /campaigns is the one worth reading first: membership is not simply "campaigns linked to the workflow", so a workflow can be scheduled every night and still process nothing. When the set comes back empty, empty_reason names the cause.
What a workflow actually changed on a campaign lives under the campaign instead, at /v1/campaigns/{id}/optimization-history — see Advertising.
Servers
workflows
The authenticated account's automation workflows, the campaigns they process and those campaigns' performance. Requires workflows:read.
List the authenticated account's workflows
Filter by description_key to tell workflow types apart: name and name_key are NOT reliable discriminators because several templates share a display name. template filters by the global template a workflow was cloned from. Global templates themselves are never listed here — only the account's own workflows.
Authorizations
Client API key (POST /api-keys). Send as Authorization: Bearer epk_live_....
Parameters
Query Parameters
20201100Cursor for the next page: the id of the last record you received. Returns the records after it.
Cursor for the previous page: the id of the first record you received. Returns the records before it.
Trim the response to the fields you need, comma-separated and keyed by ENTITY TYPE rather than by resource name: fields[campaign]=id,name. A key that matches no entity is ignored silently and the full object comes back.
"true""false"24-character hexadecimal Mongo ObjectId.
"^[a-f0-9]{24}$"Responses
200
Retrieve one workflow with its resolved configuration
Returns the full definition: the node graph, and every configuration variable with its effective value. overridden on a variable tells you whether the customer set it or it still carries the template default — which is usually the question worth asking when auditing a setup.
Authorizations
Client API key (POST /api-keys). Send as Authorization: Bearer epk_live_....
Parameters
Path Parameters
24-character hexadecimal Mongo ObjectId.
"^[a-f0-9]{24}$"Query Parameters
Trim the response to the fields you need, comma-separated and keyed by ENTITY TYPE rather than by resource name: fields[campaign]=id,name. A key that matches no entity is ignored silently and the full object comes back.
Responses
200
Campaigns this workflow actually processes
NOT simply the campaigns that link to the workflow. Membership is decided by three controls stored per campaign (force-include, force-exclude, global opt-out) combined with the workflow's own filter and its auto-selection setting. Each row carries a gate object saying why it is in, plus the campaign's effective AI configuration. When the set is empty, empty_reason names the cause: manual-sin-enlaces means the workflow is on manual selection with nothing linked — the state a workflow is BORN in, and the usual reason one runs nightly for weeks doing nothing. filtro-vacio means no campaign passes its own filter. no-itera-campanas means this workflow does not act on campaigns at all.
Authorizations
Client API key (POST /api-keys). Send as Authorization: Bearer epk_live_....
Parameters
Path Parameters
24-character hexadecimal Mongo ObjectId.
"^[a-f0-9]{24}$"Query Parameters
20201100Cursor for the next page: the id of the last record you received. Returns the records after it.
Cursor for the previous page: the id of the first record you received. Returns the records before it.
Responses
200
Advertising performance of the campaigns this workflow optimizes
Aggregated over a required start_date/end_date window, restricted to the campaigns the workflow actually processes. Each row puts the configured objective_type/objective_value next to the realized metrics, which is how you judge whether the workflow is hitting its target. optimizing_since is when the workflow first touched that campaign for real — results before that date are NOT its doing, so a window straddling it will mislead you. Monetary amounts are decimal strings; ratios are fractions (0.1642 = 16.42%) and are null, never 0, when their denominator is zero.
Authorizations
Client API key (POST /api-keys). Send as Authorization: Bearer epk_live_....
Parameters
Path Parameters
24-character hexadecimal Mongo ObjectId.
"^[a-f0-9]{24}$"Query Parameters
Both ends are included in the range. The window is capped, and the cap depends on the resource AND on granularity — daily allows a much shorter span than total, and target-metrics and search-term-metrics are stricter than the rest because limit/offset bound the response but not what ClickHouse scans. Going over returns a 400 naming the exact limit for your request.
"2026-07-01""^\\d{4}-\\d{2}-\\d{2}$"Both ends are included in the range. The window is capped, and the cap depends on the resource AND on granularity — daily allows a much shorter span than total, and target-metrics and search-term-metrics are stricter than the rest because limit/offset bound the response but not what ClickHouse scans. Going over returns a 400 naming the exact limit for your request.
"2026-07-31""^\\d{4}-\\d{2}-\\d{2}$""total""daily""total""total"100100110000009007199254740991"asc""desc""desc""desc"Responses
200