OpenAPI reference · Calendar
A project's content calendar for a date range
/calendarScheduled and planned posts (with workflow status category and any
last publish error), note slots, idea placements, and the recurring
posting-time template. from/to are inclusive calendar days
(YYYY-MM-DD, max 92 days), interpreted in the project's calendar
timezone — the response echoes which timezone was used. Requires
the calendar:read scope.
Authorization
AuthorizationstringrequiredBearer token in the Authorization header.
Pass
Authorization: Bearer scripe_sk_live_<...>(orscripe_sk_test_<...>for test keys) on every request. Keys are scoped to a single workspace and can be revoked from the Scripe dashboard.The same header also accepts an OAuth 2.1 access token (
scripe_oat_*); both credentials share one scope vocabulary and every operation below documents the scope it requires. An API key can hold every scope named on this surface exceptwebhooks:manage, which is grantable to OAuth tokens only today — the webhook-endpoint operations answer403 scope_missingto every API key. Operations that name no scope accept any valid token of the workspace.
Query parameters
projectIdstringrequiredfromstringrequiredFirst calendar day of the range, inclusive.
tostringrequiredLast calendar day of the range, inclusive.
timeZonestringOverride the project's calendar timezone (IANA name).
Header parameters
Scripe-Api-VersionstringPin the API version. Format
YYYY-MM-DD. Omit to receive the currently rolling default. Unknown versions return400 version_unsupported.
Responses
- 200
The calendar range.
- 400
Malformed request (bad cursor, bad limit, etc.).
- 401
Missing, malformed, expired, or revoked API key.
- 403
Plan not eligible, scope missing, or workspace mismatch.
- 404
Resource not found in this workspace.
- 429
Sliding-window rate limit exceeded.
Example request
curl --request GET \
--url 'https://api.scripe.io/v1/calendar?projectId=<projectId>&from=<from>&to=<to>' \
--header 'Authorization: Bearer <token>'Example response (200)
{
"data": {
"timezone": "string",
"from": "2026-08-10",
"to": "2026-08-16",
"posts": [
{
"id": "post_a1b2c3d4e5f6g7h8",
"date": "2026-08-11",
"title": "string",
"excerpt": "string",
"scheduledAt": "string",
"statusCategory": "string",
"statusTitle": "string",
"lastPublishError": "string",
"lastPublishAttemptAt": "string"
}
],
"noteSlots": [
{
"id": "note_a1b2c3d4e5f6g7h8",
"date": "string",
"excerpt": "string"
}
],
"ideas": [
{
"id": "idea_a1b2c3d4e5f6g7h8",
"date": "string",
"title": "string",
"status": "string"
}
],
"templateSlots": [
{
"hour": 0,
"minute": 0,
"days": [
"string"
]
}
]
}
}