API endpoints
Use when you need every downloadable asset for a single programme (year group) within a subject. Returns assets grouped by lesson with signed download URLs, asset type, lesson title and slug, and attribution. Supports offset/limit pagination; Link: rel="next" header signals more pages. Optionally narrow by asset 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 across a whole sequence (GET /sequences/{sequence}/assets); assets for a key stage + subject without programme structure (GET /key-stages/{keyStage}/subject/{subject}/assets); a single lesson's downloads (GET /lessons/{lesson}/assets); streaming one file (GET /lessons/{lesson}/assets/{type}).
Name | Type | Description | Example |
|---|---|---|---|
programme | string | The programme slug identifier | computing-secondary-year-7 |
offset [optional] | number | If limiting results returned, this allows you to return the next set of results, starting at the given offset point | |
limit [optional] | number | Limit the number of lessons, e.g. return a maximum of 300 lessons | 20 |
type [optional] | 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}/assets/{type} endpoint | 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}/assets/{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": "variables-and-data-types",
"lessonTitle": "Variables and data types",
"assets": [
{
"label": "Worksheet",
"type": "worksheet",
"url": "https://open-api.thenational.academy/api/v0/lessons/variables-and-data-types/assets/worksheet"
},
{
"label": "Slide Deck",
"type": "slideDeck",
"url": "https://open-api.thenational.academy/api/v0/lessons/variables-and-data-types/assets/slideDeck"
}
]
}
]Use when you need to discover the programmes within a subject — to get a programme's slug for use with GET /programmes/{programme} or its sub-endpoints. Returns programmes grouped by key stage, each with year group, slug (e.g. y7, y10-biology-foundation), and applicable programme factors (exam board, tier, child subject). Not for: the metadata of one programme (GET /programmes/{programme}); the units, questions, or assets of one programme (GET /programmes/{programme}/units, GET /programmes/{programme}/questions, or GET /programmes/{programme}/assets); the sequence-level summary (GET /sequences/{sequence}).
Name | Type | Description | Example |
|---|---|---|---|
subject | string | The subject slug identifier | english |
Name | Type | Description |
|---|---|---|
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 |
[
"english-secondary-year-7",
"english-secondary-year-8",
"english-secondary-year-9",
"english-secondary-year-10-aqa",
"english-secondary-year-10-edexcel",
"english-secondary-year-10-eduqas",
"english-secondary-year-11-aqa",
"english-secondary-year-11-edexcel",
"english-secondary-year-11-eduqas"
]Use when you need to get the metadata of one programme. Get programme slugs from GET /subjects/{subject}/programmes. Returns the programme's year group, slug (e.g. y7, y10-biology-foundation), and applicable programme factors (exam board, tier, child subject). Not for: the units, questions, or assets of one programme (GET /programmes/{programme}/units, GET /programmes/{programme}/questions, or GET /programmes/{programme}/assets); the sequence-level summary (GET /sequences/{sequence}); all programmes for a subject (GET /subjects/{subject}/programmes).
Name | Type | Description | Example |
|---|---|---|---|
programme | string | The programme slug identifier | english-secondary-year-10-edexcel |
Name | Type | Description |
|---|---|---|
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 |
{
"examboardSlug": "aqa",
"examboardTitle": "AQA",
"keystageSlug": "ks4",
"keystageTitle": "Key Stage 4",
"pathwaySlug": null,
"pathwayTitle": null,
"phaseSlug": "secondary",
"phaseTitle": "Secondary",
"subjectSlug": "computing",
"subjectTitle": "Computing",
"tierSlug": null,
"tierTitle": null,
"yearSlug": "year-10",
"yearTitle": "Year 10"
}Use when you need the unit sequence for one programme — units as an ordered arrangement designed to build knowledge progressively. Get programme slugs from GET /subjects/{subject}/programmes. Returns units in unit sequence order with title, slug, and any associated factors. Not for: every unit across the whole sequence (GET /sequences/{sequence}/units); a flat list of units for a key stage + subject without programme structure (GET /key-stages/{keyStage}/subject/{subject}/units); a single unit (GET /units/{unit}/summary); units in a thread (GET /threads/{threadSlug}/units).
Name | Type | Description | Example |
|---|---|---|---|
programme | string | The programme slug identifier | english-secondary-year-10-edexcel |
Name | Type | Description |
|---|---|---|
unitSlug | string | The unit slug identifier |
unitTitle | string | The unit title |
unitOrder | number | The unit order within the programme |
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 |
[
{
"unitSlug": "variables-and-data-types",
"unitTitle": "Variables and data types",
"unitOrder": 1
},
{
"unitSlug": "algorithms",
"unitTitle": "Algorithms",
"unitOrder": 2
}
]Use when you want every quiz question in a single programme (year group) within a subject. Get programme slugs from GET /subjects/{subject}/programmes. Returns questions grouped by lesson with starter and exit quiz questions and answers. Supports offset/limit pagination; Link: rel="next" header signals more pages. Not for: questions in a single lesson (GET /lessons/{lesson}/quiz); questions across a whole sequence (GET /sequences/{sequence}/questions); questions for a key stage + subject without programme structure (GET /key-stages/{keyStage}/subject/{subject}/questions).
Name | Type | Description | Example |
|---|---|---|---|
programme | string | The programme slug identifier | computing-secondary-year-7 |
offset [optional] | number | If limiting results returned, this allows you to return the next set of results, starting at the given offset point | |
limit [optional] | number | Limit the number of lessons, e.g. return a maximum of 300 lessons | 20 |
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
}
]
}
],
"exitQuiz": [
{
"question": "What is a net?",
"questionType": "multiple-choice",
"answers": [
{
"type": "text",
"content": "A 2D shape that folds into a 3D shape.",
"distractor": false
},
{
"type": "text",
"content": "A type of cube.",
"distractor": true
}
]
}
]
}
]