Skip to content

How-to

Schedule social media posts via API

Schedule social media posts via API with one authenticated POST /v1/posts call: a caption, the accounts to fan out to, and when it should go live. Here's the whole path from API key to a confirmed publish.

API hub

1. Get an API key#

In the Agency Console, open Settings → Developer and create a key (Owner or Manager only). Give it the posts.compose scope at minimum — a token can never do more than your own role allows, and posts.compose is what POST /v1/posts checks. The full secret is shown once.

2. Build the request to schedule social media posts via the API#

A post needs a clientId (which workspace client it's for), content (the caption), targets (which connected accounts to fan out to), and a schedule. Attach media by id — upload or import it first, then reference the returned mediaIds.

3. Schedule it#

bash
curl -X POST https://api.skedcast.com/v1/posts \
  -H "Authorization: Bearer sked_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "clientId": "c_9f2a...",
    "content": "Our Q4 roadmap is live.",
    "mediaIds": ["m_71bd..."],
    "targets": { "mode": "accounts", "accountIds": ["a_44e0..."] },
    "schedule": { "type": "at", "at": "2026-10-01T09:00:00" }
  }'
POST /v1/posts — Idempotency-Key required: a retry with the same key replays the first result instead of creating a second post.
json
{
  "data": {
    "id": "p_3a91...",
    "status": "scheduled",
    "targets": [
      { "id": "pt_1c7e...", "platform": "instagram", "status": "scheduled" }
    ]
  },
  "meta": { "correlationId": "c-9f3a..." }
}
Response — the single-resource envelope.

Scheduling to more than one platform at once#

One content fans out to every account named in targets.accountIds, across however many platforms they belong to — that's the compose-once model. A platform that needs a field the caption can't carry (YouTube's title, Pinterest's board, TikTok's privacy level, a pre-2026-09-05 Telegram bot's chat id) takes it in that variant's overrides — see the per-platform pages below for the exact field.

Scheduling many posts in one call#

POST /v1/posts/bulk accepts up to 50 posts in a single request — each array item is exactly the same body as a single POST /v1/posts call — and returns per-item results, so one malformed row in a batch doesn't fail the other 49.

Checking what happened#

GET /v1/post-targets/:id returns the current status plus, when it's not simply published, error (human-readable), statusReason (machine-readable — e.g. media-preparing, platform-rate-limit), and retryAt. Once published, externalId and permalink point at the live post — see each platform's page for exactly when permalink is available immediately vs. resolved on read.

  • Poll GET /v1/post-targets/:id if you need an immediate one-off answer.
  • Subscribe to target.published / target.failed webhooks to avoid polling entirely — see the webhooks overview.
apihow-toscheduling

FAQ

What's the minimum required to schedule a post via API?
`clientId`, `content`, `targets` (at least one connected account), and `schedule`. Media is optional unless the platform requires it.
Can I schedule to multiple platforms in one API call?
Yes — one `POST /v1/posts` call fans the same caption out to every account named in `targets.accountIds`, whatever platforms they belong to. Platform-specific fields go in that variant's `overrides`.
How do I schedule many posts at once via API?
`POST /v1/posts/bulk` takes up to 50 posts in one call, each item shaped exactly like a single `POST /v1/posts` body, with per-item results.
Is there a dedicated social media post scheduler API endpoint?
Yes — `POST /v1/posts` is that endpoint: one authenticated call schedules a post to any connected platform, with `POST /v1/posts/bulk` for scheduling many at once.

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.