Skip to main content
PATCH
Update a Replier automation

Authorizations

Authorization
string
header
required

A Replier API key (rpl_...).

Headers

Idempotency-Key
string

Send the same key when you retry, and the request runs once. Without one, every request runs.

Required string length: 1 - 128

Path Parameters

workspace_id
string<uuid>
required

Workspace ID returned by GET /v1/workspaces

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
automation_id
string<uuid>
required

Automation ID returned by GET /v1/workspaces/{workspace_id}/automations or GET /v1/workspaces/{workspace_id}/automations/{automation_id}

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Body

application/json
name
string
Required string length: 1 - 80
enabled
boolean
keywords
string[]

Replaces the keyword list. A comment, story reply or message triggers the automation when its text contains any keyword, ignoring letter case and full-width versus half-width forms (+1 and +1 are the same keyword), including inside longer words. An empty list matches any of them. Before saving, add the other ways people are likely to type each keyword, as the Replier editor's keyword suggestions do: spacing and hyphen variants (bitplay, bit play, bit-play), common typos, the whole word in the other Chinese script (連結, 连结; never mixed). Only spellings of the same word: no synonyms or translations. Leave out a variant that contains a keyword (it already matches) or that also matches comments meaning something else (lik is inside like).

Minimum string length: 1
public_reply_enabled
boolean
public_replies
string[]

Replaces all public replies. Leave out to keep the current ones.

Required array length: 1 - 5 elements
Required string length: 1 - 300
public_reply_selection
enum<string>
Available options:
random,
round_robin
dm_message
string

DM text sent to the commenter. Required unless flow is provided or a photo is sent with dm_image_display "photo" and no buttons; when flow is set, the entry ("dm") node's message is used. With a card photo it is the card title (1–80 characters). {{name}} becomes the recipient's name and {{username}} their Instagram username; each falls back to the other when Meta doesn't share it and counts as 30 characters toward the limit.

dm_image_id
string<uuid> | null

Uploaded photo ID; null removes the current photo.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
dm_image_display
enum<string>

"card" or "photo" for dm_image_id, or for the current photo when dm_image_id is left out, as dm_image_display in POST /v1/workspaces/{workspace_id}/automations describes. Leave out to keep the saved display.

Available options:
card,
photo
follow_gate_enabled
boolean
follow_gate_message
string
Minimum string length: 1
follow_gate_button_text
string
Required string length: 1 - 20
follow_gate_retry_message
string
Minimum string length: 1
follow_gate_retry_button_text
string
Required string length: 1 - 20
follow_gate_profile_button_enabled
boolean

Show or hide the button that opens the Instagram account's profile above the follow confirmation button. When turning it on, also pass follow_gate_profile_button_text in the follow prompt's language unless the automation already has a label (its follow_gate_profile_button_text is not null).

follow_gate_profile_button_text
string

Write it in the follow prompt's language. Leave out to keep the current label.

Required string length: 1 - 20
gates
object

Opening and email gates. Runs go trigger, public reply, opening message, Follow Gate, email request, then the DM; a run waiting on a gate is gated. Omitted text keeps the gate's current text, then uses the default you saved in this workspace (GET /v1/workspaces/{workspace_id}/message-defaults); with neither, provide the text. On update, a gate left out stays as it is, and the update fails with AUTOMATION_VERSION_CONFLICT if the automation changed since it was read.

follow_up
object | null

Follow-up message, sent once inside the 24 hours the opening tap opens, so it needs gates.opening and is not available with flow. With link buttons: not_clicked goes wait_hours after the DM to whoever tapped no link button by then; clicked goes delay_minutes after the first link tap, when that tap came within wait_hours. Without link buttons only not_clicked is used, wait_hours after the DM, for everyone (links in dm_message are not tracked). Any message or tap from the person, or a newer DM to them, cancels a waiting follow-up. A send that would land in the window's last 5 minutes is skipped. Each message takes text, up to 3 link buttons (not click-tracked) and a photo, as dm_message, buttons and dm_image_id do; each branch keeps its content while off. null turns it off.

buttons
object[]

Replaces all buttons, links and reply buttons alike; [] removes them. Preserve returned button IDs when editing.

Maximum array length: 3
targets
object[]

Replaces the target list. Keep existing targets by passing {id}; omitted targets are removed.

Required array length: 1 - 24 elements
move_targets
boolean

true takes each post that another automation has as its target off that automation in the same save, as the dashboard's Move does; that automation keeps its other targets and may be left with none. Only posts move; other conflicts still refuse. The result's moved_from names each one.

flow
object

Replaces the complete flow; use a "dm" entry node. Requires expected_version. Accepts image objects returned by GET /v1/workspaces/{workspace_id}/automations/{automation_id}; image_id overrides image, and image_id: null removes the photo. Leaving out keyword_routes keeps the current branches; pass keyword_routes: [] to remove them. Omit top-level DM fields when setting flow.

expected_version
integer

Current automation.version returned by GET /v1/workspaces/{workspace_id}/automations/{automation_id}; rejects stale updates when provided, and is required when replacing flow.

Required range: x <= 9007199254740991

Response

OK

workspace
object
required
automation
object
required
moved_from
object[]

Each post move_targets took off another automation, and which one.