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]"import { Reelspan } from 'reelspan';
import { readFile } from 'node:fs/promises';
const reelspan = new Reelspan();
const post = await reelspan.posts.video({
user: 'my-brand',
platforms: ['reddit'],
video: { data: await readFile('launch.mp4'), name: 'launch.mp4', type: 'video/mp4' },
extra: {
reddit_subreddit: 'videos',
reddit_title: 'I timed every step of making espresso by hand',
reddit_flair_id: 'a1b2c3d4-0000-1111-2222-333344445555',
},
});from reelspan import Reelspan
reelspan = Reelspan()
post = reelspan.posts.video(
"my-brand", ["reddit"], "launch.mp4",
extra={
"reddit_subreddit": "videos",
"reddit_title": "I timed every step of making espresso by hand",
"reddit_flair_id": "a1b2c3d4-0000-1111-2222-333344445555",
},
)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…"}'await reelspan.posts.text({
user: 'my-brand',
platforms: ['reddit'],
title: 'What we learned shipping 100 releases',
extra: { reddit_subreddit: 'devops', reddit_description: 'A few notes from five years of weekly releases…' },
});reelspan.posts.text(
"my-brand", ["reddit"], "What we learned shipping 100 releases",
extra={"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"const { posts, after } = await reelspan.request('GET', '/v1/reddit/posts', { query: { profile: 'my-brand', limit: 25 } });page = reelspan.request("GET", "/v1/reddit/posts", query={"profile": "my-brand", "limit": 25}){
"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
}sourcesays where the list came from. Withaccount, it is every post the account submitted, newest first, and you page withlimit(1 to 100, default 25) and theaftervalue from the previous answer. When Reddit won't list the account's own submissions to Reelspan, the answer isreelspan: the posts Reelspan published for this profile, with their current numbers, andafterisnull.likesis the post's score.impressionsis the view count, which Reddit shares with only some apps; otherwisenull.medialists 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. |