Automations
An automation watches an account’s comments and, when someone writes a keyword, answers them for you: with a private message (Instagram and Facebook), in public, or both. Whoever comments “price” gets the link within seconds, even at 3 a.m.
Create one
Section titled “Create one”curl -X POST "https://api.usecrier.com/v1/automations" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "accountId": "acc_3k9x2m", "name": "Pricing link", "keywords": [ "price", "info" ], "matchMode": "word", "dmMessage": "Hi! Here are our prices 👇", "buttons": [ { "type": "url", "title": "See prices", "url": "https://acme.com/pricing" } ], "commentReply": "We just sent it to you privately!" }'const res = await fetch('https://api.usecrier.com/v1/automations', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "accountId": "acc_3k9x2m", "name": "Pricing link", "keywords": [ "price", "info" ], "matchMode": "word", "dmMessage": "Hi! Here are our prices 👇", "buttons": [ { "type": "url", "title": "See prices", "url": "https://acme.com/pricing" } ], "commentReply": "We just sent it to you privately!" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/automations", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "accountId": "acc_3k9x2m", "name": "Pricing link", "keywords": [ "price", "info" ], "matchMode": "word", "dmMessage": "Hi! Here are our prices 👇", "buttons": [ { "type": "url", "title": "See prices", "url": "https://acme.com/pricing" } ], "commentReply": "We just sent it to you privately!" },)data = res.json()["data"]What each network allows
Section titled “What each network allows”| Network | Private message | Public reply |
|---|---|---|
| Yes, and story replies | Yes | |
| Yes | Yes | |
| TikTok, Threads, LinkedIn and YouTube | No | Yes (required) |
keywords: the words that trigger it. Empty: any comment.matchMode:contains(contains the word, also inside others),word(the word on its own) orexact(the whole comment).postId: only on one Crier post. For one published outside Crier,inboxPostId(its inbox id). With neither, it watches them all.dmMessageandbuttons: the private message and, optionally, link buttons.commentReply: the public reply under the comment.repeat:oncesends one message per person;every_comment, one per comment.trigger: "story_reply"(Instagram): answers whoever replies to a story by private message, instead of comments.likeCommentandhideComment: also like the comment or hide it.
See what it did
Section titled “See what it did”Each automation carries its counters in stats (triggers, messages sent and failed, clicks), and its log says which comment triggered it and whether the message arrived:
curl "https://api.usecrier.com/v1/automations/aut_6r3e9w/logs" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/automations/aut_6r3e9w/logs', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/automations/aut_6r3e9w/logs", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]To pause it, PATCH with active: false; to delete it, DELETE.
© 2026 Crier by TWOFACES ·usecrier.com ·Dashboard ·soporte@twofacesco.com