Browse docs
Before you publish#
You need one already-connected account for the platform. Connect it yourself in the Agency Console, or — if a client owns the account — mint a self-serve connect link with POST /clients/:id/connect-invites and send it to them; they authorize from that page without ever getting a SkedCast login.
GET /v1/accounts lists what's connected, with each account's id — that id is what you pass in targets.accountIds below.
Compose and schedule#
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": "Launch day is here 🚀",
"mediaIds": ["<mediaAssetId>"],
"targets": { "mode": "selection", "accountIds": ["<facebookAccountId>"] },
"schedule": { "type": "at", "scheduledAt": "2026-07-01T15:00:00Z" }
}'Publish posts to Facebook: the API fields#
Everything platform-specific goes in one variants entry with "platform": "facebook" and an overrides object. The adapter reads only the keys it declares (below) and ignores the rest — send facebook keys on a facebook variant, nothing more.
With the platform-specific overrides#
{
"clientId": "<clientId>",
"content": "New product drop 📦",
"mediaIds": ["<mediaAssetId>"],
"targets": { "mode": "selection", "accountIds": ["<facebookAccountId>"] },
"variants": [
{ "platform": "facebook", "overrides": { "contentType": "reel" } }
],
"schedule": { "type": "at", "scheduledAt": "2026-07-01T15:00:00Z" }
}Checking the result#
Publishing fans out into one post target per account. GET /post-targets/:id (or GET /posts/:id) reports status, plus externalId (facebook's own post id) and permalink (its public URL) once published. Subscribe to the target.published / target.failed webhooks instead of polling if you can accept inbound HTTP — see the webhooks guide.
FAQ
- Can I schedule a Facebook Reel through the API, not just a feed post?
- Yes — set `variants[].overrides.contentType` to `"reel"` on a facebook variant with a video in `mediaIds`. Omit `contentType` (or set `"feed"`) for an ordinary feed post, or `"story"` for a Story.
- Does the API support Facebook's own native scheduler?
- Yes — set the post-level `scheduleMode` to `"native"` to hand Facebook (and YouTube) targets to the platform's own scheduler instead of SkedCast's managed queue.
- Does the API let me share posts to Facebook, not just schedule them?
- Yes — the same `POST /v1/posts` call that schedules a post can also publish immediately with `schedule: { "type": "now" }`, so you can share to Facebook via the API whether you're scheduling ahead or posting right away.
- Is SkedCast's Facebook integration built on the Graph API?
- Yes — Facebook and Instagram publishing both run on Meta's Graph API (the same Facebook Instagram Graph API Meta documents for both platforms), so scopes, App Review requirements, and rate limits follow Meta's own rules.