Specs and limits

Instagram Reels, TikTok and YouTube Shorts video specs

Short-video limits differ per platform. By Socifyr's constants: Instagram accepts 300 MB and 15 minutes, TikTok 4 GB and 10 minutes, and YouTube 256 GB and 12 hours, with Shorts limited to 3 minutes and a square or vertical frame. One POST /api/content/video call can publish the same file to all three.
Published 4 min read

What are the video limits on each platform?

Video limits per platform from the Socifyr shared constants
PlatformMax file sizeMax lengthPosts per 24 h
Instagram300 MB15 min50
TikTok4,096 MB10 min15
YouTube262,144 MB (256 GB)12 h (Shorts: 3 min)10
Facebook1,024 MB4 h25
Threads1,024 MB5 min50
LinkedIn5,120 MB10 min150
X1,024 MB4 h50
Pinterest1,024 MB15 min20
Reddit1,024 MB15 min40
Bluesky100 MB60 s50
Mastodon40 MB1 h100
Telegram50 MB1 h100
Discord8 MB10 min100

A single post carries exactly one video. When you send one file to several platforms, the smallest limit wins in practice. A 200 MB, 5-minute clip fits Instagram, TikTok and YouTube, but it is too large for Discord (8 MB), Bluesky (100 MB) and over Bluesky's 60 second length.

What makes a YouTube video count as a Short?

YouTube decides from the file itself. Socifyr mirrors that rule: a video is Shorts-eligible when its width is no greater than its height (square or vertical) and its duration is at most 180 seconds. The limit was raised from 60 seconds to 3 minutes in October 2024. The #Shorts hashtag is not required.

You control the choice with videoType: SHORTS, STANDARD or AUTO. With AUTO or no value, a post with contentFormat: "short_video" publishes as a Short and anything else publishes as a standard video. Other YouTube details: titles are limited to 100 characters, descriptions to 5,000, and privacy is PUBLIC, UNLISTED or PRIVATE. API projects that have not passed YouTube's audit post as private or unlisted.

How does TikTok handle API video posts?

TikTok allows direct posting only for an audited video.publish app. An unaudited app drops the upload into the creator's TikTok inbox as a draft that they finish in the app. postMode chooses DIRECT_POST or MEDIA_UPLOAD (the inbox draft). Privacy per post is PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR or SELF_ONLY, and TikTok supports an AI-generated content marking plus brand-content disclosure toggles. TikTok is also the tightest daily cap on the list at 15 posts per rolling 24 hours, so a busy agent hits it first.

How do I publish one video to Reels, TikTok and Shorts?

await socifyr.uploads.video({
  connections: ['instagram-mybrand', 'tiktok-mybrand', 'youtube-mybrand'],
  medias: ['https://cdn.example.com/clip.mp4'],
  title: 'Product demo',
  contentFormat: 'short_video',
  platformOptions: {
    'instagram-mybrand': { mediaType: 'REELS' },
    'tiktok-mybrand': { privacyLevel: 'PUBLIC_TO_EVERYONE' },
    'youtube-mybrand': { videoType: 'SHORTS' },
  },
})

Each platform is its own channel. One can succeed while another fails, and retry re-queues only the failures. Video also takes longer than text: the lifecycle docs put a short video under 60 seconds at roughly 30 to 90 seconds per channel, and YouTube and TikTok can add several more minutes on their side. Use async: true or --wait rather than a short HTTP timeout.

What does the platform say when a video is rejected?

Socifyr turns raw platform errors into a plain reason and a fix. A duration, resolution or aspect problem reads "The media doesn't meet Instagram's format requirements. Check the aspect ratio, resolution, or duration." A size problem lists the platform's video and image limits from the table above. A daily-cap hit says the platform allows about N posts per 24 hours and to wait for the window to reset.

How do I follow a video upload to completion?

Publishing moves through queued, pending, processing and publishing before it lands on completed, partial_failure or failed. During processing the media is validated and prepared, and during publishing it fans out to each platform in parallel. Do not hold an HTTP request open for the whole thing. Pass async: true to get a requestId back immediately, then poll it or listen for a webhook.

bash
curl "https://api.socifyr.com/api/content/status?requestId=<requestId>" \
  -H "Authorization: Bearer sk_your_key" \
  -H "X-Workspace-Id: <workspaceId>"

The result.publishedAt on a channel reflects when the platform finished, not just when the upload left Socifyr, so YouTube and TikTok can show a later time than the others.

What should I check before uploading a video?

  1. Length against the tightest platform. Bluesky is 60 seconds, Threads 5 minutes, TikTok and Discord 10 minutes.
  2. File size against the tightest platform. Discord is 8 MB, Mastodon 40 MB, Telegram 50 MB, Bluesky 100 MB.
  3. Orientation. Use a vertical or square frame if you want YouTube to classify it as a Short, and for Reels.
  4. Which platforms really need the video. Drop the ones the file cannot satisfy and post a short text link there instead.
  5. Daily caps. TikTok allows 15 and YouTube 10 per rolling 24 hours, so batch jobs need pacing.

getEffectiveVideoSizeLimit in @socifyr/shared returns the smallest video size limit among the platforms you choose, which is a one-line pre-flight check. The same shared package holds the per-platform numbers used in the table above.

Frequently asked questions

What is the max video length for Instagram Reels through the API?

15 minutes and 300 MB according to Socifyr's Instagram constants.

How long can a YouTube Short be?

Up to 3 minutes (180 seconds), and the video must be square or vertical.

What is the TikTok video size limit?

4 GB and 10 minutes per video, with a cap of 15 posts per rolling 24 hours.

Can I post the same video to every platform at once?

Yes, as long as it fits the smallest limit among the platforms you choose. Each platform publishes independently.

Why did my TikTok upload land in drafts?

Unaudited TikTok apps cannot direct-post. The video goes to the creator inbox as a draft.

Related pages

Try it with your own accounts

One API key, 18 platforms, and your agent never sees a platform token. The free plan needs no card.