Browse docs
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:
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.
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" }
}'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.
curl "https://api.skedcast.com/v1/post-targets?limit=5" \
-H "Authorization: Bearer sked_live_YOUR_KEY"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.