Action Reference
Every platform action the relay can run, with its transport and payload fields.
Every action below is an endpoint:
POST /twin/sessions/{persona}/actions/{platform}/{action}Send the payload fields as a JSON object. Fields marked ? are optional; an
empty payload is {}. See Running Platform Actions
for the request and response shape, and Routing for
what transport means and when you can override it.
Kind is read or write. Writes consume a write slot and are subject to
your account's allowance, daily caps, and cooldowns; reads are not.
Some actions enforce cross-field rules the table cannot show. A row whose fields all read optional may still reject an otherwise reasonable payload, so check the 400 message. Known cases:
| Action | Rule |
|---|---|
linkedin/activity, linkedin/enrich | exactly one of target or targets |
*/feed-engage | exactly one of authors or keywords (Instagram requires authors) |
reddit/submit | exactly one of text, url, or mediaRefs |
linkedin/salesnav-save-search | keywords or a facet |
| Action | Kind | Transport | Payload |
|---|---|---|---|
activity | read | wab | target?, type?, count?, targets? |
analytics | read | cookies | target |
comment-reactors | read | cookies | commentUrn, count?, all? |
comment | write | wab | target, text, dryRun? |
comments | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
company | read | cookies | target |
connect | write | wab | target, message? |
connection-status | read | cookies | targets |
connections | read | cookies | none |
conversations | read | cookies | none |
delete-comment | write | wab | target |
delete-post | write | wab | target |
edit-comment | write | wab | target, commentId, text, dryRun? |
edit-post | write | wab | target, text |
engage-commenters | write | wab | post, actions?, replyText?, connectNote?, maxCommenters?, durationMs?, dryRun? |
enrich-engagers | read | cookies | activityId, reactions?, comments?, maxProfiles?, companyDetail?, profileSource? |
enrich | read | cookies | target?, via?, targets? |
feed-engage | write | wab | authors?, keywords?, subreddits?, reply?, replyStyle?, personaReply?, relevanceThreshold?, relevancePrompt?, maxReply?, perDayCap?, maxScan?, dryRun?, durationMs?, maxEngage, reactions?, expandPosts?, engageComments?, engageCommentsFrom?, maxCommentEngage?, navigate?, scrollMode?, scanIntervalMs? |
follow | write | wab | target |
inmail-credits | read | cookies | none |
inmail | write | wab | target, subject, message, yesConsumeCredit?, dryRun? |
invitations | read | cookies | none |
like | write | wab | target, reaction?, comment? |
me | read | cookies | none |
messages | read | cookies | target |
mute | write | wab | target |
notifications | read | cookies | none |
post-details | read | cookies | target |
post | write | wab | text, visibility?, mediaRefs? |
posts | read | cookies | target, count?, comments? |
profile | read | cookies | target |
react | write | wab | activityId, reactionType? |
reactions | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
reply-comment | write | wab | target, commentId, text, dryRun? |
salesnav-alerts | read | cookies | none |
salesnav-connect | write | wab | urn, expectName, note?, send? |
salesnav-create-list | write | wab | name, description? |
salesnav-delete-list | write | wab | id |
salesnav-delete-saved-search | write | wab | id |
salesnav-facets | read | cookies | type?, query? |
salesnav-insights | read | cookies | urn |
salesnav-list-add | write | wab | listId, urn |
salesnav-list-remove | write | wab | listId, urn |
salesnav-lists | read | wab | none |
salesnav-message | write | wab | urn, text, expectName, subject?, send? |
salesnav-notifications | read | cookies | count? |
salesnav-personas | read | cookies | none |
salesnav-profile | read | wab | urns |
salesnav-recent | read | cookies | none |
salesnav-recommended-companies | read | cookies | count?, all?, maxPages?, delayMs? |
salesnav-recommended-leads | read | cookies | count?, all?, maxPages?, delayMs? |
salesnav-save-lead | write | wab | urn, unsave? |
salesnav-save-search | write | wab | name, keywords?, seniority?, region?, industry?, company?, function?, connectionOf?, title?, pastTitle?, pastCompany?, school?, yearsOfExperience? |
salesnav-saved-searches | read | cookies | none |
salesnav-search | read | wab | keywords?, seniority?, region?, industry?, company?, function?, connectionOf?, title?, pastTitle?, pastCompany?, school?, yearsOfExperience?, count?, maxPages?, delayMs? |
salesnav-spotlights | read | cookies | list?, limit?, changedWithinDays?, postedWithinDays? |
salesnav-typeahead | read | cookies | query |
salesnav-warm-intro | read | cookies | urn, count? |
saves | read | cookies | none |
search-posts | read | wab | query, maxPosts?, minReactions?, excludeCompanyPages?, sort?, dateRange?, withAuthorProfile? |
search | read | cookies | query, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
send-message | write | wab | target, message, participantName?, dryRun? |
sent-invitations | read | cookies | none |
unlike | write | wab | target, reaction?, comment? |
visit | write | wab | target, dwellMs?, noScroll? |
X
| Action | Kind | Transport | Payload |
|---|---|---|---|
analytics | read | cookies | tweetId, count?, cursor? |
bookmark | write | wab | tweetId |
bookmarks | read | cookies | none |
delete | write | wab | tweetId |
dm-inbox | read | cookies | count? |
dm-read | read | cookies | conversationId, count? |
dm-requests | read | cookies | count? |
feed-engage | write | wab | authors?, keywords?, subreddits?, reply?, replyStyle?, personaReply?, relevanceThreshold?, relevancePrompt?, maxReply?, perDayCap?, maxScan?, dryRun?, durationMs?, maxEngage, reactions?, expandPosts?, engageComments?, engageCommentsFrom?, maxCommentEngage?, navigate?, scrollMode?, scanIntervalMs? |
follow | write | wab | handle |
followers | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
following | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
home | read | cookies | following? |
like | write | wab | tweetId |
likes | read | cookies | target?, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
list-timeline | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
lists | read | cookies | handle?, memberOf? |
mentions | read | cookies | count? |
news | read | cookies | tab?, count? |
quote | write | wab | tweetId, text, mediaRefs? |
read | read | cookies | tweetId, count?, cursor? |
replies | read | cookies | tweetId, count?, cursor? |
reply | write | wab | tweetId, text, mediaRefs? |
retweet | write | wab | tweetId |
search | read | cookies | query, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
thread | read | cookies | tweetId, count?, cursor? |
tweet | write | wab | text, mediaRefs? |
unbookmark | write | wab | tweetId |
unfollow | write | wab | handle |
unlike | write | wab | tweetId |
unretweet | write | wab | tweetId |
user-tweets | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
user | read | cookies | target |
| Action | Kind | Transport | Payload |
|---|---|---|---|
analytics | read | cookies | target |
chat-accept-all | write | wab | delayMs? |
chat-accept | write | wab | conversationId |
chat-inbox | read | wab | count? |
chat-messages | read | wab | conversationId, count? |
chat-send | write | wab | conversationId, text, dryRun? |
chat-start | write | wab | username, text, dryRun? |
comment | write | wab | parentFullname, text, postId?, dryRun? |
comments | read | cookies | subreddit, count?, after?, sort?, time?, all?, maxPages?, delayMs? |
delete | write | wab | fullname, postId? |
feed-engage | write | wab | authors?, keywords?, subreddits?, reply?, replyStyle?, personaReply?, relevanceThreshold?, relevancePrompt?, maxReply?, perDayCap?, maxScan?, dryRun?, durationMs?, maxEngage, reactions?, expandPosts?, engageComments?, engageCommentsFrom?, maxCommentEngage?, navigate?, scrollMode?, scanIntervalMs? |
feed | read | cookies | subreddit, count?, after?, sort?, time?, all?, maxPages?, delayMs? |
home | read | cookies | target?, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
inbox | read | cookies | count?, after?, type?, unread? |
post | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
rules | read | cookies | target |
save | write | wab | fullname, postId? |
saved | read | cookies | target?, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
search | read | cookies | query, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
submit | write | wab | subreddit, title, text?, url?, mediaRefs?, flair?, dryRun? |
subreddit | read | cookies | target |
subscribe | write | wab | target |
trending | read | cookies | target?, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
unsave | write | wab | fullname, postId? |
user-comments | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
user-posts | read | cookies | target, count?, cursor?, after?, sort?, time?, all?, maxPages?, delayMs? |
user | read | cookies | target |
vote | write | wab | fullname, vote, postId? |
whoami | read | cookies | none |
| Action | Kind | Transport | Payload |
|---|---|---|---|
comment | write | wab | media, text |
comments | read | cookies | target |
feed-engage | write | wab | authors?, keywords?, subreddits?, reply?, replyStyle?, personaReply?, relevanceThreshold?, relevancePrompt?, maxReply?, perDayCap?, maxScan?, dryRun?, durationMs?, maxEngage, reactions?, expandPosts?, engageComments?, engageCommentsFrom?, maxCommentEngage?, navigate?, scrollMode?, scanIntervalMs? |
saved | read | cookies | none |
Actions that only run locally
A few verbs are deliberately absent from the API because they cannot run on hosted infrastructure:
| Action | Why |
|---|---|
x/dm-send | WAB-only; may also need an encrypted XChat passcode |
x/dm-accept | WAB-only; may also need an encrypted XChat passcode |
x/dm-start | WAB-only; may also need an encrypted XChat passcode |
Nested verbs need ?engine=cloud while your relay is online
Actions whose command nests a sub-verb - x/dm-*, reddit/chat-*, and
linkedin/salesnav-* - are rejected by the local relay's argv check, which
requires the second command token to equal the action name.
There is no automatic fallback from that. The API only reroutes to the
hosted twin when the relay is lost; a rejection is an error response, so the
call fails outright. With an online relay under the default auto policy,
these actions therefore require an explicit pin:
POST /twin/sessions/{persona}/actions/x/dm-inbox?engine=cloudWithout the pin they fail while your machine is online and succeed while it is off, which is a confusing failure to debug. A relay carrying the argv fix removes the need for the pin, but only once that build is installed.
These run through the local CLI or the local MCP server instead.
The passcode is set with wonda x dm passcode set, which is terminal-only by
design - the secret never leaves your machine, so there is nothing for the API
to forward. It is loaded only when X actually presents its encrypted-XChat
gate, so an account without that gate can send DMs without one; the writes stay
local because the transport is WAB, not because every account needs a
passcode.
The DM reads (x/dm-inbox, x/dm-read, x/dm-requests) are available
over the API like any other read.