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.

4 min readSume
All posts

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?

From Meta's content publishing guide, read 2026-09-29.
CaseWhat Meta says
Where to set itWhen creating a media container
CarouselSet it only on the carousel container; setting it on a carousel child results in an error
Login typesAvailable to Instagram API with Facebook Login and Instagram Login
Reels containermedia_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

All Developers posts

Written by Sume