Managing Posts
Creating posts
Section titled “Creating posts”nadia post schedules, publishes or drafts a post on one or more channels.
Local media are uploaded first.
nadia post \ -i "$IG" \ -s 2026-10-02T09:00:00+02:00 \ -c "Three places in Malta" \ -m ./photo.jpg| Flag | Description |
|---|---|
-i, --integrations |
Channel ids, comma-separated (see nadia channels) |
-s, --date |
Publication date, ISO 8601 (not needed with -t now) |
-t, --type |
schedule (default), now or draft |
-c, --content |
Text, or @file to read it from a file; repeat -c for a thread |
-m, --media |
Media of the -c before it, comma-separated; local files are uploaded, URLs used as they are |
--settings |
Provider settings, as JSON or @file, applied to every channel |
-d, --delay |
Delay between the comments of a thread, in milliseconds |
Draft, or now
Section titled “Draft, or now”nadia post -t draft -i "$IG" -s 2026-10-02T09:00:00+02:00 -c "Review this first" -m ./photo.jpgnadia post -t now -i "$IG" -c "Live" -m ./photo.jpgThreads
Section titled “Threads”Every -m belongs to the -c typed before it, so a thread keeps its images:
nadia post -i "$THREADS" -s 2026-10-02T09:00:00+02:00 \ -c "1/3 — the rent" -m ./rent.png \ -c "2/3 — the paperwork" -m ./forms.png \ -c "3/3 — the weather" \ -d 2000Several channels
Section titled “Several channels”nadia post -i "$IG,$TIKTOK" -s 2026-10-02T09:00:00+02:00 -c "Same video everywhere" -m ./reel.mp4--settings applies to every channel. When they need different settings or
different text, see the full body below.
The full body
Section titled “The full body”For anything post does not cover — a different text per channel, tags,
short links — send the whole request of
Create a post to the generated command:
nadia create-post --body @post.json{ "type": "schedule", "date": "2026-10-02T07:00:00.000Z", "shortLink": false, "tags": [], "posts": [ { "integration": { "id": "instagram-id" }, "value": [{ "content": "Instagram version, with hashtags.", "image": [] }], "settings": { "__type": "instagram-standalone", "post_type": "post" } }, { "integration": { "id": "tiktok-id" }, "value": [{ "content": "Shorter TikTok version.", "image": [] }], "settings": { "__type": "tiktok", "content_posting_method": "DIRECT_POST", "privacy_level": "PUBLIC_TO_EVERYONE" } } ]}Listing posts
Section titled “Listing posts”nadia posts # a week back, four weeks aheadnadia posts --from 2026-10-01 --to 2026-10-31 # a date rangenadia posts --channel "$IG" # one channelnadia posts --group "$GROUP" # one groupnadia find-slot <channel-id> gives the next free slot in a channel’s
schedule.
Pausing and resuming
Section titled “Pausing and resuming”Move a post between draft and schedule without changing its date:
nadia change-post-status <post-id> --status draftnadia change-post-status <post-id> --status schedule--status scheduleputs a draft back in the publishing queue, to go out at its stored date.--status drafttakes a scheduled post out of the queue and stops any running publication, so it will not go out.
Deleting posts
Section titled “Deleting posts”nadia delete-post <post-id> # the post and everything published with itnadia delete-post-group <group> # the whole publication groupConnecting a post to what was published
Section titled “Connecting a post to what was published”Some providers do not return the published post’s id (TikTok in inbox mode,
for instance): the post’s releaseId is then "missing", and its analytics
have nothing to read. List what the provider has published recently, and
record the right one:
# 1. Posts without a release idnadia posts | jq '.posts[] | select(.releaseId == "missing") | {id, content}'
# 2. What the provider published recentlynadia list-missing-media <post-id>
# 3. Record the right onenadia set-post-release-id <post-id> --release-id 7321456789012345678
# 4. The post now has analyticsnadia get-post-analytics <post-id> --date 7list-missing-media returns { id, url } items, url being the thumbnail.