Publish text (self), link and image posts to a subreddit through the official Reddit API. The platform id is reddit. Every Reddit post requires a title and a target subreddit; the container content becomes the self-post body (or supplies the link when the post is a link post). First-comment and thread containers are posted as native comments chained under the submission.
A subreddit and a title are required
config.reddit.subreddit (the name without the r/ prefix) and, optionally, an explicit title. When no title is given, PostFuze uses the start of the container content (Reddit caps titles at 300 characters). A request without a subreddit is rejected with a 422 before publishing.Supported content
- Self (text) post — the default; the container content becomes the post body.
- Link post — set
config.reddit.kind = "link"and aurl(or include a link in the content). - Image post — attach one image to the main container; PostFuze uploads it through Reddit’s media-asset lease.
- First comment / thread — reply containers are posted as native comments under the submission.
Limits
| Property | Value |
|---|---|
| Title | 300 characters (required; truncated if longer) |
| Self-post body | ~40,000 characters |
| Images | 1 image per post (media-asset lease upload) |
| First comment / thread | Yes — native comments |
| Rate limit | ~60 requests / minute per account (handled by the pipeline) |
| Token lifetime | Access token ~1h; a permanent refresh token is issued at connect |
Configuration fields
Set under config.reddit:
| Field | Type | Required | Notes |
|---|---|---|---|
subreddit | string | Yes | The target subreddit, without the r/ prefix (e.g. webdev). |
title | string | No | Post title, ≤300 characters. Falls back to the container content. |
kind | string | No | One of self, link, image. Auto-detected from the content/media when omitted. |
url | string | Link only | The destination URL for a link post. Defaults to the first link in the content. |
flair_id | string | No | A post flair id for subreddits that require/allow flair. |
nsfw | boolean | No | Mark the post NSFW. |
spoiler | boolean | No | Mark the post as a spoiler. |
send_replies | boolean | No | Whether reply notifications are enabled (default true). |
Required scopes
Configure scopes on the BYOK network record. When none are set, PostFuze requests:
identitysubmitreadflairhistory
PostFuze requests duration=permanent at connect so a refresh token is issued — Reddit access tokens expire in about an hour, and the pipeline refreshes them automatically.
Connecting an account
Create an app at reddit.com/prefs/apps (choose the web app type) and set its redirect URI to your PostFuze callback. The Client ID is the string shown under the app name; the Client Secret is the secret field. Register them with POST /social-networks, then start the hosted OAuth flow.
Create a post
A self (text) post to a subreddit, with an explicit title and a first comment:
curl https://api.postfuze.com/api/v1/posts \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{
"accounts": ["acct_reddit_01"],
"containers": [
{ "content": "We just shipped a unified social API — one POST publishes to 11 networks. AMA!" },
{ "content": "Docs and a free tier are in the first comment 👇", "role": "first_comment" }
],
"config": {
"reddit": {
"subreddit": "webdev",
"title": "Built a unified social-posting API (11 networks, one call)",
"flair_id": "0a1b2c3d-…"
}
}
}'{
"id": "post_rd01",
"status": "queued",
"default_config": {
"reddit": { "subreddit": "webdev", "title": "Built a unified social-posting API (11 networks, one call)", "flair_id": "0a1b2c3d-…" }
},
"containers": [
{ "id": "ctr_r1", "position": 0, "role": "main", "content": "We just shipped a unified social API — one POST publishes to 11 networks. AMA!" },
{ "id": "ctr_r2", "position": 1, "role": "first_comment", "content": "Docs and a free tier are in the first comment 👇" }
],
"targets": [
{ "id": "tgt_rd1", "social_account_id": "acct_reddit_01", "platform": "reddit", "status": "queued", "platform_post_id": null }
]
}If subreddit is missing the target fails fast with a 422 rather than being queued. See Posts for how per-target errors surface in error_code / error_message.