Oak Curriculum API

API endpoints

Sequences

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.

6.1 Sequencing information for a given sequence slug

GET /sequences/{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.

Inputs (path)

Name
Type
Description
Example

sequence

string

The sequence slug identifier

art-secondary

Output (response)

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

Sample response

{
  "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"
      }
    ]
  }
}

6.2 Units in a curriculum sequence

GET /sequences/{sequence}/units

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.

Inputs (path, query)

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

Output (response)

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. science-secondary rather than science-secondary-aqa).

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

Sample response

[
  {
    "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
          }
        ]
      }
    ]
  }
]

6.3 Downloadable assets in a sequence

GET /sequences/{sequence}/assets

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).

Inputs (path, query)

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

Output (response)

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

Sample response

[
  {
    "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"
      }
    ]
  }
]

6.4 Quiz questions across a sequence

GET /sequences/{sequence}/questions

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).

Inputs (path, query)

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 images to return only questions with a question image or image answer.

Output (response)

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 match_option field in the answers array, and must correctly match them to the correct_choice value

3

object

The student is offered a list of items to order, and must correctly order them according to the order field. When presenting the answer options to the student, you should randomise the order of the items

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

Sample response

[
  {
    "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
          }
        ]
      }
    ]
  }
]