Instagram Reels vs TikTok vs YouTube Shorts: publishing via API

Compare the API requirements for publishing short-form video across the three major platforms — aspect ratios, duration limits, thumbnail handling, and processing wait times.

Instagram Reels vs TikTok vs YouTube Shorts: publishing via API

Three platforms, three different upload protocols

Instagram Reels, TikTok, and YouTube Shorts all serve the same content format: short vertical video. Publishing that video through their APIs is where the similarity ends.

Instagram requires your video hosted at a public URL and uses a container model with polling. TikTok makes you query creator settings before every post. YouTube has no Shorts-specific endpoint at all — you upload a regular video and hope the algorithm classifies it correctly.

This is a side-by-side breakdown of what each platform requires, where they diverge, and what will trip you up.

Video specs at a glance

SpecInstagram ReelsTikTokYouTube Shorts
Aspect ratio9:16 required for Reels tab9:16 recommended9:16 required for Shorts classification
Resolution1080 x 1920 recommended1080 x 1920 (min 720 x 1280)1080 x 1920 recommended
Max duration (API)90 secondsVaries by creator (up to 60 min)3 minutes
Min duration5 secondsNo documented minimumNo documented minimum
Max file size~1 GBNo hard documented max via API128 GB (standard YouTube limit)
FormatsMP4, MOVMP4, MOV, WebMMP4, MOV, AVI, WebM, and others
Video codecH.264 or HEVCH.264 recommendedH.264 recommended
Audio codecAAC (48 kHz max, mono or stereo)AAC recommendedAAC recommended
Frame rate23–60 FPS30–60 FPS24–60 FPS

The resolution and aspect ratio requirements are nearly identical. The divergence is in duration limits and upload mechanics.

Duration limits

This is where things get frustrating.

Instagram Reels caps API-published Reels at approximately 90 seconds. The native app now supports Reels up to 3 minutes (and longer for some accounts), but the Graph API has not caught up. If your workflow generates videos longer than 90 seconds, they cannot be published as Reels through the API.

TikTok does not have a fixed duration limit. Instead, you must call the Creator Info endpoint before every post, which returns a max_video_post_duration_sec value specific to that creator. Most creators can post videos up to 10 minutes. Some have access to 60 minutes. You cannot know the limit without making the API call.

YouTube Shorts supports videos up to 3 minutes. YouTube extended this from 60 seconds in late 2024. A vertical video under 3 minutes is automatically classified as a Short — there is no flag or parameter to set. The classification is entirely based on aspect ratio and duration.

The upload flow

Each platform has a fundamentally different publishing model.

Instagram Reels: container model with polling

Instagram uses a three-step container model:

Step 1 — Create container:

POST /{ig-user-id}/media

Send media_type=REELS and a video_url pointing to a publicly accessible video file.

Step 2 — Poll for status:

GET /{container-id}?fields=status_code

Check repeatedly until the status is FINISHED.

Step 3 — Publish:

POST /{ig-user-id}/media_publish

Send the container ID to make the Reel live.

The video must be hosted at a public URL. Instagram does not accept direct file uploads through the standard container flow — Meta’s servers fetch the video from your URL. For large files or unreliable hosting, a resumable upload flow is available.

The share_to_feed parameter controls whether the Reel appears in the main feed in addition to the Reels tab. If you omit it, the Reel only appears in the Reels tab.

TikTok: creator info query, then upload

TikTok requires a mandatory pre-flight check before every post:

Step 1 — Query creator info:

POST /v2/post/publish/creator_info/query/

Returns the creator’s available privacy levels, max video duration, and feature toggles (duet, stitch, comments). This call is required before every post.

Step 2 — Initialize upload:

POST /v2/post/publish/video/init/

Set source to either PULL_FROM_URL (provide a video_url) or FILE_UPLOAD (returns an upload_url for direct upload). Both return a publish_id for status tracking.

Step 3 — Upload file (file upload path only):

PUT {upload_url}

Send the video binary with Content-Range headers. Files under 5 MB go as a single chunk. Files over 64 MB must be chunked (5–64 MB per chunk, uploaded sequentially). The upload URL expires after 1 hour.

Step 4 — Poll for status:

POST /v2/post/publish/status/fetch/

Check the publish status using the publish_id from initialization.

The creator info query is not optional. TikTok enforces this during app review and requires your UI to display the creator’s available privacy levels with no pre-selected default.

YouTube Shorts: standard video upload

YouTube has no Shorts-specific endpoint. You upload a video using the standard Videos API:

Step 1 — Initiate resumable upload:

POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status

Send video metadata (title, description, privacy status) in the request body. Returns a resumable upload URI in the Location header.

Step 2 — Upload video:

PUT {resumable-upload-uri}

Send the video binary. Supports chunked upload with Content-Range headers for large files.

That is it. YouTube classifies the video as a Short automatically based on its aspect ratio and duration. There is no isShort flag, no media_type parameter, no special endpoint.

The simplicity is deceptive. You have less control over how the content is categorized, and the classification rules are not fully documented.

Thumbnail and cover image handling

FeatureInstagram ReelsTikTokYouTube Shorts
Custom cover imageYesNoNo
Frame selectionYes (millisecond offset)Yes (millisecond offset)No
Auto-generatedYes (fallback)Yes (always)Yes (always)
Post-publish editingIn-app onlyIn-app onlyLimited (text/emoji overlay in-app)

Instagram Reels has the best thumbnail support. Use cover_url to provide a custom cover image, or thumb_offset to pick a specific frame by millisecond offset. If you provide both, cover_url takes precedence. The cover displays as a center-cropped 1080 x 1080 square on the profile grid, so the center of your image needs to look good at that crop.

TikTok lets you select a frame via video_cover_timestamp_ms in the post info object. There is no way to upload a custom cover image through the API. The creator can change it manually in the app after posting.

YouTube Shorts does not support custom thumbnails for Shorts. The thumbnails.set endpoint works for regular YouTube videos but not for Shorts. YouTube auto-generates the thumbnail, and creators can only add text or emoji overlays through the app. This is a significant limitation for any workflow that depends on branded or consistent thumbnails.

Processing and wait times

All three platforms process video asynchronously after upload. None of them offer webhooks — you must poll.

Instagram Reels: Poll GET /{container-id}?fields=status_code until the status is FINISHED. Processing time varies with file size and server load. Meta recommends polling once per minute for no more than 5 minutes. Attempting to publish before the container is ready returns a 400 error. Containers expire after 24 hours if not published.

TikTok: Poll POST /v2/post/publish/status/fetch/ with the publish_id from initialization. Processing typically completes in under 30 seconds for files up to 512 MB, about a minute for larger files. After processing, public posts go through content moderation, which usually takes under a minute but can occasionally take hours.

YouTube Shorts: There is no clean processing status endpoint. You can call GET /youtube/v3/videos?part=processingDetails to check status, but each call costs 1 quota unit. Shorts are typically processed within a few minutes. Upload status progresses through uploadedprocessed (or failed / rejected).

PlatformTypical processing timePolling methodPolling cost
Instagram Reels30 seconds – 5 minutesGET container statusFree (rate-limited)
TikTokUnder 30 seconds + moderationPOST status fetchFree (30 req/min)
YouTube ShortsA few minutesGET videos.list1 quota unit per call

App review and verification

None of these platforms let you publish publicly without some form of review.

Instagram Reels requires Meta’s app review process. Each permission (instagram_business_content_publish, instagram_business_basic, etc.) needs a separate submission with a screencast demonstrating the full user flow. Expect 2–4 weeks.

TikTok has the most rigorous audit. Unaudited apps are restricted to SELF_ONLY privacy and can only serve 5 users per day. The audit requires UX mockups, compliance with content sharing guidelines (no watermarks, mandatory privacy selectors, commercial content disclosures), and can take multiple review rounds. Violations can result in permanent revocation.

YouTube requires Google’s OAuth verification for sensitive scopes. Unverified apps display a warning screen, are limited to 100 users, and can only upload private videos. Verification includes a security assessment and may require a third-party audit for restricted scopes.

Platform-specific gotchas

Instagram Reels

  • Video must be hosted at a publicly accessible URL. No direct file upload through the standard flow
  • The 90-second API duration cap is a hard limit, even though the native app supports longer Reels
  • Only 9:16 aspect ratio videos between 5–90 seconds are eligible for the Reels tab
  • Token management requires exchanging short-lived tokens for long-lived tokens, then re-exchanging before they expire every 60 days

TikTok

  • You must call the Creator Info endpoint before every post, not just once. Creator settings can change at any time
  • Your UI must force the user to actively choose a privacy level. Pre-selecting a default will get your app rejected in review
  • video.upload and video.publish are separate OAuth scopes. You need both to post content
  • Upload URLs expire after 1 hour. Slow or interrupted uploads require re-initialization
  • Chunk uploads must be sequential. No parallel chunk uploading

YouTube Shorts

  • There is no way to explicitly declare a video as a Short. You upload a vertical video and trust YouTube’s automatic classification
  • No custom thumbnail support for Shorts via the API. This is confirmed as not on YouTube’s roadmap
  • Google only issues an OAuth refresh token on the first authorization. If you lose it, you must pass prompt=consent to force re-consent
  • The default quota allows roughly 6 uploads per day. Any production application needs a quota increase, which requires a full compliance audit

The same video, three platforms, through Postproxy

Here is what publishing a short-form video to all three platforms looks like through Postproxy:

Terminal window
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "3 tips that changed how we approach customer onboarding"
},
"profiles": ["instagram", "tiktok", "youtube"],
"media": ["https://example.com/video.mp4"]
}'

One request. Postproxy handles the container model for Instagram, the creator info query and privacy validation for TikTok, the resumable upload for YouTube, the processing status polling on all three, and returns per-platform results showing exactly what happened on each network.

What Postproxy handles

Postproxy manages the complexity of three different upload protocols so your system does not have to:

  • Instagram’s container creation, status polling, and publishing flow
  • TikTok’s creator info validation, privacy level selection, and chunked uploads
  • YouTube’s resumable upload protocol and quota management
  • Per-platform video format validation and duration checks
  • Processing status polling across all three platforms
  • OAuth token management and refresh for each platform
  • Per-platform outcome reporting — what succeeded, what failed, and why

Your system sends a video once. Postproxy publishes it as a Reel, a TikTok, and a Short.

Connect your accounts and start publishing through the Postproxy API.

Ready to get started?

Start with our free plan and scale as your needs grow. No credit card required.