REST API Overview
REST API Overview
The REST API is standard HTTP with JSON request and response bodies.
Base URL
https://schedulenchill.com/api
The API is currently unversioned. Breaking changes will be announced in the Changelog.
Authentication
Send your API key as a bearer token on every request. See Authentication.
Authorization: Bearer YOUR_API_KEY
Request format
Send JSON bodies with both headers set:
-H "Content-Type: application/json"
-H "Accept: application/json"
The Accept: application/json header ensures errors come back as JSON rather than HTML redirects.
Resources
| Resource | Endpoints |
|---|---|
| Posts | GET/POST /posts, GET/PUT/DELETE /posts/{id} |
| Post actions | POST /posts/{id}/ cancel · publish-now · retry · duplicate · restore |
| Analytics | GET /analytics |
| Capabilities | GET /capabilities |
| Media | GET/POST /media, GET/PUT/DELETE /media/{id} |
| API Keys | GET/POST /api-keys, DELETE /api-keys/{id} |
Every post action has an MCP tool of the same name, and GET /analytics is
get_analytics. Neither surface can do something the other cannot.
Pagination
List endpoints are paginated. The pagination fields sit at the top level of
the response, alongside data:
{
"data": [],
"current_page": 1,
"per_page": 20,
"last_page": 5,
"total": 100,
"next_page_url": "…",
"prev_page_url": null
}
Pass ?page=2 to move through pages, and ?per_page=N to change the page
size. per_page accepts 1–200; anything larger returns 422 rather than
being silently reduced, so a client is never quietly handed a short page.
Without it, posts return 20 per page and media returns 15.
Always compare data.length against total before concluding you have seen
everything.
Timestamps
All timestamps are ISO 8601. Send scheduled_at in UTC (e.g. 2026-06-10T14:00:00Z) to avoid ambiguity.
Errors
Errors use standard HTTP status codes with a JSON body. Validation failures return 422 with a field-keyed errors object. See Errors & Status Codes.