How publishing works
Publishing is a three-step flow:- Create a media container with your media URL and caption.
- Poll the container until its
status_codeisFINISHED.
Images usually finish immediately. Videos take longer, so poll about once per minute. - Publish the container.
Containers expire after 24 hours. Meta has no scheduled publishing, so publish when you want the post live.
Some hosts block Meta’s fetcher; that surfaces as a misleading
Only photo or video can be accepted as media type error. If you hit it, move the file to a host that serves it to any client.Videos should be H.264 + AAC in an MP4 container. Other codecs pass the URL check but fail processing with container status
ERROR.
Media requirements
Optional fields
Add these to the container create call (step 1).Trial reels
A trial reel goes out to people who don’t follow you, so you can test a hook before it reaches your followers.Add
trial_params to a reel container. It only works with media_type=REELS.
Poll and publish the container exactly as you would for a normal reel.
Meta gives you no way to read back whether an existing reel is a trial reel, so track that on your side if you need it. With MCP, ask for a trial reel and say who graduates it. The
publish_instagram_media tool takes trialParams.graduationStrategy as manual or automatic.
Publishing quota
Meta allows 50 publishes per rolling 24 hours, currently being raised to 100.Check your live quota and usage:
Publish with the CLI
The CLI runs the whole container → poll → publish flow and prints the permalink.Publish with MCP
Ask your agent to publish. Thepublish_instagram_media tool handles the full flow and returns the media ID and permalink.