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.

4 min readSume
All posts

A trial Reel is a Reel shared only to non-followers. To publish one through Instagram's API, create a Reel container as usual and add a trial_params object whose graduation_strategy is MANUAL or SS_PERFORMANCE. The strategy says what turns the trial Reel into a normal Reel that followers see.

Everything about Instagram comes from Meta's content publishing guide, read 2026-09-29. Sume has no Instagram connector. Its part is producing several variants of a video, from Bulk runs.

What do MANUAL and SS_PERFORMANCE mean?

From Meta's content publishing guide, read 2026-09-29.
`graduation_strategy`What Meta says
MANUALThe trial Reel can be manually graduated in the native app
SS_PERFORMANCEThe trial Reel is automatically graduated if it performs well

How do I create the container?

Meta's sample sends media_type REELS, a video_url and the trial_params object to the /media edge. As printed, Meta's sample is not valid JSON: it omits commas between fields and uses curly quotation marks. Build the body with a JSON serializer, as below.

curl -X POST "https://graph.instagram.com/v25.0/<IG_USER_ID>/media" \
  -H "Authorization: Bearer $IG_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "media_type": "REELS",
    "video_url": "https://example.com/videos/variant-a.mp4",
    "trial_params": { "graduation_strategy": "MANUAL" }
  }'

How many can I publish per day?

Meta's guide limits an Instagram account to 100 API-published posts within a 24-hour moving period, enforced on POST /<IG_ID>/media_publish, and recommends your app enforce it too. GET /<IG_ID>/content_publishing_limit shows current usage. The carousel section of the same guide says 50 posts per 24 hours, so treat the lower number as the safe one until Meta reconciles them.

How do I know the container is ready?

Query GET /<IG_CONTAINER_ID>?fields=status_code once per minute, for no more than 5 minutes, as Meta recommends. FINISHED means the container and its media object are ready to be published, and IN_PROGRESS means it is still processing. Then call media_publish. A container that is not published within 24 hours returns EXPIRED.

After you publish, request media_product_type rather than media_type to see how the post is classed: Meta says a published Reel returns VIDEO for media_type.

What do I do with a trial Reel that does well?

With MANUAL, graduation happens by hand in the Instagram app, so your publishing job ends at media_publish and someone has to open the app to promote the Reel to followers. With SS_PERFORMANCE, Meta graduates it automatically if it performs well, and its page does not define the threshold. If you need a rule you can state to a client, pick MANUAL.

How do I get several variants to test?

A Sume bulk run queues 1 to 100 Format runs with a concurrency of 1 to 16, and each finished child lists its files in artifacts[] as durable, public media.sume.com URLs. Any of those can be the video_url if the file meets Reels' encoding rules in Instagram Reels video requirements for API uploads. Sizing a batch is covered in Format bulk runs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume