Instagram Reels API: is_paid_partnership and sponsor IDs

The Instagram Content Publishing API takes is_paid_partnership and branded_content_sponsor_ids for Reels, sponsor ids need Facebook Login. Request-body example.

4 min readSume
All posts

To publish a Reel as a paid partnership through the Instagram API, create the media container with media_type=REELS, a video_url, is_paid_partnership and the sponsor in branded_content_sponsor_ids. The publishing guide marks branded_content_sponsor_ids as Facebook Login only, and says is_paid_partnership is set to true automatically when sponsor ids are provided. If your app authenticates with another login type, do not count on the sponsor field. The AI label is a separate, optional boolean, is_ai_generated; a sponsored AI ad can need both.

Fields on the page

Instagram content publishing guide, read 2026-10-02
FieldStatus on the page
media_typeREELS to publish a Reel
video_urlRequired; the path to the video
is_ai_generatedOptional boolean for AI disclosure
is_paid_partnershipOptional boolean; set to true automatically when sponsor ids are given
branded_content_sponsor_idsOptional array of up to 2 Instagram user IDs; Facebook Login only
Readback quirkRequesting media_type on a published Reel returns VIDEO

Example container body

This sketch builds the JSON for the container request. The sponsor id is a placeholder, and the /media call itself needs an access token from Facebook Login that you hold.

import json

def reel_body(video_url, sponsor_ids=None, ai=False):
    body = {"media_type": "REELS", "video_url": video_url}
    if ai:
        body["is_ai_generated"] = True
    if sponsor_ids:
        body["is_paid_partnership"] = True
        body["branded_content_sponsor_ids"] = list(sponsor_ids)
    return body

print(json.dumps(reel_body(
    "https://example.com/reel.mp4", ["1234567890"], ai=True), indent=2))

Where Sume fits

Sume makes the file; your app sets the flags. The video_url must be reachable by Instagram, which is your hosting decision: this page does not say whether a media.sume.com link satisfies Instagram's fetcher, so test it with a draft. Cut the clip to length with video trim ($0.02 per job) before you create the container.

Order of operations

Decide the partnership and AI flags before you render, not after. They belong to the publish request, so a late change means a new container, not an edit to the file. A workable order is: produce the final MP4, probe it, build the container body above, create the container, wait for it to finish processing, then publish. Keep the sponsor id in configuration rather than in code, since it differs per campaign, and log the exact body you sent so a disclosure question can be answered later from your own records.

Limits

The page describes the sponsor ids as Instagram user IDs of brands (maximum 2, professional accounts), and says nothing about whether a partnership label replaces or adds to the AI label. If you read the Reel back, do not branch on media_type: it returns VIDEO after publishing. For the AI field alone, see the is_ai_generated parameter.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume