Post an Instagram reel
instagram_post_reelPublish an Instagram Reel to a professional account: create the container, wait for processing, and publish. If processing takes too long, resume with the container ID to avoid duplicates.
Instructions
Publish a reel in one call: create the REELS container, wait for processing (reels can take a while), then publish. Preview performs nothing. If processing exceeds the poll budget the result is status=in_progress with a resume_container_id — re-run with apply:true and resumeContainerId to finish (never create a new post). Video duration, codec, and size are validated by Instagram on fetch, not here.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Set true to actually perform this write. Omitted (or false) returns a non-mutating preview of exactly what would happen and calls nothing, unless IG_WRITE_MODE=apply is configured. An explicit false always forces preview. | |
| account | No | Name of the configured account profile to operate as (multi-account). Omit to use the default profile (IG_ACTIVE_PROFILE). | |
| caption | No | Caption text (≤ 2200 characters, ≤ 30 hashtags, ≤ 20 @mentions — counted as a client-side guard). Instagram renders @mentions and #hashtags. | |
| coverUrl | No | Public HTTPS cover image URL for the reel. | |
| videoUrl | No | Public HTTPS video URL for the reel (required unless resuming). Duration, codec, and size are unverifiable before Instagram fetches it. | |
| locationId | No | Instagram location Page id to tag on the post. | |
| shareToFeed | No | Also show the reel in the main feed. | |
| thumbOffset | No | Cover frame offset in milliseconds (used when no coverUrl is given). | |
| resumeContainerId | No | Resume a container from a previous apply that returned status=in_progress: pass its resume_container_id to finish publishing instead of creating a new post (avoids a duplicate). When set, the media inputs are ignored. |