API reference
3 endpoints, served at https://orbitwrite.com/api/v1. Each one lists the credentials it accepts, its parameters and every response it can give.
Requires postingSchedule:read. One entry per live connected account with its weekly slots and the timezone they're anchored to. GET /posting-slots collapses the workspace to one distinct set of times; this keeps them separated, which is what a per-account posting queue needs to place a post.
An API key or OAuth access token as a bearer token, or a signed-in session.
organizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
200AccountPostingScheduleListEach account's posting schedule
accountsAccountPostingSchedule[]RequiredaccountIdstringRequiredtimezonestring | nullRequiredIANA timezone the account's slot times are anchored to — the workspace's, falling back to the account's own for a workspace that never set one. Workspace-first on purpose: the calendar renders every account's slots against the single workspace zone, and a queue anchored to a diverging per-account zone places its instants off the slots the calendar shows — so it re-offers a slot that visibly holds a post. Slots recur at this wall-clock time, so the instant they fire shifts with DST. Null when neither is configured: the caller applies its own fallback, because only it knows the zone the times will be read in (the app uses the viewer's display timezone, matching the calendar).
slotsPostingSlot[]RequiredThe account's own slots, falling back to the workspace's distinct set when it has none of its own — an account connected after onboarding has no rows, and the calendar already places it on the workspace's times. Empty only when the workspace has no slots at all; callers apply their own default there rather than being handed an invented one.
dayOfWeekintegerRequired0 = Monday … 6 = Sunday
Between 0 and 6.
minuteOfDayintegerRequiredMinutes since local midnight
Between 0 and 1439.
curl -X GET "https://orbitwrite.com/api/v1/posting-slots/by-account" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"accounts": [
{
"accountId": "string",
"timezone": "string",
"slots": [
{
"dayOfWeek": 0,
"minuteOfDay": 0
}
]
}
]
}Requires postingSchedule:read. Returns the distinct weekly (dayOfWeek, minuteOfDay) slots for the organization, plus its timezone. Used by the settings “Posting schedule” tab.
An API key or OAuth access token as a bearer token, or a signed-in session.
organizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
accountIdstringScope to one connected account's schedule instead of the organization-wide default. When the account has no customized schedule yet, the organization's values are returned as a fallback.
At least 1 character.
200PostingSlotListThe workspace's posting slots
slotsPostingSlot[]RequireddayOfWeekintegerRequired0 = Monday … 6 = Sunday
Between 0 and 6.
minuteOfDayintegerRequiredMinutes since local midnight
Between 0 and 1439.
timezonestring | nullRequiredIANA timezone the slots are anchored to, e.g. "Europe/London"
frequencyPerWeeknumber | nullRequiredPosts-per-week goal the schedule was set to (from onboarding), used to restore the smart-mode stepper. Null when never configured.
modestring | nullRequiredWhether the schedule was last saved in smart or manual mode. Null when never configured.
"smart""manual"nullcurl -X GET "https://orbitwrite.com/api/v1/posting-slots" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"slots": [
{
"dayOfWeek": 0,
"minuteOfDay": 0
}
],
"timezone": "string",
"frequencyPerWeek": 0,
"mode": "smart"
}Requires postingSchedule:update. Replaces the posting slots for every connected account in the organization — or for one account, with accountId — with the set derived from the chosen schedule (frequency + smart/manual). Idempotent: re-running replaces rather than accumulates.
An API key or OAuth access token as a bearer token, or a signed-in session.
organizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
accountIdstringScope the update to one connected account instead of every account in the organization. The organization's own schedule columns are seeded from this write only while they're still unconfigured — once set, account-scoped writes never touch the org-wide fallback.
At least 1 character.
modestringDefaults to "smart".
"smart""manual"frequencyPerWeeknumberSmart mode: how many slots to spread across the week
Between 0 and 100. Defaults to 1.
slotsManualSlotInput[]Manual mode: the checked day×time grid cells
At most 50 items.
timezonestringIANA timezone to anchor the schedule to, e.g. "America/Los_Angeles". Checked against the runtime's zone database — an unknown zone is a 400 rather than a schedule whose times nothing can resolve later.
Between 1 and 100 characters.
200ReplacePostingSlotsResultHow many slots were created across how many accounts
createdintegerRequiredaccountsintegerRequiredslotsPerAccountintegerRequiredcurl -X POST "https://orbitwrite.com/api/v1/posting-slots" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "string",
"accountId": "string",
"mode": "smart",
"frequencyPerWeek": 1,
"slots": [
{
"time": "9:00 AM",
"days": [
true
]
}
],
"timezone": "string"
}'{
"created": 0,
"accounts": 0,
"slotsPerAccount": 0
}