Media Upload
Most of the time: nothing to do
Section titled “Most of the time: nothing to do”nadia post -m ./reel.mp4 uploads local files itself before creating the
post. Upload by hand only to reuse a file across several posts, or to bring
in a file that lives at a URL.
Uploading
Section titled “Uploading”nadia upload ./photo.jpg # a local filenadia upload https://cdn.example/a.jpg # a URL, imported into the libraryBoth return the file in your media library; its path is what goes in a
post:
{ "id": "img-123", "path": "https://…/your-file.jpg"}Upload once, post several times
Section titled “Upload once, post several times”VIDEO=$(nadia upload ./video.mp4 | jq -r '.path')
nadia post -i "$IG" -s 2026-10-02T09:00:00+02:00 -c "Reel" -m "$VIDEO" \ --settings '{"post_type":"post"}'
nadia post -i "$TT" -s 2026-10-02T09:00:00+02:00 -c "Video" -m "$VIDEO" \ --settings '{"content_posting_method":"DIRECT_POST","privacy_level":"PUBLIC_TO_EVERYONE"}'Supported file types
Section titled “Supported file types”The type is read from the bytes, not from the extension, and a file that is not one of these is refused.
- Images: JPEG, PNG, GIF, WEBP, AVIF, BMP, TIFF — 10 MB at most. A HEIC or HEIF photo from a phone is converted to JPEG on the way in.
- Videos: MP4 only — 1 GB at most.
- Images: JPEG, PNG, WEBP, GIF.
- Videos: MP4.
500 MB at most by default; the URL has to be reachable from the server without a login (a public URL, or a signed URL that has not expired).
No audio, no documents: the library holds what a post can attach. A video in
another container (MOV, MKV, WEBM…) has to be converted to MP4 first —
Instagram and TikTok take H.264 + AAC. The rules are those of the
Public API uploads, which the CLI calls
(upload-file and upload-from-url); the MCP tools createUploadUrl and
uploadFromUrlTool on the Tools page apply
the same ones.