Skip to main content
PATCH
Update an automation

Authorizations

Authorization
string
header
required

An API key from Settings → API keys in the inDM app, sent as Authorization: Bearer indm_.... Keys belong to one workspace and carry a scope: read for GET routes and the validate dry run, full for everything. Keep keys on your server; never ship one to a browser or a mobile app.

Path Parameters

automation_id
string<uuid>
required

The automation id from List automations.

Body

application/json

The fields to change. Anything you leave out stays as it is. "" removes an optional text field. keywords and links replace the whole list.

name
string

A short name for your own list in inDM.

Example:

"Spring guide reel"

keywords
string[]

The words that trigger it. Case-insensitive, so GUIDE also matches guide. A keyword belongs to one automation. Up to 20.

Required array length: 1 - 20 elements
Example:
dm_message
string

The direct message the fan receives, carrying the link. Write it in the language your audience reads; an automation sends in whatever language its copy is in. With an opener set, this becomes the second message. Up to 1,000 characters.

Maximum string length: 1000
Example:

"Here's the spring planting guide. Enjoy it."

button_label
string

The opt-in button's label. Up to 20 characters.

Maximum string length: 20
Example:

"Send me the guide"

public_reply
string

A public reply posted under the fan's comment. Up to 2,200 characters.

Maximum string length: 2200
Example:

"Sent it to your DMs."

The one link the DM delivers. Starts with https:// or http://. For more than one link, use links instead.

Example:

"https://example.com/spring-guide"

The label on the link's button. Up to 20 characters.

Maximum string length: 20
Example:

"Open the guide"

Two or three links, in the order the fan sees them, instead of link_url. One message carries at most three links; that ceiling is Instagram's. How many a workspace can attach depends on its plan.

Maximum array length: 3
opener_message
string

An opt-in message sent first. When set, dm_message becomes the second message and the fan receives it only after they reply. You don't need an opener to deliver a link: the one private reply a comment earns can carry the link on its own. An opener makes the link follow a yes, and the fan's reply opens the 24-hour window for anything sent after it. Up to 1,000 characters.

Maximum string length: 1000
opener_plain_text
boolean

Send the opener as plain text with no button, so any reply counts as the opt-in. Only meaningful with opener_message.

follow_gate
boolean

Ask the fan to follow the account before the link arrives. Needs a link. After four asks the link is delivered anyway.

follow_gate_message
string

Your own words for the follow ask, in place of inDM's. Needs follow_gate.

follow_gate_visit_label
string

The label on the button that opens your profile. Up to 20 characters. Needs follow_gate.

Maximum string length: 20
follow_gate_following_label
string

The label on the button a fan taps once they follow. Up to 20 characters. Needs follow_gate.

Maximum string length: 20
email_gate
boolean

Ask the fan for an email address before the link arrives. Needs a link.

email_gate_message
string

Your own words for the email ask, in place of inDM's. Needs email_gate.

followup_message
string

A second message sent later, to everyone who received the first one. It can't be held back from people who already tapped the link. It needs something that opens the 24-hour window first, so an opener_message, follow_gate or email_gate. Whether it sends depends on the workspace's plan. Up to 1,000 characters.

Maximum string length: 1000
followup_delay_minutes
integer

How long after the first message the follow-up goes out, from 30 minutes to 20 hours (1,200 minutes). The ceiling is Instagram's 24-hour window minus headroom. Required with followup_message.

Required range: 30 <= x <= 1200

Response

The automation as saved.

The automation as saved, and anything that was adjusted on the way in.

id
string<uuid>
required
Example:

"9a4b1c7e-2d3f-4a5b-8c6d-1e2f3a4b5c6d"

name
string
required
Example:

"Spring guide reel"

status
enum<string>
required
Available options:
draft,
live,
paused
Example:

"live"

trigger
string
required

What fires it, such as comment.

Example:

"comment"

binding
string
required

How it is attached to content: specific for one post, next for the next post the account publishes, any for every post.

Example:

"specific"

account_id
string<uuid>
required
Example:

"6f1c2a9e-3b7d-4e21-9a55-0c8d2f4b7e10"

keywords
string[]
required

The words that trigger it, as stored.

Example:
dm_sent_count
integer
required

DMs this automation has sent since it was created.

Example:

182

created_at
string<date-time>
required
Example:

"2026-11-05T09:02:11Z"

updated_at
string<date-time>
required
Example:

"2026-11-05T09:04:30Z"

dm_message
string
required

The message carrying the link. With an opener, this is the second message.

Example:

"Here's the spring planting guide. Enjoy it."

button_label
string
required

The opt-in button's label.

Example:

"Send me the guide"

public_replies
string[]
required

The public replies inDM posts under a fan's comment, one per comment. Empty when there are none.

Example:

The links the DM delivers, in the order the fan sees them. Empty when there are none.

opener_message
string
required

The opt-in message sent first. Empty when there is no opener.

Example:

""

opener_plain_text
boolean
required

Whether the opener is sent as plain text with no button.

Example:

false

follow_gate
boolean
required

Whether the fan is asked to follow before the link arrives.

Example:

false

email_gate
boolean
required

Whether the fan is asked for an email address before the link arrives.

Example:

false

follow_gate_message
string
required

Your own words for the follow ask. Empty when inDM's wording is used.

Example:

""

follow_gate_visit_label
string
required

The label on the button that opens your profile. Empty for inDM's.

Example:

""

follow_gate_following_label
string
required

The label on the button a fan taps once they follow. Empty for inDM's.

Example:

""

email_gate_message
string
required

Your own words for the email ask. Empty when inDM's wording is used.

Example:

""

followup_message
string
required

The second message sent later. Empty when there is no follow-up.

Example:

""

followup_delay_minutes
integer
required

How long after the first message the follow-up goes out. 0 when there is no follow-up.

Example:

0

caveats
object[]
required

Anything about the saved automation that differs from the request, or that is worth knowing before it goes live. Empty when there is nothing to add.

media_id
string<uuid>

The post it is attached to. Present when binding is specific.

Example:

"3d2a7f10-9c4e-4b8a-a1f2-6e0b5d7c9a31"