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.

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?
| `graduation_strategy` | What Meta says |
|---|---|
MANUAL | The trial Reel can be manually graduated in the native app |
SS_PERFORMANCE | The 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
- 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.
- 409 job_not_completed: why the result call fails and what to poll
GET /v1/jobs/:id/result answers 409 job_not_completed until the job completes. Poll status for terminal, read failures from the job record, and never resubmit.
Written by Sume