Reddit

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

Reddit has no concept of a “post to your own profile” without a target — you publish into a subreddit. Set 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 a url (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

PropertyValue
Title300 characters (required; truncated if longer)
Self-post body~40,000 characters
Images1 image per post (media-asset lease upload)
First comment / threadYes — native comments
Rate limit~60 requests / minute per account (handled by the pipeline)
Token lifetimeAccess token ~1h; a permanent refresh token is issued at connect

Configuration fields

Set under config.reddit:

FieldTypeRequiredNotes
subredditstringYesThe target subreddit, without the r/ prefix (e.g. webdev).
titlestringNoPost title, ≤300 characters. Falls back to the container content.
kindstringNoOne of self, link, image. Auto-detected from the content/media when omitted.
urlstringLink onlyThe destination URL for a link post. Defaults to the first link in the content.
flair_idstringNoA post flair id for subreddits that require/allow flair.
nsfwbooleanNoMark the post NSFW.
spoilerbooleanNoMark the post as a spoiler.
send_repliesbooleanNoWhether reply notifications are enabled (default true).

Required scopes

Configure scopes on the BYOK network record. When none are set, PostFuze requests:

  • identity
  • submit
  • read
  • flair
  • history

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
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-…"
      }
    }
  }'
201 Created
{
	"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.