Instagram API is_ai_generated: label an AI Reel
Set is_ai_generated=true when you create the media container and Instagram's API records your AI self-disclosure. Carousels take it on the parent only.

To disclose AI use when you publish through Instagram's API, set the is_ai_generated parameter to true in the request that creates the media container. Meta's guide calls it a self-disclosure of AI usage in the media, and says it works with both Instagram API with Facebook Login and Instagram Login.
The rules below come from Meta's content publishing guide, read 2026-09-29. Sume has no Instagram connector; the only Sume fact used is that a Format run's files are public HTTPS URLs, from Format runs.
How do I publish a Reel with the AI flag?
Meta's guide shows the flag on an image container. A Reel container is created the same way, with media_type=REELS and a public video_url, so the flag goes in the same request. Then publish the container with creation_id.
curl -X POST "https://graph.facebook.com/v25.0/<IG_USER_ID>/media" \
-H "Authorization: Bearer $IG_ACCESS_TOKEN" \
-d "media_type=REELS" \
-d "video_url=https://media.sume.com/artifacts/artf_demo/full_video.mp4" \
-d "caption=Made with AI" \
-d "is_ai_generated=true"
curl -X POST "https://graph.facebook.com/v25.0/<IG_USER_ID>/media_publish" \
-H "Authorization: Bearer $IG_ACCESS_TOKEN" \
-d "creation_id=<IG_CONTAINER_ID>"What are the rules for the flag?
| Case | What Meta says |
|---|---|
| Where to set it | When creating a media container |
| Carousel | Set it only on the carousel container; setting it on a carousel child results in an error |
| Login types | Available to Instagram API with Facebook Login and Instagram Login |
| Reels container | media_type=REELS plus video_url |
Can the video URL be a Sume file?
Meta's guide says Instagram fetches the file from the URL you pass, so it must be on a public server. Sume's Format run docs describe media as durable media.sume.com HTTPS URLs that do not expire and are public to anyone holding the URL. Do not pass a GET /v1/videos/{id}/content URL, which needs your Sume API key. Whether the file meets Reels' encoding rules is in Instagram Reels video requirements for API uploads.
What happens between the two calls?
A video container is not always ready the moment it is created. Meta's troubleshooting section says you can read the container's status_code, which returns IN_PROGRESS while it is processing and FINISHED when the container and its media object are ready to be published. Meta recommends querying once per minute, for no more than 5 minutes.
Call media_publish only after FINISHED. Meta also lists ERROR and EXPIRED, the latter for a container not published within 24 hours, so an old container has to be created again with the flag set.
Does the flag replace Instagram's own AI labels?
Meta's page does not say. It describes the parameter only as a self-disclosure. How Instagram and Facebook label AI content otherwise, including detection, is in What is AI info on Facebook and Instagram?. Profile-level labeling is a separate Instagram rule that this parameter does not touch.
Sources
Related posts
More in Developers
- Instagram trial Reels API: trial_params and graduation
Publish an Instagram trial Reel by API with trial_params.graduation_strategy set to MANUAL or SS_PERFORMANCE. Trial Reels reach non-followers only.
- Is my data safe with AI? Four checks before you share it
No AI tool can promise perfect security. Check who processes your inputs, who on your team sees them, who can open outputs, and how keys are kept.
- Is my data used to train AI? Where the answer is written
It depends on the tool: the training answer sits in its terms' content license and its privacy policy's use section. What to search for, and what Sume's say.
- Java HttpClient timeout: no default, so set two of them
Java's HttpClient has no request timeout unless you set one: connectTimeout on the client, timeout on each request, and HttpTimeoutException.
Written by Sume