Schedule and publish
Schedule posts, publish immediately, and post X/Twitter threads from the DunSocial CLI, plus validate a post's character limits before you enqueue it.
Needs auth and a workspace. Use account ids from dun accounts list.
Validate before you enqueue
dun posts validate calls POST /api/posts/validate — the same character-limit and platform-metadata checks as schedule/publish, with no writes. Reddit accounts still get the extra live flair/requirements check afterward.
dun posts validate \
--text "Shipping something small today." \
--accounts ACCOUNT_ID \
--jsonUse --meta when the accounts include Reddit, Instagram, Pinterest, TikTok, Discord, or Slack. Instagram format is required (feed_image, carousel, reel, or story) — there is no default. Instagram feed/carousel/story images may be JPEG, PNG, GIF, or WebP; non-JPEG stills convert to JPEG at publish. Discord requires {"discord":{"channelId":"..."}} from dun discord channels. Slack requires {"slack":{"channelId":"..."}} from dun slack channels.
Schedule a post
Pass either --in (relative) or --at (ISO time), not both.
dun posts schedule \
--text "Hello from DunSocial" \
--accounts ACCOUNT_ID \
--in 1hAbsolute time:
dun posts schedule \
--text "Hello from DunSocial" \
--accounts ACCOUNT_ID \
--at 2026-08-01T15:00:00Z--in accepts values like 30m, 2h, 1d, 1w (and longer forms like minutes, hours).
Multiple accounts (comma-separated):
dun posts schedule --text "…" --accounts ACC1,ACC2 --in 30mWith media (upload first — see Media):
dun posts schedule \
--text "New shot" \
--accounts ACCOUNT_ID \
--media ASSET_ID \
--in 30mPlatform-specific options go in --meta as JSON:
dun posts schedule \
--text "Check this pin" \
--accounts PINTEREST_ACCOUNT_ID \
--media ASSET_ID \
--meta '{"pinterest":{"boardId":"BOARD_ID","title":"Title"}}' \
--in 1hPublish now
dun posts publish \
--text "Hello from DunSocial" \
--accounts ACCOUNT_IDOptional --natural (natural posting). Alias: publish-now.
X threads
Provide a JSON file (array of tweets, or { "tweets": […] }), or split --text with ||.
# thread.json → [ {"content":"First"}, {"content":"Second"} ]
dun posts schedule-thread \
--account X_ACCOUNT_ID \
--file ./thread.json \
--in 2h
dun posts publish-thread \
--account X_ACCOUNT_ID \
--file ./thread.jsonThreads need at least 2 tweets. Use one X account id (--account).
Flags cheat sheet
| Flag | Purpose |
|---|---|
--text / -t |
Post content |
--accounts / -a |
Social account ids |
--in / --at |
When to schedule |
--media |
Media asset ids |
--meta |
Platform metadata JSON |
--natural |
Natural posting (publish) |
--json |
Machine-readable output |
Posts created from the CLI show a CLI source badge in the app.