Post to a subreddit
post_to_redditSubmit a text, link, or image post to one subreddit after explicit user approval, preventing spam and account bans by enforcing community-specific content and flair requirements.
Instructions
Submit a post to ONE named subreddit as the user’s connected Reddit account — a text post, a link post, or a native image post (pass a Hermoso render URL as imageUrl). This PUBLISHES immediately and PUBLICLY under their username, so show the user the exact subreddit, title and body and get an explicit yes BEFORE calling. REDDIT IS NOT A BROADCAST CHANNEL: it punishes undisclosed self-promotion harder than any other platform, and posting the same or near-identical content to several subreddits breaks Reddit’s own developer policy and gets accounts banned. Post to ONE subreddit, written for that specific community — if the user asks to blast several, tell them this instead of doing it. Subreddits that require post flair are detected before anything is posted and the error lists the valid flairs to pass as flairId. Needs Reddit connected (Settings ▸ Connectors ▸ Reddit).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | the destination url for a link post | |
| hook | No | WHAT ANGLE THIS POST IS BUILT ON — the single most valuable field here, and the only moment it can ever be recorded. post_performance groups on it to answer "which hooks work", and it needs 5 posts sharing ONE hook before it will call anything a winner, so REUSE THE SAME WORDING across a campaign instead of rephrasing it every time. Best of all, pass a hook id from list_hooks (e.g. "direct_callout", "mid_problem", "before_after") — those fold onto a stable key however they are spelled, so a whole brand accumulates evidence on one row. Your own wording is fine too; it just only groups when you repeat it exactly. Omitting it means this post can never vote on which hook works. | |
| kind | No | "self" = text post (default), "link" = share a url, "image" = native image upload. Inferred from what you pass if omitted. | |
| nsfw | No | ||
| text | No | body markdown for a text post | |
| title | Yes | post title, max 300 characters | |
| flairId | No | flair template id — required by some subreddits; the error names the valid ones | |
| spoiler | No | ||
| subject | No | WHAT THIS POST IS ABOUT — the product, feature, offer or theme (e.g. "winter coat", "free trial", "founder story"). The second grouping axis in post_performance. Same rule as hook: reuse the exact wording so posts about one subject land in one group. | |
| imageUrl | No | a Hermoso render image URL for a native image post (or an upload_file url) | |
| resubmit | No | post a link Reddit says was already submitted — usually reads as spam, so confirm first | |
| flairText | No | flair text, only where that flair is editable | |
| subreddit | Yes | the ONE subreddit to post to, e.g. "SideProject" (an r/ prefix is fine) |