What are the video limits on each platform?
| Platform | Max file size | Max length | Posts per 24 h |
|---|---|---|---|
| 300 MB | 15 min | 50 | |
| TikTok | 4,096 MB | 10 min | 15 |
| YouTube | 262,144 MB (256 GB) | 12 h (Shorts: 3 min) | 10 |
| 1,024 MB | 4 h | 25 | |
| Threads | 1,024 MB | 5 min | 50 |
| 5,120 MB | 10 min | 150 | |
| X | 1,024 MB | 4 h | 50 |
| 1,024 MB | 15 min | 20 | |
| 1,024 MB | 15 min | 40 | |
| Bluesky | 100 MB | 60 s | 50 |
| Mastodon | 40 MB | 1 h | 100 |
| Telegram | 50 MB | 1 h | 100 |
| Discord | 8 MB | 10 min | 100 |
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' },
},
})socifyr post "Product demo" --media clip.mp4 \
--to instagram-mybrand,tiktok-mybrand,youtube-mybrand \
--format short_video --waitEach 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.
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?
- Length against the tightest platform. Bluesky is 60 seconds, Threads 5 minutes, TikTok and Discord 10 minutes.
- File size against the tightest platform. Discord is 8 MB, Mastodon 40 MB, Telegram 50 MB, Bluesky 100 MB.
- Orientation. Use a vertical or square frame if you want YouTube to classify it as a Short, and for Reels.
- Which platforms really need the video. Drop the ones the file cannot satisfy and post a short text link there instead.
- 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.