Skip to content

Make a rule: its campaigns, subject, conditions, window, interval, action and limits. It runs dry, recording what it would do, unless status says active or paused

POST
/v1/buyer/automation/rules
curl --request POST \
--url https://example.com/v1/buyer/automation/rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "action": "block_placement", "campaign_ids": [ 1 ], "change": { "ceiling": { "amount": { "amount_micros": 1, "currency": "example" }, "factor_ppm": 1 }, "floor": { "amount": { "amount_micros": 1, "currency": "example" }, "factor_ppm": 1 }, "max_step_bps": 1, "step": { "amount": { "amount": { "amount_micros": 1, "currency": "example" }, "factor_ppm": 1 }, "kind": "up_percent", "measure": "visits", "percent_bps": 1, "share_bps": 1 }, "target": { "confidence_bps": 1, "cpa": { "amount_micros": 1, "currency": "example" }, "epc_share_bps": 1, "kind": "cpa", "lower_only": true, "roi_ppm": 1 }, "unit": "cpc" }, "conditions": [ { "comparison": "less", "measure": "visits", "money": { "amount_micros": 1, "currency": "example" }, "value": 1 } ], "email_actions": true, "interval_seconds": 1, "lag_seconds": 1, "limits": { "cooldown_seconds": 1, "per_day": 1, "per_run": 1 }, "min_visits": 1, "name": "example", "run_dates": { "from": "2026-04-15T12:00:00Z", "to": "2026-04-15T12:00:00Z" }, "run_hours": { "hours": [ 1 ], "time_zone": "example" }, "status": "active", "subject": "placement", "window_seconds": 1 }'

Who: a workspace’s buyer, or its key. API keys with the buyer:write scope.

Idempotency-Key
string
<= 64 characters

Made once per action and sent again on every retry of it, so the service acts once: the request_id of the create or money-moving call; a new one when left out

Media typeapplication/json
object
action
string | null
Allowed values: block_placement pause_path pause_campaign warn pause_source_campaign pause_source_ad_group pause_source_ad set_bid set_budget
campaign_ids
Array<integer> | null
change
Any of:
object
ceiling
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
floor
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
max_step_bps
integer format: int32
step
Any of:
object
amount
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
kind
required
string
Allowed values: up_percent down_percent up_amount down_amount to_amount to_share
measure
string | null
Allowed values: visits unique_visits clicks ctr conversions cr revenue pending_revenue cost profit roi epv epc cpv cpa bot_share automation_score impressions ictr cpm
percent_bps
integer format: int32
share_bps
integer format: int32
target
Any of:
object
confidence_bps
integer format: int32
cpa
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
epc_share_bps
integer | null format: int32
kind
required
string
Allowed values: cpa roi epc
lower_only
boolean
roi_ppm
integer | null format: int64
unit
required
string
Allowed values: cpc cpm cpv cpa factor daily
conditions
Array<object> | null
object
comparison
required
string
Allowed values: less less_or_equal equal greater_or_equal greater
measure
required
string
Allowed values: visits unique_visits clicks ctr conversions cr revenue pending_revenue cost profit roi epv epc cpv cpa bot_share automation_score impressions ictr cpm
money
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
value
integer | null format: int64
email_actions
boolean | null
interval_seconds
integer | null format: int64
lag_seconds
integer | null format: int64
limits
Any of:
object
cooldown_seconds
integer | null format: int64
per_day
integer format: int32
per_run
integer format: int32
min_visits
integer | null format: int64
name
string | null
run_dates
Any of:
object
from
required
string | null format: date-time
to
required
string | null format: date-time
run_hours
Any of:
object
hours
required
Array<integer>
time_zone
string
status
string | null
Allowed values: active dry_run paused archived
subject
string | null
Allowed values: placement path campaign source_campaign source_ad_group source_ad
window_seconds
integer | null format: int64

Created

Media typeapplication/json
object
action
required
string | null
Allowed values: block_placement pause_path pause_campaign warn pause_source_campaign pause_source_ad_group pause_source_ad set_bid set_budget
campaign_ids
required
Array<integer>
change
required
Any of:
object
ceiling
required
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
floor
required
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
max_step_bps
required
integer format: int32
step
required
Any of:
object
amount
required
Any of:
object
amount
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
factor_ppm
required
integer | null format: int64
kind
required
string | null
Allowed values: up_percent down_percent up_amount down_amount to_amount to_share
measure
required
string | null
Allowed values: visits unique_visits clicks ctr conversions cr revenue pending_revenue cost profit roi epv epc cpv cpa bot_share automation_score impressions ictr cpm
percent_bps
required
integer format: int32
share_bps
required
integer format: int32
target
required
Any of:
object
confidence_bps
required
integer format: int32
cpa
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
epc_share_bps
required
integer | null format: int32
kind
required
string | null
Allowed values: cpa roi epc
lower_only
required
boolean
roi_ppm
required
integer | null format: int64
unit
required
string | null
Allowed values: cpc cpm cpv cpa factor daily
conditions
required
Array<object>
object
comparison
required
string | null
Allowed values: less less_or_equal equal greater_or_equal greater
measure
required
string | null
Allowed values: visits unique_visits clicks ctr conversions cr revenue pending_revenue cost profit roi epv epc cpv cpa bot_share automation_score impressions ictr cpm
money
required
Any of:
object
amount_micros
required
integer format: int64
currency
required
string
value
required
integer | null format: int64
connection
required
Any of:
object
id
required
integer format: int64
name
string
created_at
required
string format: date-time
created_by
required
Any of:
object
account
string
id
string
kind
required
string | null
Allowed values: user api_key service system postback rule tuner schedule
name
string
email_actions
required
boolean
id
required
integer format: int64
interval_seconds
required
integer format: int64
lag_seconds
required
integer format: int64
last_run_at
required
string | null format: date-time
last_run_status
required
string | null
Allowed values: running succeeded failed
limits
required
object
cooldown_seconds
required
integer format: int64
per_day
required
integer format: int32
per_run
required
integer format: int32
min_visits
required
integer format: int64
name
required
string
next_run_at
required
string | null format: date-time
raises_approved_at
required
string | null format: date-time
raises_approved_by
required
Any of:
object
account
string
id
string
kind
required
string | null
Allowed values: user api_key service system postback rule tuner schedule
name
string
run_dates
required
Any of:
object
from
required
string format: date-time
to
required
string format: date-time
run_hours
required
Any of:
object
hours
required
Array<integer>
time_zone
required
string
sequence
required
integer format: int64
status
required
string | null
Allowed values: active dry_run paused archived
subject
required
string | null
Allowed values: placement path campaign source_campaign source_ad_group source_ad
updated_at
required
string format: date-time
updated_by
required
Any of:
object
account
string
id
string
kind
required
string | null
Allowed values: user api_key service system postback rule tuner schedule
name
string
warnings
required
Array<string | null>
Allowed values: visits_only no_spend_report
window_seconds
required
integer format: int64
workspace_id
required
integer format: int64

Example

{
"action": "block_placement",
"change": {
"step": {
"kind": "up_percent",
"measure": "visits"
},
"target": {
"kind": "cpa"
},
"unit": "cpc"
},
"conditions": [
{
"comparison": "less",
"measure": "visits"
}
],
"created_by": {
"kind": "user"
},
"last_run_status": "running",
"raises_approved_by": {
"kind": "user"
},
"status": "active",
"subject": "placement",
"updated_by": {
"kind": "user"
},
"warnings": [
"visits_only"
]
}

An error, as go-commons apperr maps it

Media typeapplication/json
object
error
required
object
code
required
string
fields
object
key
additional properties
string
message
required
string

Example generated

{
"error": {
"code": "example",
"fields": {
"additionalProperty": "example"
},
"message": "example"
}
}