Skip to content
reelspanDocs

Networks

Post to Reddit

Submit video, image and text posts to a subreddit through the API, with a title, flair, NSFW and spoiler tags, and list the account's posts with their scores.

GETapi.reelspan.com/v1/reddit/postsTry it →

Reelspan submits posts to Reddit with Reddit's API, as the account you connect. You name the subreddit; Reelspan uploads the media to Reddit, submits the post and returns its link.

What you can post

Post How Notes
Text post POST /v1/posts/text A title and a body
Image post POST /v1/posts/photos One image
Video post POST /v1/posts/video With a poster image

Reelspan handles for you:

  • Uploads to Reddit. Images and videos go to Reddit's own media storage first, as Reddit requires.
  • The video poster. Reddit wants a poster image for a video: Reelspan uses your cover image, or takes a frame from the video.
  • Finding the post. Reddit processes image and video posts before they appear. Reelspan looks for the new post on the account for about 30 seconds so it can return the link.

Connect the account

Reddit connects with a Reddit sign-in: in the dashboard go to Accounts → Reddit, or send a white-label connect link.

Reddit posting needs a Reddit developer app on Reelspan's side. Until it is set up, connecting Reddit fails with a message saying Reddit isn't set up yet, so Reddit may not be available to you yet.

Read the subreddit's rules before posting: many remove self-promotion, require a flair, or limit new accounts.

Example

A video post in r/videos with a flair:

curl -X POST https://api.reelspan.com/v1/posts/video \
  -H "Authorization: Bearer $REELSPAN_API_KEY" \
  -F "user=my-brand" \
  -F "platform[]=reddit" \
  -F "reddit_subreddit=videos" \
  -F "reddit_title=I timed every step of making espresso by hand" \
  -F "reddit_flair_id=a1b2c3d4-0000-1111-2222-333344445555" \
  -F "[email protected]"

A text post uses reddit_title for the title and reddit_description for the body:

curl -X POST https://api.reelspan.com/v1/posts/text \
  -H "Authorization: Bearer $REELSPAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user": "my-brand", "platform": ["reddit"], "title": "What we learned shipping 100 releases", "reddit_subreddit": "devops", "reddit_description": "A few notes from five years of weekly releases…"}'

Fields

Field Type Values What it does
reddit_subreddit string a subreddit name, e.g. videos Required. Where to post. A leading r/ is removed. subreddit works too.
reddit_title string up to 300 characters The post's title. Without it, the first line of title is used.
reddit_description string up to 40,000 characters Text posts: the body. Without it, the body is reddit_title or title.
reddit_flair_id string a flair template id The post's flair. Some subreddits require one.
reddit_nsfw boolean default false Marks the post NSFW.
reddit_spoiler boolean default false Marks the post as a spoiler.
reddit_first_comment string A comment posted under the new post. Falls back to first_comment.

A request that names Reddit without a subreddit is refused with 400 before anything is uploaded.

Limits

  • Title: 300 characters. Body: 40,000 characters.
  • Images: one per post; only the first photo is used.
  • Media size: your plan's upload limit, and at most 1 GB.

List the account's posts

GET /v1/reddit/posts?profile=my-brand lists the account's Reddit posts with their score, comment count, views and media:

curl "https://api.reelspan.com/v1/reddit/posts?profile=my-brand&limit=25"   -H "Authorization: Bearer $REELSPAN_API_KEY"
{
  "success": true,
  "source": "reelspan",
  "posts": [
    {
      "id": "1h2k3m4",
      "title": "We built a tiny studio in a shipping container",
      "subreddit": "InteriorDesign",
      "body": "",
      "likes": 412,
      "upvote_ratio": 0.97,
      "comments": 38,
      "impressions": null,
      "has_image": true,
      "has_video": false,
      "nsfw": false,
      "media": [{ "type": "image", "url": "https://i.redd.it/…", "width": 1920, "height": 1080 }],
      "url": "https://www.reddit.com/r/InteriorDesign/comments/1h2k3m4/…",
      "created_at": "2026-11-02T14:05:11.000Z",
      "thumbnail": "https://b.thumbs.redditmedia.com/…"
    }
  ],
  "after": null
}
  • source says where the list came from. With account, it is every post the account submitted, newest first, and you page with limit (1 to 100, default 25) and the after value from the previous answer. When Reddit won't list the account's own submissions to Reelspan, the answer is reelspan: the posts Reelspan published for this profile, with their current numbers, and after is null.
  • likes is the post's score. impressions is the view count, which Reddit shares with only some apps; otherwise null.
  • media lists images (galleries too), Reddit-hosted videos, and embedded videos from other sites (external_video).

Reddit posts can't be edited, deleted or reposted through Reelspan.

Good to know

  • Slow processing. If Reddit hasn't shown the image or video post after about 30 seconds, the result links to the subreddit's new posts, has no post_id, and says Reddit is still processing. A first comment can't be posted in that case.
  • Same link twice. Reelspan allows resubmitting a link Reddit has seen before, and turns on reply notifications for the post.
  • First comment: posted under the new post as the account.
  • Analytics: per post, upvotes (likes), comments and score. There are no account numbers.

Errors

error_code What happened What to do
subreddit_not_found The subreddit doesn't exist Check the name in reddit_subreddit.
reddit_error Reddit refused the post: a missing flair, a subreddit rule, a rate limit, or a banned account; error carries Reddit's message and code Read error. A rate limit (RATELIMIT) is retried automatically.
reauth_required The sign-in expired or was revoked Reconnect Reddit.

Parameters

  • profilestring · query
  • profile_usernamestring · query
  • userstring · query
  • limitinteger · query
  • afterstring · query

Responses

200 Posts

{
  "success": true,
  "source": "account",
  "posts": [
    {}
  ],
  "after": "string"
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

404 No such profile or account

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

Something unclear or missing? Write to [email protected] and we’ll fix the page.