Skip to content
reelspanDocs

Limits

Photo requirements

Photo formats, sizes and per-network carousel limits for Reelspan photo posts, and how Reelspan converts or trims photos so each network accepts them.

A photo post sends one photo or a carousel of up to 35 to every network you name. Reelspan checks each photo when you send the request, then adapts the set to each network: it converts formats a network won't take, and uses only as many photos as the network allows, with a warning.

What Reelspan accepts

Formats JPEG, PNG, WebP, GIF and HEIC (AVIF is also recognised). SVG, BMP and TIFF are refused. The type is read from the file's content, not its name.
Size Up to 20 MB per photo, on every plan.
Count Up to 35 photos per request in photos[] / photo_media_ids[]; any more are ignored with a warning.
From a URL Public https:// URLs in photos[], in order after any uploaded files. At most 100 media URLs per request.
Alt text alt_text[] (one per photo, in order), one alt_text for all, or {network}_alt_text for one network. Sent to X, Instagram, Facebook, Threads, LinkedIn, Pinterest and Bluesky.
Per network {network}_photos[] (URLs) or {network}_photo_media_ids[] give one network its own photos, for example pinterest_photos[] cropped to 2:3.

A photo over 20 MB is refused with 413 FILE_TOO_LARGE, a file that isn't an image with 400 UNSUPPORTED_MEDIA or WRONG_MEDIA_KIND.

Per network

Network Photos per post What Reelspan does
TikTok 35 A photo post. JPEG and WebP up to 20 MB go as they are; other photos are converted to JPEG (at most 1920 px). photo_cover_index picks the cover.
Instagram 10 in a carousel Instagram takes JPEG only: PNG, WebP and HEIC are converted (up to 8 MB). Carousels can mix in videos. media_type=STORIES posts each photo as a Story. Instagram wants shapes from 4:5 to 1.91:1.
Facebook 30 in a Page post; 10 as Stories facebook_media_type=STORIES shares each photo as its own Page Story.
Threads 20 in a carousel Carousels can mix in videos.
X 4 GIFs are sent as GIFs.
LinkedIn 20 Personal or company page.
Pinterest 5 in a carousel Needs pinterest_board_id. Every photo in a carousel must have the same shape; up to 20 MB each.
Bluesky 4 Each image must be under 1 MB; bigger ones are re-encoded.
Mastodon 4
Telegram 10 in an album
Discord 10 Up to 10 MB per file.
Slack 10
Nostr 10 Uploaded to your media server and linked in the note.
Whop 10
Listmonk 10 Uploaded to Listmonk's media library and shown in the email; up to 20 MB each.
WordPress All Embedded in the blog post.
Lemmy 1 The first photo.
Reddit 1 An image post with the first photo, in reddit_subreddit.
Google Business 1 One photo per update.
YouTube, Dev.to, Hashnode No photo posts

When a post has more photos than a network takes, the first ones are used and that network's result carries a warning such as "Instagram carousels hold 10 images; the first 10 of 12 were used." Sending photos to a network without photo posts refuses the request with 400 UNSUPPORTED_POST_TYPE.

Shapes

The networks crop or letterbox photos differently. The shapes Reelspan lists for each network, preferred first (they cover video too):

Network Shapes
Instagram 9:16, 4:5, 1:1 (photo carousels: 4:5 to 1.91:1)
Facebook 9:16, 16:9
X 16:9, 1:1
Threads 4:5, 9:16
LinkedIn 1:1, 16:9
Pinterest 2:3, 9:16
Bluesky 16:9
Google Business 4:3, 1:1
TikTok 9:16

To give one network a different crop, send it its own photos with {network}_photos[] or {network}_photo_media_ids[].

See Post photos for the request, and Video requirements for videos.

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