Instagram Reels API
What changes technically when you publish a Reel instead of a feed post via the Instagram API.
Instagram treats a Reel as a distinct container type — media_type: "REELS" instead of VIDEO — with stricter format requirements: MP4 or MOV with the moov atom at the front, H.264 or HEVC video, AAC audio, and a recommended 9:16 aspect ratio. Through PostGate, send a video to an Instagram target and the correct container type is built for you.
A Reel is not a video post with a different label — Instagram's Graph API treats it as a distinct container type with its own format requirements and its own quirks in what Instagram reports back about it. This page covers what actually changes technically versus a standard photo or video post.
What media_type does a Reels container use?
Natively, Instagram creates a Reels container with media_type: "REELS" instead of VIDEO, pointed at a video URL. PostGate infers this from the media you attach — send a video to an Instagram target and PostGate builds the correct container type on your behalf, so the request through POST /api/posts looks identical to any other post.
curl -X POST "https://api.postgate.studio/api/posts" \
-H "Authorization: Bearer $POSTGATE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ig-reel-launch-01" \
-d '{
"post": { "body": "60 seconds on how we built it." },
"profiles": ["pro_instagram123"],
"media": ["https://cdn.example.com/reel.mp4"]
}'Are format requirements stricter than a feed video?
Meta's Graph API documentation specifies MP4 or MOV containers with the moov atom at the front of the file, H.264 or HEVC video, AAC audio, and a recommended 9:16 aspect ratio — vertical formats significantly outside that range risk being cropped or letterboxed. Duration limits for Reels published through the API have changed over time and vary by account; confirm the current cap against Meta's own content-publishing documentation rather than assuming a fixed number, since it is one of the specs Meta has revised more than once.
Does a published Reel report back as REELS?
Reading the published media object back from Instagram, its media_type field returns as VIDEO, not REELS — the distinct media_product_type field is what actually tells you it published as a Reel rather than a feed video. If your own code branches on content type after the fact, branch on that field, not media_type.
Why do Reels take longer to process than a still image?
A Reels container is a full video transcode on Instagram's side, so it commonly takes noticeably longer to move from IN_PROGRESS to FINISHED than an image container — see telling a slow Reels container from a genuinely stuck one. PostGate tracks this as the target sitting in a distinct media-preparation state rather than an opaque "processing" label, and revalidates the asset if the post was scheduled well ahead of the publish time.
Frequently asked questions
What video format does the Instagram Reels API require?
MP4 or MOV containers with the moov atom at the front of the file, H.264 or HEVC video, AAC audio, and a recommended 9:16 aspect ratio — vertical formats significantly outside that range risk being cropped or letterboxed.
What is the maximum duration for a Reel published via API?
Duration limits for Reels published through the API have changed over time and vary by account. Confirm the current cap against Meta’s own content-publishing documentation rather than assuming a fixed number — it is one of the specs Meta has revised more than once.
Why does my published Reel report media_type VIDEO instead of REELS?
That is expected. Reading the published media object back from Instagram, its media_type field returns as VIDEO — the distinct media_product_type field is what actually tells you it published as a Reel rather than a feed video. If your own code branches on content type after the fact, branch on that field, not media_type.
Why do Reels take longer to publish than photos?
A Reels container is a full video transcode on Instagram’s side, so it commonly takes noticeably longer to move from IN_PROGRESS to FINISHED than an image container. PostGate tracks this as the target sitting in a distinct media-preparation state, and revalidates the asset if the post was scheduled well ahead of the publish time.
