API endpoints
In addition to lesson-level data and lesson assets, we also provide information about each sequence and the units within them, as well as assets and quiz data for each sequence.
Use when you have a sequence slug and need the sequence-level summary. A sequence is a subject's curriculum across a phase (e.g. maths-primary, science-secondary-aqa); it spans one or more National Curriculum schemes and contains one programme per year group. Get sequence slugs from GET /subjects or GET /subjects/{subject} (the sequenceSlugs field). Returns slug, phase, key stages, years, and any KS4 programme factors (exam board, tier, child subject, pathway) needed to interpret the programmes within it. Not for: the programmes within this sequence (GET /sequences/{sequence}/programmes); the unit sequence for one programme (GET /sequences/{sequence}/programmes/{programme}/units); all units across the sequence (GET /sequences/{sequence}/units); subject-level catalogue data (GET /subjects or GET /subjects/{subject}). Example: sequence=maths-primary or science-secondary-aqa.
Name | Type | Description | Example |
|---|---|---|---|
sequence | string | The sequence slug identifier | art-secondary |
Name | Type | Description |
|---|---|---|
sequenceSlug | string | The unique identifier for each sequence |
years | array[number] | The years for which this subject has content available for |
keyStages | array[object] | The key stage slug identifiers for which this subject has content available for. |
keyStageTitle | string | The key stage title for the given key stage |
keyStageSlug | string | The unique identifier for a given key stage |
phaseSlug | string | The unique identifier for the phase to which this sequence belongs |
phaseTitle | string | The title for the phase to which this sequence belongs |
ks4ProgrammeFactors | object | The programme factors that apply to this subject at key stage 4, with the valid values for each factor. |
examBoard | array[object] | The valid exam board values offered by Oak for this subject at key stage 4. |
title | string | The display title for a valid programme factor value |
slug | string | The slug identifier for a valid programme factor value |
pathway | array[object] | The valid pathway values offered by Oak for this subject at key stage 4. |
tier | array[object] | The valid tier values offered by Oak for this subject at key stage 4. |
childSubject | array[object] | The child subjects offered by Oak for this subject at key stage 4 (e.g. biology, chemistry, physics and combined-science under science). Only present for Science, which is split into child subjects at KS4. |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
{
"sequenceSlug": "computing-secondary-core",
"years": [
7,
8,
9,
10,
11
],
"keyStages": [
{
"keyStageTitle": "Key Stage 3",
"keyStageSlug": "ks3"
},
{
"keyStageTitle": "Key Stage 4",
"keyStageSlug": "ks4"
}
],
"phaseSlug": "secondary",
"phaseTitle": "Secondary",
"ks4ProgrammeFactors": {
"examBoard": [
{
"title": "AQA",
"slug": "aqa"
},
{
"title": "Edexcel",
"slug": "edexcel"
},
{
"title": "OCR",
"slug": "ocr"
}
],
"pathway": [
{
"title": "Core",
"slug": "core"
}
],
"tier": [
{
"title": "Foundation",
"slug": "foundation"
},
{
"title": "Higher",
"slug": "higher"
}
]
}
}Use when you want every unit across a whole sequence — all programmes combined, in unit sequence order. Returns units grouped by programme (year group) in unit sequence order. If the sequence slug includes an exam board (e.g. science-secondary-aqa), units are scoped to that exam board. Secondary sequences also expose tiers, pathways, and exam subjects where applicable. Pass year as an optional filter to return only that year's units (across all KS4 factor combinations). Not for: units in a single programme (GET /sequences/{sequence}/programmes/{programme}/units); a flat list of units for a key stage + subject without programme structure or unit sequence order (GET /key-stages/{keyStage}/subject/{subject}/units); the programmes within this sequence (GET /sequences/{sequence}/programmes); a single unit (GET /units/{unit}/summary); units in a thread (GET /threads/{threadSlug}/units). Example: sequence=science-secondary-aqa or maths-primary.
Name | Type | Description | Example |
|---|---|---|---|
sequence | string | The sequence slug identifier, including the key stage 4 option where relevant. | english-primary |
year [optional] | string | The year group to filter by. For the physical-education-primary sequence, a value of all-years can also be used. | 1 |
Name | Type | Description |
|---|---|---|
year | number, string | The year group |
title | string | The title of the exam board |
units | array[object, object] | A list of units that make up a full sequence, grouped by year. |
unitTitle | string | The title of the unit |
unitOrder | number | The position of the unit within the sequence. |
unitOptions | array[object] | The unique slug identifier for the unit |
categories | array[object] | The categories (if any) that are assigned to the unit. If the unit does not have any categories, this property is omitted. |
categoryTitle | string | The title of the category |
categorySlug | string | The unique identifier for the category |
threads | array[object] | A list of threads (if any) that are assigned to the unit. If the unit does not have any categories, this property is omitted. |
threadTitle | string | The title of the category |
threadSlug | string | The unique identifier for the thread |
order | number | Deprecated |
examBoards | array[object] | The exam boards the unit appears in. Only populated when the sequence is requested without an exam board (e.g. |
slug | string | The slug of the exam board |
unitSlug | string | The unique slug identifier for the unit |
examSubjects | array[object, object] | Only used in secondary science. Contains a full year's unit sequences based on which subject is being studied at KS4. |
tierTitle | string | The title of the tier |
tierSlug | string | The tier identifier |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
[
{
"year": 1,
"units": [
{
"unitTitle": "Speaking and Listening",
"unitOrder": 1,
"unitSlug": "speaking-and-listening",
"categories": [
{
"categoryTitle": "Reading, writing & oracy"
}
],
"threads": [
{
"threadTitle": "Developing spoken language",
"threadSlug": "developing-spoken-language",
"order": 8
}
]
}
]
}
]Use when you need every downloadable asset across a whole sequence — all programmes combined. Returns assets grouped by lesson in unit sequence order, with signed download URLs, asset type, lesson title and slug, and attribution. Pass year as an optional filter. Narrow further with type (one of: slideDeck, starterQuiz, starterQuizAnswers, exitQuiz, exitQuizAnswers, worksheet, worksheetAnswers, supplementaryResource, video). Lesson content is under OGL v3.0; assets are either Oak-owned or third-party under an OGL-compatible licence. Attribution required — see https://open-api.thenational.academy/docs/about-oaks-api/terms. Not for: assets in a single programme (GET /sequences/{sequence}/programmes/{programme}/assets); a single lesson's downloads (GET /lessons/{lesson}/assets); streaming one file (GET /lessons/{lesson}/assets/{type}); assets for a key stage + subject without programme structure (GET /key-stages/{keyStage}/subject/{subject}/assets).
Name | Type | Description | Example |
|---|---|---|---|
sequence | string | The sequence slug identifier, including the key stage 4 option where relevant. | english-primary |
year [optional] | number | The year group to filter by. For the physical-education-primary sequence, a value of all-years can also be used. | 3 |
type [optional] | string | Optional asset type specifier Available values: slideDeck, exitQuiz, exitQuizAnswers, starterQuiz, starterQuizAnswers, supplementaryResource, video, worksheet, worksheetAnswers | slideDeck |
Name | Type | Description |
|---|---|---|
lessonSlug | string | The unique slug identifier for the lesson |
lessonTitle | string | The title for the lesson |
attribution | array[string] | Licence information for any third-party content contained in the lessons' downloadable resources |
assets | array[object] | List of assets |
type | string | Use the this type and the lesson slug in conjunction to get a signed download URL to the asset type from the /api/lessons/{slug}/asset/{type} endpoint |
label | string | The label for the asset |
url | string | The download endpoint for the asset. |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
[
{
"lessonSlug": "using-numerals",
"lessonTitle": "Using numerals",
"assets": [
{
"label": "Worksheet",
"type": "worksheet",
"url": "https://open-api.thenational.academy/api/v0/lessons/using-numerals/assets/worksheet"
},
{
"label": "Worksheet Answers",
"type": "worksheetAnswers",
"url": "https://open-api.thenational.academy/api/v0/lessons/using-numerals/assets/worksheetAnswers"
},
{
"label": "Video",
"type": "video",
"url": "https://open-api.thenational.academy/api/v0/lessons/using-numerals/assets/video"
}
]
}
]Use when you want every quiz question across a whole sequence — all programmes combined. Returns questions grouped by lesson in unit sequence order. Pass year as an optional filter to return only that year's questions. Supports offset and limit; Link: rel="next" header signals more pages. Not for: questions in a single programme (GET /sequences/{sequence}/programmes/{programme}/questions); a single lesson's quiz (GET /lessons/{lesson}/quiz); questions for a key stage + subject without programme structure (GET /key-stages/{keyStage}/subject/{subject}/questions).
Name | Type | Description | Example |
|---|---|---|---|
sequence | string | The sequence slug identifier, including the key stage 4 option where relevant. | english-primary |
year [optional] | number | The year group to filter by. For the physical-education-primary sequence, a value of all-years can also be used. | 3 |
offset [optional] | number | If limiting results returned, this allows you to return the next set of results, starting at the given offset point | 50 |
limit [optional] | number | Limit the number of lessons, e.g. return a maximum of 100 lessons | 10 |
filter [optional] | string | Optional filter for question results. Use |
Name | Type | Description |
|---|---|---|
0 | object | Multiple choice answer allows for one or more than one answer to be correct as defined by the distractor field being set to false |
1 | object | Short answers allow students to enter a free text answer, and the answers array contains a list of acceptable answers |
2 | object | The student is offered a list from the |
3 | object | The student is offered a list of items to order, and must correctly order them according to the |
lessonSlug | string | The lesson slug identifier |
lessonTitle | string | The title of the lesson |
starterQuiz | array[object] | The starter quiz questions - which test prior knowledge |
question | string | The question text |
text | string | Supplementary text for the image, if any |
type | string | The format of the quiz answer Note: currently, we are only returning text-based quiz answers. In the future, we will also have image-based questions available. |
content | string | Quiz question answer |
distractor | boolean | Whether the multiple choice question response is the correct answer (false) or is a distractor (true) |
matchOption | object | Matching options (LHS) |
correctChoice | object | Matching options (RHS), indicating the correct choice |
order | number | Indicates the correct ordering of the response |
exitQuiz | array[object] | The exit quiz questions - which test on the knowledge learned in the lesson |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
message | string | The error message |
code | string | The error code |
issues | array[object] | An array of issues that were responsible for the error |
[
{
"lessonTitle": "3D shapes can be composed from 2D nets",
"lessonSlug": "3d-shapes-can-be-composed-from-2d-nets",
"starterQuiz": [
{
"question": "Select all of the names of shapes that are polygons.",
"questionType": "multiple-choice",
"answers": [
{
"type": "text",
"content": "Cube ",
"distractor": true
},
{
"type": "text",
"content": " Square",
"distractor": false
},
{
"type": "text",
"content": "Triangle",
"distractor": false
},
{
"type": "text",
"content": "Semi-circle",
"distractor": true
}
]
}
],
"exitQuiz": [
{
"question": "What is a net?",
"questionType": "multiple-choice",
"answers": [
{
"type": "text",
"content": "A 3D shape made of 2D shapes folded together. ",
"distractor": false
},
{
"type": "text",
"content": "A 2D shape made of 3D shapes folded togehther.",
"distractor": true
},
{
"type": "text",
"content": "A type of cube.",
"distractor": true
}
]
}
]
}
]