# How to schedule campaign posts with images using the DunSocial CLI > Upload an approved campaign image, schedule final copy to real account IDs, and verify the result in the shared DunSocial calendar. - Published: 2026-08-06 - Last updated: 2026-08-06 - Author: DunSocial - Topics: cli, how-to --- This workflow is for final assets and final copy. Keeping upload, scheduling and verification as separate steps makes it easier to catch a wrong file or account. Use the app when the campaign is still changing. Use the CLI when operations have become stable enough to describe exactly. Search phrases: schedule social posts with images CLI, DunSocial media upload, marketing campaign command line, social media scheduling automation, dun media upload. ## What you will do - Upload an approved image to the workspace gallery. - Schedule it with final copy and an explicit time. - Verify the calendar entry and preserve the post ID. ## Before you start - Node.js 20 or newer and the DunSocial CLI installed with `npm install -g dunsocial`. - A selected workspace and the DunSocial account IDs returned by `dun accounts list`. - Browser login for a laptop, or a workspace-bound token stored in a secret manager for automation. - A platform-compatible image and approved alt text where the destination supports it. ## Step by step ### 1. Check the queue and account IDs Confirm there is space around the intended campaign time. ``` dun workspace current dun accounts list dun posts list --status scheduled ``` ### 2. Upload the image Use a clear approved filename and copy the returned media asset ID. ``` dun media upload ./approved-campaign-image.png --alt "Product dashboard showing the new campaign view" ``` ### 3. Schedule the post Use an ISO timestamp with a timezone offset. ``` dun posts schedule \ --text "Final approved campaign copy" \ --accounts LINKEDIN_ACCOUNT_ID \ --media MEDIA_ASSET_ID \ --at 2026-08-20T10:00:00+05:30 ``` ### 4. Verify in both interfaces Run the scheduled list, then open the DunSocial preview to confirm crop, copy, link and time. ``` dun posts list --status scheduled --json ``` ## Check before you finish - `dun workspace current` shows the intended workspace before a write command. - The command uses DunSocial account IDs rather than social @handles. - The new item appears in DunSocial with the expected CLI source, copy and time. ## Where to go next Keep the returned post ID in the campaign record so a timing change becomes a reschedule, not a duplicate post. --- ## About this document This is the Markdown representation of https://www.dunsocial.com/blog/schedule-a-social-media-campaign-with-images-using-the-dunsocial-cli. The HTML version of the same page is at the same URL. You can also request Markdown from any page by sending `Accept: text/markdown`. Machine-readable summary of the whole site: https://www.dunsocial.com/llms.txt ## Company - Product: DunSocial, https://www.dunsocial.com - Legal entity: THISUX PRIVATE LIMITED, Chennai, Tamil Nadu, India - Support: support@dunsocial.com - Open the app: https://app.dunsocial.com/login