# SkedCast REST API reference

Base URL: https://api.skedcast.com/v1
Authenticate every request with `Authorization: Bearer <API key or OAuth access token>`.

## Operations (64)

- GET https://api.skedcast.com/v1/posts (scope: posts.read) — List posts
- POST https://api.skedcast.com/v1/posts (scope: posts.compose) — Create a post
- POST https://api.skedcast.com/v1/posts/bulk (scope: posts.compose) — Create up to 50 posts in one request
- POST https://api.skedcast.com/v1/posts/preview (scope: posts.compose) — Validate a post without creating it
- POST https://api.skedcast.com/v1/posts/{id}/revise (scope: posts.compose) — Revise a scheduled post
- POST https://api.skedcast.com/v1/posts/{id}/publish (scope: posts.compose) — Publish or schedule a draft
- GET https://api.skedcast.com/v1/posts/{id} (scope: posts.read) — Get a post
- PATCH https://api.skedcast.com/v1/posts/{id} (scope: posts.compose) — Update a draft post
- GET https://api.skedcast.com/v1/posts/{id}/recycle (scope: posts.read) — Get a post's recycle settings
- PUT https://api.skedcast.com/v1/posts/{id}/recycle (scope: posts.compose) — Set a post's recycle settings
- DELETE https://api.skedcast.com/v1/posts/{id}/recycle (scope: posts.compose) — Clear a post's recycle settings
- GET https://api.skedcast.com/v1/post-targets (scope: posts.read) — List post targets
- GET https://api.skedcast.com/v1/post-targets/{id} (scope: posts.read) — Get a post target
- POST https://api.skedcast.com/v1/post-targets/{id}/reschedule (scope: posts.compose) — Reschedule a post target
- POST https://api.skedcast.com/v1/post-targets/{id}/retry (scope: posts.compose) — Retry a post target
- POST https://api.skedcast.com/v1/post-targets/{id}/cancel (scope: posts.compose) — Cancel a post target
- POST https://api.skedcast.com/v1/post-targets/bulk (scope: posts.compose) — Bulk post-target action
- GET https://api.skedcast.com/v1/clients (scope: clients.read) — List clients
- POST https://api.skedcast.com/v1/clients (scope: clients.manage) — Create a client
- GET https://api.skedcast.com/v1/clients/{id} (scope: clients.read) — Get a client
- PATCH https://api.skedcast.com/v1/clients/{id} (scope: clients.manage) — Update a client
- DELETE https://api.skedcast.com/v1/clients/{id} (scope: clients.manage) — Archive a client
- POST https://api.skedcast.com/v1/clients/{id}/connect-invites (scope: accounts.connect) — Mint an account connect link
- GET https://api.skedcast.com/v1/accounts (scope: accounts.read) — List connected accounts
- GET https://api.skedcast.com/v1/accounts/cadence (scope: accounts.read) — Posting-limits overview
- GET https://api.skedcast.com/v1/quota (scope: accounts.read) — Read quota pre-flight
- GET https://api.skedcast.com/v1/accounts/{id} (scope: accounts.read) — Get a connected account
- GET https://api.skedcast.com/v1/accounts/{id}/cadence (scope: accounts.read) — Get an account's posting limits
- GET https://api.skedcast.com/v1/approvals (scope: approvals.read) — List approvals
- GET https://api.skedcast.com/v1/approvals/{id} (scope: approvals.read) — Get an approval
- POST https://api.skedcast.com/v1/approvals/{id}/approve (scope: approvals.decide) — Approve a pending request
- POST https://api.skedcast.com/v1/approvals/{id}/reject (scope: approvals.decide) — Reject a pending request
- POST https://api.skedcast.com/v1/approvals/{id}/request-changes (scope: approvals.decide) — Request changes on a pending request
- GET https://api.skedcast.com/v1/campaigns (scope: campaigns.read) — List campaigns
- POST https://api.skedcast.com/v1/campaigns (scope: campaigns.manage) — Create a campaign
- GET https://api.skedcast.com/v1/campaigns/{id} (scope: campaigns.read) — Get a campaign
- PATCH https://api.skedcast.com/v1/campaigns/{id} (scope: campaigns.manage) — Update a campaign
- DELETE https://api.skedcast.com/v1/campaigns/{id} (scope: campaigns.manage) — Delete a campaign
- POST https://api.skedcast.com/v1/campaigns/{id}/assign (scope: campaigns.manage) — Assign posts to a campaign
- POST https://api.skedcast.com/v1/campaigns/{id}/unassign (scope: campaigns.manage) — Unassign posts from a campaign
- POST https://api.skedcast.com/v1/campaigns/{id}/shift (scope: campaigns.manage) — Shift a campaign's schedule
- GET https://api.skedcast.com/v1/agency (scope: agency.read) — Get the current workspace
- GET https://api.skedcast.com/v1/analytics/overview (scope: analytics.read) — Analytics overview
- GET https://api.skedcast.com/v1/analytics/posts (scope: analytics.read) — Per-post analytics
- GET https://api.skedcast.com/v1/analytics/posts/{id} (scope: analytics.read) — Per-post breakdown
- GET https://api.skedcast.com/v1/analytics/accounts/{id} (scope: analytics.read) — Per-account analytics
- GET https://api.skedcast.com/v1/analytics/clients/{id} (scope: analytics.read) — Per-client analytics
- GET https://api.skedcast.com/v1/reports (scope: reports.read) — List reports
- GET https://api.skedcast.com/v1/reports/{id} (scope: reports.read) — Get a report
- GET https://api.skedcast.com/v1/reports/{id}/exports/{runId} (scope: reports.read) — Download a report run
- GET https://api.skedcast.com/v1/best-times (scope: besttimes.read) — Best-time recommendations
- GET https://api.skedcast.com/v1/media (scope: media.read) — List library assets
- POST https://api.skedcast.com/v1/media (scope: media.manage) — Register an uploaded asset
- GET https://api.skedcast.com/v1/media/{id} (scope: media.read) — Get a library asset
- POST https://api.skedcast.com/v1/media/presign (scope: media.manage) — Presign a direct upload
- POST https://api.skedcast.com/v1/media/import-url (scope: media.manage) — Import an asset from a URL
- GET https://api.skedcast.com/v1/webhooks (scope: webhooks.read) — List webhook endpoints
- POST https://api.skedcast.com/v1/webhooks (scope: webhooks.manage) — Create a webhook endpoint
- GET https://api.skedcast.com/v1/webhooks/{id} (scope: webhooks.read) — Get a webhook endpoint
- PATCH https://api.skedcast.com/v1/webhooks/{id} (scope: webhooks.manage) — Update a webhook endpoint
- DELETE https://api.skedcast.com/v1/webhooks/{id} (scope: webhooks.delete) — Delete a webhook endpoint
- POST https://api.skedcast.com/v1/webhooks/{id}/test (scope: webhooks.manage) — Send a test delivery
- POST https://api.skedcast.com/v1/webhooks/{id}/rotate-secret (scope: webhooks.manage) — Rotate the signing secret
- GET https://api.skedcast.com/v1/webhooks/{id}/deliveries (scope: webhooks.read) — List webhook deliveries

## Machine-readable

- Everything in one file: https://skedcast.com/developers/llms.txt
- OpenAPI 3.1 contract: https://skedcast.com/openapi.json
- MCP server (remote, OAuth 2.1): https://api.skedcast.com/mcp
