Skip to content

API

X (Twitter) scheduling API

SkedCast's REST API schedules text, image, video, GIF, poll, and thread to X (Twitter) with one authenticated POST call. The request has the same shape as for every other connected platform, plus any fields specific to X (Twitter).

All platforms

Scheduling to X (Twitter) through SkedCast's API#

SkedCast's /v1 REST API schedules text, image, video, GIF, poll, and thread to X (Twitter) the same way it does every other platform: one POST https://api.skedcast.com/v1/posts call with a content caption and a targets block naming the connected accounts.

You need an X account connected through X's login, connected once through the console or through a connect link that POST /v1/clients/{id}/connect-invites creates.

The request is one contract for every connected platform. The fields that are specific to X (Twitter) are listed below.

Example: schedule a post to X (Twitter)#

json
{
  "clientId": "00000000-0000-4000-8000-000000000001",
  "content": "New: scheduled threads. Details in the replies.",
  "targets": { "mode": "accounts", "accountIds": ["00000000-0000-4000-8000-000000000002"] },
  "schedule": { "type": "at", "scheduledAt": "2030-01-15T15:00:00Z" }
}
POST https://api.skedcast.com/v1/posts — send Authorization: Bearer sked_live_… and an Idempotency-Key header. Replace the example ids with your own.

X (Twitter) facts#

FactValue
Max caption length280 characters
Media per postup to 4 images, or one video/GIF, per post; threads chain multiple posts.
Native platform schedulingNo. SkedCast holds the timer and publishes at the scheduled time.
SkedCast's default pacing100 / day, with at least 5 min between posts, per account. This is SkedCast's per-account pacing, not X (Twitter)'s own published limit. See the rate limits reference.
Published-post URL (permalink)https://twitter.com/i/web/status/{id}, always returned once the post is published.

Reading status and results#

GET https://api.skedcast.com/v1/post-targets/{id} returns the X (Twitter) target's status (for example scheduled, on_hold, published, failed or missed). Once the post is published, externalId and permalink point at the live post (see the table above).

  • on_hold: holdReason says why (pacing, a platform limit, media still processing, your plan, or a channel that needs reconnecting) and retryAt says when the next try is.
  • missed: the scheduled time passed while the post waited. outcomeReason says why; reschedule it.
  • failed: failureReason says why. When the post may already be live, outcomeReason is delivery_unconfirmed: check the account, because a retry is refused.
  • requiredAction says what you must do (reconnect_channel, change_plan, contact_support, reschedule, retry or check_platform), or is null when nothing is needed.
  • Instead of polling, subscribe to the target.published and target.failed webhooks (one per destination; post.published and post.failed report the whole post). See the webhooks reference below.
  • Or connect an MCP client and ask an agent to check. See the MCP hub below.
X (Twitter)apischedulingrest

FAQ

Can I schedule an X thread through the API?
Yes. Add a thread object with 2 to 50 segments to POST /v1/posts; each segment has a content text and optional mediaIds. SkedCast publishes the segments as a reply chain on X and Threads. Other platforms in the same post receive only the first segment.

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.