App Logo
instagram.com

Create Instagram reel

Automatically create Instagram reel on instagram.com. Publish an Instagram reel from an attached mp4 file or a video URL (fetched in-browser, max 25MB; a local file can be served over localhost). Accepts the default cover and confirms the reel was shared, including the caption that was actually applied. dry_run stops just before Share.

Input

caption optional

Reel caption; empty for none. Max 2200 chars.

Default: ""
dry_run optional

When true, the whole flow runs — the video is fetched and attached, the crop and edit steps are passed, the cover is accepted and the caption typed — and then the run stops on the step before Share. Nothing is published: shared comes back false, code/url are null and dry_run is true. Use it to verify a video and caption are accepted without spending a real, irreversible public reel.

video_url optional

Direct URL of the mp4 to post as a reel; fetched by the browser and capped at 25MB because the bytes cross the browser boundary in one piece. To post a local file, serve it over localhost (e.g. `python3 -m http.server 8765 --bind 127.0.0.1` in its directory) and pass that URL, or use the `attachment` input, which has no such cap.

attachment optional

The mp4 to post, bound through the platform's own file channel and handed straight to the composer's file input. Preferred over video_url: it carries the bytes outside the argument payload, is not subject to the 25MB video_url ceiling, and works on every device.

Output

url required

Permalink of the new reel. Null on a dry run, where nothing was published.

shared required

True when the reel was actually published. Always false on a dry run.

caption_applied required

True when a caption was requested and Instagram recorded it; false when one was requested but the published reel carries none. Always true when no caption was requested. Always false on a dry run, where Instagram recorded nothing.

pk optional

Media pk. Null on a dry run.

code optional

Shortcode of the new reel. Null on a dry run, where nothing was published.

caption optional

The caption Instagram actually recorded on the published reel (read back after publish), NOT an echo of the input. Empty when none was requested, none landed, or the run was a dry run.

dry_run optional

True when this run stopped before Share and published nothing. The video was still attached and the caption still typed — only the final publish was skipped.

video_bytes optional

Size in bytes of the video injected into the composer. null for video_path, where the browser opens the file itself and the bytes never cross the driver boundary.

FAQ

Publish an Instagram reel from an attached mp4 file or a video URL (fetched in-browser, max 25MB; a local file can be served over localhost). Accepts the default cover and confirms the reel was shared, including the caption that was actually applied. dry_run stops just before Share.
Ask an AI agent connected to Reduck to run reduck/instagram.com/create_reel, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/create_reel
You do not need one. "Create Instagram reel" drives the real instagram.com pages in a browser, so it works whether or not instagram.com offers an API for this.
Optional: caption, dry_run, video_url, attachment.
It returns pk, url, code, shared, caption, dry_run, video_bytes, caption_applied.
Yes. It acts as you on instagram.com: on your own Chrome it reuses your session, and on a Reduck-hosted browser it loads the instagram.com cookies saved by the Reduck extension.
It makes changes on instagram.com, like sending, posting, booking or buying something.
Ask an AI agent connected to Reduck to run reduck/instagram.com/create_reel, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/create_reel
It is part of Reduck's official curated catalogue.

Start building not clicking