Cross-platform

Cross-Post the Same Video to Instagram and TikTok

Publish one video to Instagram and TikTok with a single POST /api/posts call, plus the real aspect-ratio, duration, and file-size limits a file has to clear for both.

Quick answer

Put both profile IDs in the same profiles array on one POST /api/posts call — PostGate fans the request out to Instagram and TikTok and tracks each target independently. The one video file must satisfy the stricter limit on each dimension: Instagram's 300MB size cap and 0.8:1–1.91:1 aspect range, TikTok's 600-second duration cap. A 9:16 vertical clip clears both.

One video, two platforms, one request. PostGate doesn't need a separate call per platform — put both pro_instagram... and pro_tiktok... profile IDs in the same profiles array on a single POST /api/posts call, and each target gets tracked and delivered independently. The part that actually needs planning is the video file itself: Instagram and TikTok enforce different limits, and the file you send has to satisfy both at once.

01

One request, both profiles in the same array

There's no platforms field to set — routing is entirely determined by which connected profile IDs you list. Include one Instagram profile and one TikTok profile in the same profiles array and PostGate fans the single request out to both providers' own publish pipelines, tracking each as a separate target with its own status, retry count, and permalink.
Cross-post the same clip to Instagram and TikTokPostGate API
curl -X POST "https://postgate.studio/api/posts?profile_group_id=grp_acme123" \
  -H "Authorization: Bearer $POSTGATE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-clip-cross-post-001" \
  -d '{
    "post": { "body": "New feature, in 30 seconds." },
    "profiles": ["pro_instagram123", "pro_tiktok456"],
    "media": ["med_01JXYZ"]
  }'
02

How do you use a different caption or hashtags per platform?

If the two platforms need different copy — TikTok doesn't render links in the body at all, so a caption written for Instagram often needs its call-to-action reworded — use post.options.body_overrides to swap the text per target while everything else about the post stays shared. The override replaces post.body only for the platform key it names; every other target still gets the top-level body.
Shared post, platform-specific captionPostGate API
curl -X POST "https://postgate.studio/api/posts?profile_group_id=grp_acme123" \
  -H "Authorization: Bearer $POSTGATE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-clip-cross-post-001" \
  -d '{
    "post": {
      "body": "New feature, in 30 seconds. Link in bio.",
      "options": {
        "body_overrides": {
          "tiktok": "New feature, in 30 seconds. #producthunt #saas"
        }
      }
    },
    "profiles": ["pro_instagram123", "pro_tiktok456"],
    "media": ["med_01JXYZ"]
  }'
03

What are Instagram's actual video limits?

For a video target, PostGate enforces Instagram's real constraints before the request ever reaches Meta: MP4 or MOV, up to 300MB, between 3 and 900 seconds (15 minutes) long, with an aspect ratio between 0.8:1 and 1.91:1 — portrait 4:5 up to landscape 1.91:1. A file outside any of those bounds is rejected as media_invalid before it spends a single write call, whether the target is a feed post or a Reel.
04

What are TikTok's actual video limits?

TikTok is more permissive on the numbers that matter for file size and length: MP4 only, up to 4GB, between 3 and 600 seconds (10 minutes) long. TikTok's API doesn't enforce a hard aspect-ratio check the way Instagram does — vertical 9:16 is what the platform's own UI and algorithm favor, but it isn't a validation rule PostGate applies on your behalf, so a horizontally-cropped file will still upload successfully even if it performs worse once it's live.
05

What does one file have to satisfy for both at once?

Since a single media asset is going to two targets in one request, the binding constraint is whichever platform is stricter on each dimension. Instagram's 300MB cap governs file size (TikTok's 4GB ceiling is never the limiting factor here). TikTok's 600-second cap governs maximum duration (Instagram allows up to 900 seconds, TikTok doesn't). Both platforms accept a 3-second minimum, so that floor is shared. For aspect ratio, target Instagram's 0.8:1–1.91:1 range and TikTok will accept the same file without complaint, since it has no enforced range of its own — a 4:5 or 9:16 vertical clip clears both comfortably. Pre-upload the file as media before you post so PostGate validates it against every connected target's limits up front, rather than discovering a rejection mid-delivery on one platform after the other already succeeded.
06

How do you read the result when one platform succeeds and the other fails?

A cross-post to two platforms is exactly the case the per-target status model exists for: the aggregate post can land as partial — Instagram published, TikTok failed on a content policy check, for example — and the targets array is what tells you which permalink to keep and which target to retry or show the customer. Never treat the aggregate status alone as the full answer for a two-platform post; read both targets.

Frequently asked questions

Can I post the same video to Instagram and TikTok with one API call?

Yes. There is no platforms field to set — routing is entirely determined by which connected profile IDs you list. Include one Instagram profile and one TikTok profile in the same profiles array on a single POST /api/posts call, and PostGate fans the request out to both providers’ publish pipelines, tracking each as a separate target with its own status, retry count, and permalink.

How do I use different captions for Instagram and TikTok in the same post?

Use post.options.body_overrides to swap the text per platform while everything else stays shared. The override replaces post.body only for the platform key it names; every other target still gets the top-level body. This matters because TikTok doesn’t render links in the body at all, so a caption written for Instagram often needs its call-to-action reworded.

What video specs work on both Instagram and TikTok at once?

The binding constraint is whichever platform is stricter per dimension: Instagram’s 300MB cap governs file size (TikTok allows 4GB), TikTok’s 600-second cap governs duration (Instagram allows 900), both share a 3-second minimum, and targeting Instagram’s 0.8:1–1.91:1 aspect range satisfies TikTok too, since it has no enforced range. A 4:5 or 9:16 vertical clip clears both comfortably.

Does TikTok enforce an aspect ratio through the API?

No — TikTok’s API doesn’t enforce a hard aspect-ratio check the way Instagram does. Vertical 9:16 is what the platform’s own UI and algorithm favor, but it isn’t a validation rule PostGate applies on your behalf, so a horizontally-cropped file will still upload successfully even if it performs worse once it’s live.

What happens if Instagram publishes but TikTok fails?

The aggregate post lands as partial — exactly the case the per-target status model exists for. The targets array tells you which permalink to keep and which target to retry or show the customer. Never treat the aggregate status alone as the full answer for a two-platform post; read both targets.

Build it with PostGate

One API for every social platform your customers care about — sandboxed, documented, and ready today.

Start building Read the docs