Scheduling
Schedule a post for a future time in any IANA time zone; credits are reserved when it is accepted.
Create a post with scheduledFor instead of publishNow:
curl -s -X POST https://api.betterpost.dev/v1/posts \
-H "x-access-key: $BETTERPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Doors open at 9",
"platforms": [
{ "platform": "twitter", "accountId": "acc_2x9c4v7b1n8m3k5j0h6g2f4d" },
{ "platform": "linkedin", "accountId": "acc_5l1n7k3j9h2g8f4d6s0a1q3w" }
],
"scheduledFor": "2026-11-03T09:00:00",
"timezone": "America/New_York"
}'{
"success": true,
"status": "scheduled",
"postId": "post_8f3k2m9q1x7v4n6b0c5d2a1z",
"scheduledFor": "2026-11-03T14:00:00.000Z",
"platforms": [
{ "platform": "twitter", "accountId": "acc_2x9c4v7b1n8m3k5j0h6g2f4d", "success": true },
{ "platform": "linkedin", "accountId": "acc_5l1n7k3j9h2g8f4d6s0a1q3w", "success": true }
]
}scheduledFor is an ISO 8601 date-time and must include a time (2026-11-03T09:00:00).timezone (an IANA name such as Europe/Berlin; default UTC).
Times that fall in a daylight-saving gap move forward; ambiguous times take the earlier instant.Z or an offset (2026-11-03T14:00:00Z, 2026-11-03T09:00:00-05:00), the time is absolute and
timezone is only stored.400 scheduled_in_past.post.scheduled webhook is sent right away.post.published, post.partial or post.failed webhook follows.Manage scheduled posts with list, edit, reschedule and cancel.