Schedule from your terminal: introducing the Schedulin CLI, SDKs, and public API

Troy Underwood
Troy Underwood

Scheduling is the kind of thing people want to automate. You've already got a content pipeline — a repo of generated clips, a Notion board, an internal tool, an AI agent writing captions — and the last step is always the same: get it onto the platforms, at the right time, without copy-pasting into a dashboard.

Today that last step is an API call. We're launching the Schedulin developer platform: a public REST API, official SDKs for five languages, and a command-line tool you can run with a single npx command. Anything you can do in the dashboard — connect channels, draft and schedule posts, upload media, pull analytics — you can now do from code.

The CLI: scheduling in one command

The fastest way to try it is the CLI. No install required:

npx @schedulin/cli posts create \
  --social-account-id <id> \
  --caption "Shipped a new feature šŸš€" \
  --media https://cdn.example.com/launch.jpg \
  --action schedule \
  --scheduled-at 2026-07-01T15:00:00Z

Store your API key once and it's there for every command:

npx @schedulin/cli config set api-key sk_live_...
npx @schedulin/cli accounts list

It's built to be safe inside scripts. posts create defaults to a draft, so nothing goes out unless you ask it to. Publishing and deleting prompt for confirmation — and in a non-interactive context (a CI job, a cron task) they refuse to run unless you pass --yes. Add --json to any command to pipe clean output straight into jq:

# every connected channel's id
npx @schedulin/cli accounts list --json | jq -r '.data[].id'

Install it globally (npm i -g @schedulin/cli) and it's just schedulin.

SDKs for five languages

If you'd rather call the API from your application, we generate official, typed SDKs from the same OpenAPI spec that powers the docs — so they never drift from the real API:

  • TypeScript — npm i @schedulin/sdk
  • Python — pip install schedulin
  • Go
  • PHP
  • Ruby

A typed call looks the same everywhere. In TypeScript:

import { SchedulinClient } from "@schedulin/sdk";

const client = new SchedulinClient({ apiKey: process.env.SCHEDULIN_API_KEY });

const accounts = await client.socialAccounts.list();
await client.posts.create({
  socialAccountId: accounts.data[0].id,
  caption: "Hello from the SDK šŸ‘‹",
  media: [],
  action: "draft",
});

A REST API built for humans and agents

Under both the CLI and the SDKs is a plain REST API at https://api.schedulin.app, versioned under /v0. It's JSON over HTTPS, authenticated with a workspace-scoped key, and every endpoint is described in a machine-readable OpenAPI reference — which means it's just as easy to point an AI agent at it as it is to write a client by hand.

It's the same surface the dashboard uses: connect and manage channels, draft / schedule / queue / publish posts, upload media with presigned URLs, organize with tags, and read per-post analytics.

What you can build

  • Auto-publish from your pipeline — when a render finishes or a doc is approved, schedule it.
  • CI and cron jobs — a schedulin posts create step in a workflow, gated by --yes.
  • AI agents — hand an agent the OpenAPI spec and let it draft and schedule on your behalf.
  • Internal tools — wire scheduling into the dashboard your team already uses.

Get started

Grab an API key in your workspace settings, then head to the docs:

  • Developer docs — guides, examples, and the full API reference.
  • CLI guide — install, auth, and every command.
  • Quick Start — your first authenticated request.

We'd love to see what you build on it.