Skip to content
DunSocial Docs

Schedule and publish

Schedule posts, publish now, and post X threads from the terminal.

Needs auth and a workspace. Use account ids from dun accounts list.

Schedule a post

Pass either --in (relative) or --at (ISO time), not both.

dun posts schedule \
--text "Hello from DunSocial" \
--accounts ACCOUNT_ID \
--in 1h

Absolute 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 30m

With media (upload first — see Media):

dun posts schedule \
--text "New shot" \
--accounts ACCOUNT_ID \
--media ASSET_ID \
--in 30m

Platform-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 1h

Publish now

dun posts publish \
--text "Hello from DunSocial" \
--accounts ACCOUNT_ID

Optional --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.json

Threads 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.