Creator OS ships a CLI for scheduling from a terminal, and the scheduling path is worth learning if you post often. The CLI is one of several ways to use Creator OS, which is one place to publish, schedule, reply and read analytics on Instagram, TikTok, YouTube, X, LinkedIn, Facebook and Threads, plus Skool communities, a WordPress blog, and paid ads as an add-on. You can also work from the web app, the iOS app, the REST API, or a hosted MCP server. This post is only about the terminal workflow, so if you mostly use the web app you can skim it and come back later.
your shell
|
v
@creatoros/cli -----> Creator OS API
| |
| v
| network rules
v (Reels, Shorts,
local validation TikTok flags)
caption length, media
|
v
posts:create -> scheduled / draft / published
missing_platforms reported back
What the Creator OS CLI Actually Does
The CLI is the terminal side of Creator OS. Everything you can do in the scheduling part of the web app, you can do from a shell. That matters when you have ten posts to queue and a file full of captions, because a loop over that file beats clicking through a calendar ten times.
The CLI is included in every plan, including the $19.99/month Creator plan, so there is nothing extra to buy. Install it and confirm your API key works:
npx @creatoros/cli@latest auth:check
Then see what this machine can reach:
creatoros profiles:list
creatoros accounts:list
If you use the Claude Code skills that ship with the CLI, install or refresh them with:
npx @creatoros/cli@latest init
That command installs the skills, including post-shortform, schedule-posts and post-everywhere. Later, when you want newer versions, run creatoros sync. It updates skills without overwriting files you edited yourself; your changes stay put and anything new lands as a .new file next to the original so you can diff it.
For the full command list, see the CLI docs. Everything below is the everyday scheduling loop.
Scheduling a Post Without Uploading Twice
Say you have a short video and you want it on Instagram and TikTok, scheduled for Thursday morning in your own timezone.
Upload the file once:
creatoros media:upload ./clip.mp4
You get back a med_ id. That id is reusable on every platform, so you never upload the same file twice, even when the post goes to five networks. Then check the caption against the networks you plan to hit:
creatoros validate:post-length --text "New episode is up."
Only then create the post:
creatoros posts:create --text "New episode is up." \
--platforms instagram,tiktok \
--media med_abc123 \
--scheduledAt 2026-10-02T09:00:00Z --timezone America/Toronto
If you want a different caption per platform, run the command once per network with --accounts instead of --platforms. Or use the REST API advanced form, where platforms are objects with their own content and options, so one request carries per-network text. The CLI scheduling walkthrough goes deeper on the per-platform shape.
For a larger batch, keep a JSON file and push it all at once:
creatoros posts:bulk-upload --file october.json --dryRun
The --dryRun flag is the part worth adopting. It tells you what would happen before anything is created, which is the cheapest way to catch a typo in a timezone or a media id that no longer exists. Drop the flag when the dry run looks right. If you are queueing a full month in one sitting, the month of content guide pairs well with this.
You can also ask Creator OS when to post in the first place:
creatoros analytics:best-time --platform instagram
Feed that output into --scheduledAt instead of guessing. If your batch includes Stories, the Instagram Stories guide covers the Story-specific options.
What Happens When One Network Refuses
The failure case is where scheduling tools get annoying. You queue a post for four networks, one of them is not connected, and you cannot tell whether anything went out.
In Creator OS, if you name a network in a post that is not connected, it comes back in missing_platforms and the rest of the post still goes out. So a five-network post with one missing connection becomes a four-network post plus a clear note about the fifth.
Errors use one shape everywhere:
{ error: { code, message, status } }
Your scripts can branch on code rather than parsing error strings, which turns a retry loop into a few lines instead of a pile of conditionals. Combined with the local validation step, most failures surface before the request is even sent. If a post fails after it was attempted, retry it without rebuilding it:
creatoros posts:retry post_xyz789
The ids are opaque typed tokens, like acc_, post_ and med_, so you can tell what kind of thing you are holding just by looking at it.
Running the CLI Next to the API and an Agent
The CLI and the REST API are the same surface underneath. Both write to the same workspace, pinned by your API key, and one workspace’s key cannot post to another workspace’s accounts. You do not get a second copy of your data or a separate connection to maintain.
Pull your numbers from wherever you prefer:
creatoros analytics:posts --platform tiktok --sortBy engagement --limit 20
creatoros analytics:daily --from 2026-09-01 --to 2026-09-30
Per-post analytics, daily account metrics, follower stats and best time to post all work across connected platforms. If you want to see what the analytics endpoints return in detail, the analytics API post walks the shapes.
If you would rather have an AI agent drive things, the hosted MCP server at https://mcp.creatoros.ca/mcp exposes the same operations as tools like create_post, get_post_analytics, get_best_time_to_post and check_caption_length. Connect it from Claude, ChatGPT, Claude Code, Cursor, Windsurf or VS Code. Read-only connections only see read tools, and the API refuses writes from them, so you can hand an agent a safe view of your accounts. Destructive tools are marked so the AI app asks before it does anything permanent. Setup detail is at the MCP docs.
The two ways of working are not in conflict. Some people script releases in a shell because a loop over a file of captions is faster than clicking, then let a chat app handle replies during the day.
When to Use the Terminal Instead of a Dashboard
A social media scheduling dashboard is the right tool for a lot of work. If you post occasionally and want a calendar view, clicking is fine. The terminal path is for the cases where clicking is the bottleneck:
- You are scheduling more than a handful of posts a week and want fewer round trips.
- You run cron jobs or scripts and want errors you can branch on.
- You want an AI agent to own replies and automations while you own the calendar.
- You publish to several networks at once and want to know immediately when one is not connected.
Creator OS ships a hosted MCP server and a CLI so an AI agent can run your accounts, which is what makes the agent path possible without you writing glue code. If that is the part you care about, the Creator OS vs Hootsuite comparison and the Creator OS vs Buffer comparison cover how the surfaces differ from a scheduling dashboard.
If you only ever post from your phone, skip all of this. The web app and iOS app cover that, and nothing here requires you to open a terminal.
Get Started With Creator OS
The Creator plan is $19.99/month or $59.99/year and covers up to 8 connected accounts: seven socials plus Skool. API keys, the MCP server, the CLI and the agent skills are included in every plan, so this workflow is available to anyone on it. Agency plans start at $49/month for five sets of socials, and YouTube network plans start at $19.99/month for five channels. The ads add-on is $19.99/month on any plan with no percentage of ad spend.
Sign up at creatoros.ca/sign-up, connect an account, then run creatoros accounts:list to confirm the CLI sees it. From there, the docs cover the base URL, endpoints and the command reference, and the CLI docs have the full flag list for posts:create.
If you would rather watch than read, the walkthroughs on the KevBuildsApps YouTube channel show the terminal workflow end to end, and the launch video covers the open-source tools that pair with it.