Guides

Scheduling posts

Add a scheduledAt and the post is queued and fires later. Credits are charged when it publishes — not when you schedule it.

Schedule a post

Add an ISO-8601 UTC timestamp. The post comes back with state: "scheduled".

{
  "text": "Friday recap",
  "accounts": ["acc_123"],
  "scheduledAt": "2026-08-01T09:00:00Z"
}

Timezones — do this right

The API only accepts UTC (the trailing Z). "9am for the user" depends on their timezone, so convert before sending. In JavaScript:

// 9:00am on 1 Aug in the user's timezone → UTC ISO
const local = new Date("2026-08-01T09:00:00");   // parsed in the runtime's TZ
const scheduledAt = local.toISOString();          // e.g. "2026-08-01T08:00:00.000Z" if BST
Sending a local time without converting is the #1 scheduling bug — posts fire an hour off. Always convert to UTC first. (The dashboard composer does this for you.)

Edit or cancel before it fires

While a post is scheduled you can change it or pull it entirely, by id:

ActionEndpoint
Edit the text, media, or timePATCH /v1/posts/{id}
Cancel itDELETE /v1/posts/{id}

What happens at fire time

At the scheduled moment the post moves scheduled → processing → published (or partial / failed). Credits are debited then, only for targets that publish. If a target fails at fire time it's marked failed with an error and costs nothing. Subscribe to webhooks to be notified when a scheduled post fires, without polling.