Superpowers
Attach engagement automation — auto-replies, DMs, auto-likes, raffles — per channel.
A superpower is engagement automation attached to a post per channel, at
channels[<id>].superpower. Once the post is live it can auto-reply to comments, send
DMs, auto-like, run raffles and giveaways, and more. It's the most complex part of the
payload.
A superpower only acts on a live post when a real comment arrives via the
platform webhook. Creating or scheduling a post does not trigger any replies. The
engine also re-mints id / groupId on publish, so you don't supply them.
Two ways to attach
Option A — reference a saved superpower (recommended)
Reference a superpower (or template) that was authored and validated in the app, by its
creativeTemplateId from GET /superpowers:
"superpower": { "creativeTemplateId": "<id from GET /superpowers>" }When you reference one, the inline field requirements below are not enforced — it was already validated. This is the recommended path for anything non-trivial.
Option B — build one inline
Provide the full object yourself. Minimum viable inline superpower (auto-reply to every comment):
"superpower": {
"name": "My SP",
"hashtag": "myuniquehashtag",
"active": true,
"templateType": "CONDITIONAL",
"conditionalTemplateType": "GENERAL",
"conditionGroups": [
{
"name": "All comments",
"conditions": [
{ "conditionType": "USER_ACTION", "userActionType": "COMMENTED", "values": ["any"] }
],
"publicReplies": [
{ "scope": "PUBLIC", "text": "Thanks for commenting, @[mention_user]!" }
],
"autoLike": true,
"autoLikeProbability": 1,
"probability": 1,
"publicRepliesProbability": 1
}
]
}The inline object model
A superpower is a tree: conditionGroups → conditions (what to match) →
replies (what to do).
Condition groups
Each group in conditionGroups[] matches some comments and reacts to them:
conditions— matching rules (see below). Empty or absent matches everything — aGENERALcatch-all.publicReplies— comment replies.privateReplies— DMs.autoLike— auto-like matching comments.autoLikeProbability,probability,publicRepliesProbability— each 0..1. Set to1for deterministic behavior.usersLimit,timeLimit,timeLimitUnit(HOUR|MINUTE) — optional caps.
Conditions
Each entry in conditions[]:
conditionType— required (usuallyUSER_ACTION).userActionType— required whenconditionTypeisUSER_ACTION.values— required and non-empty forCOMMENT_CONTAINSandMENTION_FRIENDS.COMMENTEDis the catch-all and needs no values.
Replies (type-aware)
A reply has a scope and a payload.
- Public replies (
scope: "PUBLIC") are plain comment replies — justtext. - Private replies (DMs) must declare a
broadcastMessageType, and the payload must match it:
broadcastMessageType | Required payload |
|---|---|
REGULAR | text (and/or media). |
INTERACTIVE / WINDOW_OPENING_INTERACTION | redirects — ≥1 button, each with a title (text / description). |
CAROUSEL | carouselItems — ≥2. |
COUPON | media + text + couponCode + a button with text and a valid url. |
OFFER | text / media. |
A button (an entry in redirects) looks like:
{ "text": "Get 10% off ⚡", "url": "https://example.com" }Per-template requirements
conditionalTemplateType drives extra validation:
RAFFLE— needs the fullraffleblock (winnersLimit,startDate,endDate,endedComment,winnersPrivateReply).RAPID_RAFFLE— needsglobalUsersLimit > 0andglobalTimeLimit > 0.VOTE— needsglobalTimeLimit > 0.
Incomplete per-type config returns 422.
"raffle": {
"winnersLimit": 1,
"startDate": "2026-06-01",
"endDate": "2026-06-10",
"endedComment": { "text": "Raffle ended!" },
"winnersPrivateReply": { "scope": "PRIVATE", "text": "You won!", "broadcastMessageType": "REGULAR" }
}Validation highlights
nameis required;hashtagis required, ≥3 characters, and unique within the org — a collision (or two channels reusing the same hashtag in one request) returns409.- All enums are validated; probabilities must be
0..1. - Replies must match their
broadcastMessageType(see the table above). - Unknown extra fields are tolerated (forward-compatible) — except at the channel level, where typos are rejected.
See GET /superpowers and
POST /scheduled-posts.