Media upload
Upload images and video with social0 upload, get media IDs, and attach them to publish or schedule.
Media must be uploaded through Social0 before you can attach it to a post. The CLI runs the same presign → PUT → confirm flow as the REST API.
Upload
social0 upload ./hero.png
social0 upload ./clip.mp4 ./thumb.jpg
social0 upload ./images/*
social0 upload ./hero.png --jsonReturns a media ID (UUID) for each file. Copy the ID into -m / --media on publish or schedule.
Supported types
The CLI infers MIME from the file extension:
| Extension | MIME |
|---|---|
.jpg, .jpeg | image/jpeg |
.png | image/png |
.gif | image/gif |
.webp | image/webp |
.mp4 | video/mp4 |
.mov | video/quicktime |
.webm | video/webm |
Common picks: JPEG, PNG, MP4, MOV. Very large files may hit plan or platform limits — see Uploads and media troubleshooting.
Image → publish
social0 upload ./hero.png --json
# → copy "id" from JSON
social0 publish -c "New look 👀" -p instagram -m <media-uuid>Short form with table output:
social0 upload ./hero.png
social0 publish -c "New look" -p instagram linkedin -m abc12345-...Video → publish
social0 upload ./reel.mp4 --json
social0 publish -c "Behind the scenes" -p instagram tiktok -m <media-uuid>
social0 status <tracking-id> --watchAlways poll social0 status after video or multi-platform publishes.
Multiple media
social0 upload ./a.png ./b.png
social0 publish -c "Carousel" -p instagram -m <id-1> <id-2>Markdown front matter
---
platforms:
- instagram
media:
- abc12345-6789-...
---
Caption goes heresocial0 publish post.mdUpload first, paste the media UUID into front matter.
JSON / automation
social0 upload ./hero.png --json
# [{"filename":"hero.png","id":"…","url":"https://cdn…"}]Pipe into scripts or CI — use the id field, not the CDN URL, in publish calls.
What not to do
- Do not paste Google Drive / Dropbox share links as
-m— pass Social0 media IDs only. - Do not skip upload for platforms that require media (e.g. YouTube needs video).