App Logo
instagram.com

Create Instagram reel

Publish an Instagram reel from a video URL (fetched in-browser, max 25MB) or a local mp4 path (video_path, no size limit, needs a CLI-run device). Injects it into the composer (web posts videos as reels), accepts the default cover, and drives New post → reel notice → crop → edit → caption → Share. Confirms via the 'Reel shared' UI. Supersedes create_reel_from_file.

Input

caption optional

Reel caption; empty for none. Max 2200 chars.

Default: ""
video_url optional

Direct URL of the mp4 to post as a reel, fetched by the browser itself (so it works on devices with no outbound network of their own). Capped at 25MB. THIS IS ALSO HOW TO POST A LOCAL FILE on an extension-paired device: serve it over localhost and pass that URL — `python3 -m http.server 8765 --bind 127.0.0.1` in the file's directory, then video_url=http://127.0.0.1:8765/clip.mp4. Verified: a 2.8MB local mp4 published that way on a device where video_path is refused.

video_path optional

Path to a local mp4, attached straight from disk via CDP — nothing encoded, no size ceiling. Resolved on the machine RUNNING THE BROWSER, and only works on a device whose browser PERMITS DOM.setFileInputFiles. An extension-paired browser does NOT: it refuses with "Not allowed", and no route attaches a local file directly there (builtins.uploadFile with a format:file input is the same CDP call underneath). Prefer the localhost recipe on video_url, which needs no special device. Absolute paths only. Takes precedence over video_url.

Output

url required
shared required
pk optional
code optional
caption optional
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.

Start building not clicking