REST API
Get a week of lessons
Every lesson in one week across the user's active schedules, or one schedule, as dated occurrences in the user's time zone. External schedules are read from their provider, up to 7 seconds each; one that fails or times out is listed in sources with an issue and adds no lessons. Archived schedules are not part of the week, so a scheduleId naming one returns 404.
Required scopes: schedule:view
AuthorizationBearer <token>
In: header
Query Parameters
date?string
Any day (YYYY-MM-DD) in the week to read. Defaults to today in the user's time zone. Only the previous, current and next week can be read.
Match
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$Format
datescheduleId?string
Only this schedule. Omit for every active schedule the user can read.
Match
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Format
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/schedules/week"{ "data": { "weekStart": "2026-01-12", "timeZone": "Europe/London", "sources": [ { "scheduleId": "4d3c2b1a-0f9e-4d8c-8b7a-6f5e4d3c2b1a", "name": "Year 12", "external": null, "owned": true, "issue": null } ], "occurrences": [ { "scheduleId": "4d3c2b1a-0f9e-4d8c-8b7a-6f5e4d3c2b1a", "date": "2026-01-12", "endDate": null, "time": { "kind": "timed", "startMinute": 540, "endMinute": 600 }, "timeZone": null, "title": "Biology", "subtitle": "S2 · Dr Patel" } ] }}