Endpoints
All endpoints live under https://orionmedia.app and require your
API token. POST bodies are JSON. Responses are JSON;
write endpoints return {"ok": true} on success or {"error": "..."} with an
appropriate status code.
GET /api/machine/summary
Section titled “GET /api/machine/summary”The consolidated feed — one request returns everything a dashboard or integration needs:
{ "generatedAt": "2026-07-04T12:00:00.000Z", "counts": { "upNext": 7, "airingToday": 2, "airingWeek": 9, "unwatchedEpisodes": 41 }, "next": { "show": "Severance", "episode": "S02E05", "air_date": "2025-02-14", ... }, "upNext": [ /* one item per followed show with an unwatched aired episode */ ], "today": [ /* episodes airing today */ ], "week": [ /* episodes airing in the next 7 days */ ], "releasing": [ /* followed episodes/movies/games releasing today or tomorrow */ ]}New integrations should use this endpoint — the endpoints below are narrower feeds that predate it and remain for compatibility.
GET /api/notifications
Section titled “GET /api/notifications”Followed, not-yet-watched items releasing today or tomorrow:
{ "items": [...] }. This is what drives the Android app’s
release notifications.
GET /api/upcoming
Section titled “GET /api/upcoming”Airing-soon feed: { "counts": { "today", "week" }, "next", "today", "week" }.
GET /api/widget
Section titled “GET /api/widget”The Android widget’s feed (watch list + coming this week).
GET /api/calendar.ics
Section titled “GET /api/calendar.ics”Your releases as an iCalendar feed — see
Calendar subscription. Token goes in the query string
(?token=...), since calendar apps can’t send headers.
POST /api/machine/watched
Section titled “POST /api/machine/watched”Mark an episode, movie, or game watched or unwatched:
{ "kind": "episode", "id": 1234, "watched": true }kind is "episode", "movie", or "game".
POST /api/machine/follow
Section titled “POST /api/machine/follow”Follow/unfollow, or archive a show:
{ "kind": "show", "id": 42, "followed": true, "archived": false }kind is "show", "movie", or "game" (archived applies to shows).
POST /api/machine/sync
Section titled “POST /api/machine/sync”Trigger an immediate catalog refresh and notification check for your account — the same work the scheduled background sync does. Useful behind a dashboard “Refresh now” button.
Example
Section titled “Example”# What's next?curl -s -H "Authorization: Bearer $TOKEN" \ https://orionmedia.app/api/machine/summary | jq .next
# Mark it watchedcurl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ -d '{"kind":"episode","id":1234,"watched":true}' \ https://orionmedia.app/api/machine/watched