Oak Curriculum API

API endpoints

Lists

The following lists are available to facilitate using other endpoints:

  • Key stages:
    • Units by key stage and subject
    • Lessons by key stage and subject
    • Assets by key stage and subject
  • Subjects
    • Specific subject
    • Key stages by subject
    • Sequences by subject
    • Years by subject
  • Threads
    • Units by thread

The top-level endpoints (key stages, subjects, threads) provide an overview of our data model, while the lower-level endpoints provide detailed information on specific subjects, key stages and threads.

1.1 Sequencing information for a given sequence slug

GET /sequences/{slug}

This endpoint returns the sequence object for the provided sequence slug. For secondary sequences, this includes information about key stage 4 variance such as exam board sequences and non-GCSE ‘core’ unit sequences.

Inputs (path)

Name
Type
Description
Example

slug

string

The sequence slug identifier

art-secondary-aqa

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

1.2 Subjects

GET /subjects

This endpoint returns an array of available subject slugs.

Inputs

N/A

Output (response)

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

Sample response

[
  "art",
  "computing",
  "english"
]

1.3 Subject

GET /subjects/{subject}

This endpoint returns the sequences, key stages and years that are currently available for a given subject.

Inputs (path)

Name
Type
Description
Example

subject

string

The slug identifier for the subject

art

Output (response)

Name
Type
Description

subjectTitle

string

The subject title

subjectSlug

string

The subject slug identifier

sequenceSlugs

array[object]

Information about the years, key stages and key stage 4 variance for each sequence

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

{
  "subjectTitle": "Science",
  "subjectSlug": "science",
  "sequenceSlugs": [
    {
      "sequenceSlug": "science-primary",
      "years": [
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "keyStages": [
        {
          "keyStageTitle": "Key Stage 1",
          "keyStageSlug": "ks1"
        },
        {
          "keyStageTitle": "Key Stage 2",
          "keyStageSlug": "ks2"
        }
      ],
      "phaseSlug": "primary",
      "phaseTitle": "Primary"
    },
    {
      "sequenceSlug": "science-secondary-aqa",
      "years": [
        7,
        8,
        9,
        10,
        11
      ],
      "keyStages": [
        {
          "keyStageTitle": "Key Stage 3",
          "keyStageSlug": "ks3"
        },
        {
          "keyStageTitle": "Key Stage 4",
          "keyStageSlug": "ks4"
        }
      ],
      "phaseSlug": "secondary",
      "phaseTitle": "Secondary"
    },
    {
      "sequenceSlug": "science-secondary-edexcel",
      "years": [
        7,
        8,
        9,
        10,
        11
      ],
      "keyStages": [
        {
          "keyStageTitle": "Key Stage 3",
          "keyStageSlug": "ks3"
        },
        {
          "keyStageTitle": "Key Stage 4",
          "keyStageSlug": "ks4"
        }
      ],
      "phaseSlug": "secondary",
      "phaseTitle": "Secondary"
    },
    {
      "sequenceSlug": "science-secondary-ocr",
      "years": [
        7,
        8,
        9,
        10,
        11
      ],
      "keyStages": [
        {
          "keyStageTitle": "Key Stage 3",
          "keyStageSlug": "ks3"
        },
        {
          "keyStageTitle": "Key Stage 4",
          "keyStageSlug": "ks4"
        }
      ],
      "phaseSlug": "secondary",
      "phaseTitle": "Secondary"
    }
  ],
  "years": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11
  ],
  "keyStages": [
    {
      "keyStageTitle": "Key Stage 1",
      "keyStageSlug": "ks1"
    },
    {
      "keyStageTitle": "Key Stage 2",
      "keyStageSlug": "ks2"
    },
    {
      "keyStageTitle": "Key Stage 3",
      "keyStageSlug": "ks3"
    },
    {
      "keyStageTitle": "Key Stage 4",
      "keyStageSlug": "ks4"
    }
  ],
  "ks4ProgrammeFactors": {
    "examBoard": [
      {
        "title": "AQA",
        "slug": "aqa"
      },
      {
        "title": "Edexcel",
        "slug": "edexcel"
      },
      {
        "title": "OCR",
        "slug": "ocr"
      }
    ],
    "tier": [
      {
        "title": "Foundation",
        "slug": "foundation"
      },
      {
        "title": "Higher",
        "slug": "higher"
      }
    ],
    "childSubject": [
      {
        "title": "Biology",
        "slug": "biology"
      },
      {
        "title": "Chemistry",
        "slug": "chemistry"
      },
      {
        "title": "Combined science",
        "slug": "combined-science"
      },
      {
        "title": "Physics",
        "slug": "physics"
      }
    ]
  }
}

1.4 Key stages within a subject

GET /subjects/{subject}/key-stages

This endpoint returns a list of key stages that are currently available for a given subject.

Inputs (path)

Name
Type
Description
Example

subject

string

The subject slug identifier

art

Output (response)

Name
Type
Description

keyStageTitle

string

The key stage title for the given key stage

keyStageSlug

string

The unique identifier for a given key stage

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

[
  {
    "keyStageTitle": "Key Stage 1",
    "keyStageSlug": "ks1"
  },
  {
    "keyStageTitle": "Key Stage 2",
    "keyStageSlug": "ks2"
  },
  {
    "keyStageTitle": "Key Stage 3",
    "keyStageSlug": "ks3"
  },
  {
    "keyStageTitle": "Key Stage 4",
    "keyStageSlug": "ks4"
  }
]

1.5 Year groups for a given subject

GET /subjects/{subject}/years

This endpoint returns an array of years that are currently available for a given subject.

Inputs (path)

Name
Type
Description
Example

subject

string

Subject slug to filter by

cooking-nutrition

Output (response)

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

Sample response

[
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9
]

1.6 Key stages

GET /key-stages

This endpoint returns all the key stages (titles and slugs) that are currently available on Oak

Inputs

N/A

Output (response)

Name
Type
Description

slug

string

The key stage slug identifier

title

string

The key stage title

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

[
  {
    "slug": "ks1",
    "title": "Key Stage 1"
  }
]

1.7 Lessons

GET /key-stages/{keyStage}/subject/{subject}/lessons

This endpoint returns an array of available published lessons for a given subject and key stage, grouped by unit.

Inputs (path, query)

Name
Type
Description
Example

keyStage

string

Key stage slug to filter by, e.g. 'ks2' - note that casing is important here, and should be lowercase

ks1

subject

string

Subject slug to filter by, e.g. 'english' - note that casing is important here, and should be lowercase

english

unit [optional]

string

Optional unit slug to additionally filter by

word-class

offset [optional]

number

Limit the number of lessons returned per unit. Units with zero lessons after limiting are omitted.

50

limit [optional]

number

Offset applied to lessons within each unit (not to the unit list).

10

Output (response)

Name
Type
Description

unitSlug

string

The unit slug identifier

unitTitle

string

The unit title

lessons

array[object]

List of lessons for the specified unit

lessonSlug

string

The lesson slug identifier

lessonTitle

string

The lesson title

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

[
  {
    "unitSlug": "simple-compound-and-adverbial-complex-sentences",
    "unitTitle": "Simple, compound and adverbial complex sentences",
    "lessons": [
      {
        "lessonSlug": "four-types-of-simple-sentence",
        "lessonTitle": "Four types of simple sentence"
      },
      {
        "lessonSlug": "three-ways-for-co-ordination-in-compound-sentences",
        "lessonTitle": "Three ways for co-ordination in compound sentences"
      }
    ]
  }
]

1.8 Units

GET /key-stages/{keyStage}/subject/{subject}/units

This endpoint returns an array of units containing available published lessons for a given key stage and subject, grouped by year. Units without published lessons will not be returned by this endpoint.

Inputs (path, query)

Name
Type
Description
Example

keyStage

string

Key stage slug to filter by, e.g. 'ks2'

ks1

subject

string

Subject slug to search by, e.g. 'science' - note that casing is important here (always lowercase)

art

examBoard [optional]

string

Output (response)

Name
Type
Description

yearSlug

string

The year identifier

yearTitle

string

The year title

units

array[object]

List of units for the specified year

unitSlug

string

The unit slug identifier

unitTitle

string

The unit title

examBoards

array[object]

The exam boards the unit appears in. Only populated for KS4 subjects when the request does not supply an examBoard filter.

title

string

The title of the exam board

slug

string

The slug of the exam board

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

[
  {
    "units": [
      {
        "unitSlug": "2-4-and-8-times-tables-using-times-tables-to-solve-problems",
        "unitTitle": "2, 4 and 8 times tables: using times tables to solve problems"
      },
      {
        "unitSlug": "bridging-100-counting-on-and-back-in-10s-adding-subtracting-multiples-of-10",
        "unitTitle": "Bridging 100: counting on and back in 10s, adding/subtracting multiples of 10"
      }
    ],
    "yearSlug": "year-3",
    "yearTitle": "Year 3"
  }
]

1.9 Keywords

GET /keywords

This endpoint returns a list of keywords for a given key stage and subject, based on the keywords associated with the lessons that are available for that key stage and subject. The keywords are returned in order of frequency, with the most common keywords appearing first.

Inputs (query)

Name
Type
Example

subject [optional]

string

keyStage [optional]

string

phase [optional]

string

unit [optional]

string

lesson [optional]

string

Output (response)

N/A

1.10 Threads

GET /threads

This endpoint returns an array of all threads, across all subjects. Threads signpost groups of units that link to one another, building a common body of knowledge over time. They are an important component of how Oak’s curricula are sequenced.

Inputs

N/A

Output (response)

Name
Type
Description

title

string

The thread title

slug

string

The thread slug identifier

unitCount

number

The number of published units in the thread

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

[
  {
    "title": "Number: Multiplication and division",
    "slug": "number-multiplication-and-division",
    "unitCount": 78
  }
]

1.11 Units belonging to a given thread

GET /threads/{threadSlug}/units

This endpoint returns all of the units that belong to a given thread.

Inputs (path)

Name
Type
Example

threadSlug

string

number-multiplication-and-division

Output (response)

Name
Type
Description

unitTitle

string

The unit title

unitSlug

string

The unit slug 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

[
  {
    "unitTitle": "Unitising and coin recognition - counting in 2s, 5s and 10s",
    "unitSlug": "unitising-and-coin-recognitions-counting-in-2s-5s-and-10s"
  },
  {
    "unitTitle": "Programming subroutines",
    "unitSlug": "programming-subroutines"
  },
  {
    "unitTitle": "Programming subroutines",
    "unitSlug": "programming-subroutines"
  }
]