Skip to content

Media Upload

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.

Terminal window
nadia upload ./photo.jpg # a local file
nadia upload https://cdn.example/a.jpg # a URL, imported into the library

Both return the file in your media library; its path is what goes in a post:

{
"id": "img-123",
"path": "https://…/your-file.jpg"
}
Terminal window
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"}'

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.

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.