API reference
2 endpoints, served at https://orbitwrite.com/api/v1. Each one lists the credentials it accepts, its parameters and every response it can give.
Consecutive weeks in which the workspace published at least one post, with the longest run, the current week's status and a trailing week-by-week history. Weeks are anchored to the workspace timezone and start on Monday.
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.
weekStartsOninteger | nullFirst day of the week as a getDay() index (0=Sun, 1=Mon, 6=Sat). Defaults to Monday.
200StreakThe workspace's posting streak
currentintegerRequiredConsecutive weeks with a published post, ending this week.
longestintegerRequiredThe workspace's longest run of consecutive posting weeks.
statestringRequirednew (never published), active (this week satisfied), at_risk (streak alive but this week still empty), broken (a run ended and this week is empty).
"new""active""at_risk""broken"currentWeekSatisfiedbooleanRequiredwillExtendStreakbooleanRequiredA scheduled post is set to fire this week, so an at-risk streak is already covered.
weekEndsAtstringRequiredInstant the current week rolls over (ISO 8601).
historyStreakWeek[]Requiredlast7DaysStreakDay[]RequiredThe trailing 7 days (oldest → today) with per-day counts.
lastPostAtstring | nullRequiredWhen the workspace most recently published (ISO), or null.
curl -X GET "https://orbitwrite.com/api/v1/streak" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"current": 0,
"longest": 0,
"state": "new",
"currentWeekSatisfied": true,
"willExtendStreak": true,
"weekEndsAt": "string",
"history": [
{
"weekKey": "string",
"satisfied": true,
"count": 0
}
],
"last7Days": [
{
"dateKey": "string",
"count": 0
}
],
"lastPostAt": "string"
}Posts published on each day of the last weeks whole weeks, ending today, in the workspace timezone: a synced multi-channel post counts once, thread replies don't count. Pass userId for one member's posts (the ones they wrote). Requires analytics:read, which covers your own userId; anyone else's takes analytics:readAny (manager and up). An API key is nobody's self, so any userId on a key takes analytics:readAny.
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.
userIdstringA member's user id: only the posts they wrote.
At least 1 character.
weeksintegerWhole weeks ending with this one, 1–53. Defaults to 26.
Between 1 and 53.
weekStartsOninteger | nullFirst day of the week as a getDay() index (0=Sun, 1=Mon, 6=Sat). Defaults to Monday.
200PostingActivityPosts per day
timezonestringRequireduserIdstring | nullRequiredThe member the counts are for, or null for the whole workspace.
weekStartsOnintegerRequiredfromstringRequiredFirst day of the first week (YYYY-MM-DD).
tostringRequiredToday in the workspace timezone (YYYY-MM-DD).
daysPostingActivityDay[]RequiredEvery day from from to to, oldest first, empty days included.
totalintegerRequiredactiveDaysintegerRequiredlongestStreakDaysintegerRequiredLongest run of consecutive posting days inside the window.
currentStreakDaysintegerRequiredConsecutive posting days ending today (or yesterday, while today has nothing yet).
busiestDayPostingActivityDay | any | nullRequiredcurl -X GET "https://orbitwrite.com/api/v1/posting-activity" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"timezone": "string",
"userId": "string",
"weekStartsOn": 0,
"from": "string",
"to": "string",
"days": [
{
"dateKey": "string",
"count": 0
}
],
"total": 0,
"activeDays": 0,
"longestStreakDays": 0,
"currentStreakDays": 0,
"busiestDay": {
"dateKey": "string",
"count": 0
}
}