Skip to content

Guides

Social media posting API quickstart: publish your first post

This is the fastest path from zero to a scheduled post through the SkedCast API: create a key, confirm a connected account, and send one POST /v1/posts call. Every step below is a real, runnable curl command.

Browse docs

5 min read

1. Create an API key#

In the Agency Console, open Settings → Developer and create a key (Owner or Manager only). Grant it posts.compose and accounts.read at minimum. The secret is shown once — copy it now. Keys look like sked_live_… in production or sked_test_… everywhere else; test keys are NOT sandboxed, they act on the same real workspace.

2. Find an account to post to#

You need at least one already-connected social account. List what's connected and grab an account id:

bash
curl "https://api.skedcast.com/v1/accounts" \
  -H "Authorization: Bearer sked_live_YOUR_KEY"

3. Social media posting API quickstart: publish#

POST /v1/posts with a client id, the account you're targeting, and a schedule. Every mutating request needs an Idempotency-Key — any unique string, a UUID is easiest.

bash
curl -X POST https://api.skedcast.com/v1/posts \
  -H "Authorization: Bearer sked_live_YOUR_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "<clientId>",
    "content": "Hello from the SkedCast API 🚀",
    "mediaIds": [],
    "targets": { "mode": "selection", "accountIds": ["<accountId>"] },
    "schedule": { "type": "at", "scheduledAt": "2026-07-01T15:00:00Z" }
  }'
Schedule a post for a specific time.

Send schedule: { "type": "now" } to publish immediately instead, or "type": "range" with from/to/spreadMinutes to let SkedCast pace a batch across a window (anti-ban jitter). Add media by uploading first — see the media guide — and passing the returned asset id in mediaIds.

4. Confirm it published#

GET /v1/post-targets (or /posts/:id) reports each destination's status, and — once published — the platform's own externalId and public permalink. For anything beyond a one-off script, subscribe to the target.published / target.failed webhooks instead of polling.

bash
curl "https://api.skedcast.com/v1/post-targets?limit=5" \
  -H "Authorization: Bearer sked_live_YOUR_KEY"
apiquickstartpublish

FAQ

Do I need OAuth to try this, or is an API key enough?
An API key is enough for your own scripts and servers — that's what this quickstart uses. Use OAuth 2.1 only when a third-party app or AI agent needs to act on behalf of a separate SkedCast user's workspace.
What's the minimum body POST /posts will accept?
clientId, targets (mode + accountIds), and schedule are required; content defaults to an empty string and mediaIds to an empty array, though in practice you'll always send real caption text.

Ready to broadcast everywhere?

Sign up free — no credit card. You land on the Free plan, and you can start a one-time 7-day Studio trial from your workspace whenever you are ready. Connect your first accounts, import a batch, and watch one post fan out across every platform.