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 BSTSending 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:
| Action | Endpoint |
|---|---|
| Edit the text, media, or time | PATCH /v1/posts/{id} |
| Cancel it | DELETE /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.