Scheduling and time zones
scheduledAt is an instant
Section titled “scheduledAt is an instant”scheduledAt is an ISO 8601 date and time with Z or an offset — one moment, wherever you
are.
{ "scheduledAt": "2027-01-23T07:00:00Z" }{ "scheduledAt": "2027-01-23T08:00:00+01:00" }Both of these are the same moment. A time without a zone, like 2027-01-23T08:00:00, is refused
with invalid_request: Pubrivo will not guess which 8 o’clock you meant.
To schedule for 9:00 in a Workspace’s own time zone, convert it in your code first. In JavaScript, for example, with the Temporal API:
Temporal.ZonedDateTime.from('2027-01-23T09:00[Asia/Tokyo]').toInstant().toString()// '2027-01-23T00:00:00Z'Responses always give instants in UTC.
When you may schedule
Section titled “When you may schedule”- At least 15 minutes ahead for API keys and Authorized apps, so there is always a window to catch a mistake in the Calendar.
- Up to a year ahead.
A time outside these is refused with a 422 and a blocker saying which —
it is never moved for you.
Reading what is booked
Section titled “Reading what is booked”GET /api/posts lists Posts, newest written first. Give from and to (instants; from
inclusive, to exclusive) to get only Posts with a Variant scheduled — or written — in that range.
curl "https://app.pubrivo.com/api/posts?from=2027-01-18T00:00:00Z&to=2027-01-25T00:00:00Z" \ -H "Authorization: Bearer $PUBRIVO_KEY"Pages hold 100 Posts, or up to 500 with limit. When there are more, the response
carries a nextCursor; pass it back as cursor to read on. It is null on the last page.
Changing your mind
Section titled “Changing your mind”POST /api/posts/{id}/cancel cancels every Variant that has not started publishing. The response
lists what it cancelled and, separately, any Variant already publishing or published —
pastCancelling — which it leaves alone.
There is no endpoint to move a Post. Cancel it and schedule it again.