Overview

AIECS Public Serving API

A library of education content pre-processed for use with AI

Rate limit of 100 requests per minuite per subscription key


Documents

openapi (2).json
Uploaded schema

Environments

Environment Base URL
live https://api.education.gov.uk/aiecs-public

You need to sign in to subscribe to an API environment or view your existing subscriptions.

Sign in here using GOV.UK One Login


Current release

Release name Available from
0 17 February 2026

Operations

GET Download Dataset

Description

Download a dataset from storage.

URL template
/datasets/{id}/download

GET Download File

Description

Download a file from storage.

URL template
/files/{id}/download

GET Get Chunk

Description

Retrieves a chunk by its ID.

URL template
/files/{file_id}/chunks/{sequence}

GET Get Collection

Description

Retrieves a collection by its ID.

URL template
/collections/{id}

GET Get Collection Files

Description

Retrieves files related to a specific collection.

URL template
/collections/{id}/files

GET Get Dataset

Description

Get dataset information based on its ID.

URL template
/datasets/{id}

GET Get File

Description

Retrieves a file by its ID.

URL template
/files/{id}

GET Get Publisher

Description

Retrieve a publisher by its unique ID.

Returns full detail for a single publisher, including:

  • key, value, id, and description,
  • occurence counts for linked collections, files, and datasets.

Notes:

  • The description field is ONLY present in this detailed endpoint and not in list /search results.
URL template
/publishers/{id}

GET Get Tag

Description

Retrieve a tag by its unique ID.

Returns full detail for a single tag, including:

  • key, value, id, and description,
  • occurence counts for linked collections, files, and datasets.

Notes:

  • The description field is ONLY present in this detailed endpoint and not in list/ search results.
URL template
/tags/{id}

GET List Chunks

Description

Retrieves a list of chunk summaries.

Chunks are sections of text (approximately 500 tokens) optimised to be semantically searchable and useful to LLMs.

The filter parameter should be a string formatted as a simple query string allowing filtering of chunks based on specified conditions. The syntax combines conditions using a comma to represent the logical operator AND; the syntax only supports the logical OR operator WITHIN a condition, as described below:

Filter Syntax:

  • Each condition should be in the format: field[op]value

    • field: The name of the field on which the condition is applied.
    • op: The operator to use for comparison (e.g., eq for equals, gt for greater than).
    • value: The value against which the field is compared.
  • Multiple conditions can be combined by using a , meaning condition 1 AND condition 2. E.g. publishers[eq]"STA",!tag[eq]"location:england".

  • Mulitple conditions can be combined by using a | within a single condition meaning value 1 OR value 2. E.g. publishers[eq]"STA|DfE".

  • Conditions can be negated by using a !. E.g. !content[eq]"STA".

Example Filter:

content[lk]"*Guidance",tags[eq]"version:v1",!tags[eq]"location:england"
  • This example checks if the content field is like "*Guidance" and has a tag with a key value equal to version, v1 and doesn't have a tag equal to location, england.

The search parameter is used to perform a full-text search on the entities. The search relies on natural language processing capabilities to find relevant results based on the input query. It supports constructs that align with common search engine syntax, making it intuitive for users familiar with web-based searching.

Search Syntax:

  • The search query should be a string composed of keywords or phrases.
  • The system interprets spaces between words as logical AND operators, requiring all terms to be present.
  • Use quotes for phrases to search for exact matches, e.g., "machine learning".
  • Logical operators such as OR can be explicitly used to broaden searches, e.g., science OR technology.
  • Special characters like * for wildcard searches can be employed when supported, e.g., chem* to match "chemistry" and "chemical".
  • Negation can be used to exclude terms from the results, e.g., -climate excludes results containing "climate".
  • The search is case-insensitive.

Example Search Queries:

  • data science: Finds results containing both "data" and "science".
  • "artificial intelligence": Matches entities that contain the exact phrase.
  • biology OR physics: Retrieves entities related to either biology or physics.
  • genetics -medicine: Finds results related to "genetics" but not containing "medicine".
URL template
/chunks

GET List Chunks

Description

Retrieves chunks by the parent File.id.

URL template
/files/{file_id}/chunks

GET List Collections

Description

Retrieves a list of collection summaries.

The filter parameter should be a string formatted as a simple query string allowing filtering of collections based on specified conditions. The syntax combines conditions using a comma to represent the logical operator AND; the syntax only supports the logical OR operator WITHIN a condition, as described below:

Filter Syntax:

  • Each condition should be in the format: field[op]value

    • field: The name of the field on which the condition is applied.
    • op: The operator to use for comparison (e.g., eq for equals, gt for greater than).
    • value: The value against which the field is compared.
  • Multiple conditions can be combined by using a , meaning condition 1 AND condition 2. E.g. name[eq]"STA",!id[eq]"6b21bb6b-7e07-4688-9b7f-23a4f36a9011".

  • Mulitple conditions can be combined by using a | within a single condition meaning value 1 OR value 2. E.g. name[eq]"STA|Post-16 Guidance".

  • Conditions can be negated by using a !. E.g. !name[eq]"STA".

Example Filter:

name[lk]"*Guidance",tags[eq]"version:v1",!tags[eq]"location:england"
  • This example checks if the name field is like "*Guidance" and has a tag with a key value equal to version, v1 and doesn't have a tag equal to location, england.

The search parameter is used to perform a full-text search on the entities. The search relies on natural language processing capabilities to find relevant results based on the input query. It supports constructs that align with common search engine syntax, making it intuitive for users familiar with web-based searching.

Search Syntax:

  • The search query should be a string composed of keywords or phrases.
  • The system interprets spaces between words as logical AND operators, requiring all terms to be present.
  • Use quotes for phrases to search for exact matches, e.g., "machine learning".
  • Logical operators such as OR can be explicitly used to broaden searches, e.g., science OR technology.
  • Special characters like * for wildcard searches can be employed when supported, e.g., chem* to match "chemistry" and "chemical".
  • Negation can be used to exclude terms from the results, e.g., -climate excludes results containing "climate".
  • The search is case-insensitive.

Example Search Queries:

  • data science: Finds results containing both "data" and "science".
  • "artificial intelligence": Matches entities that contain the exact phrase.
  • biology OR physics: Retrieves entities related to either biology or physics.
  • genetics -medicine: Finds results related to "genetics" but not containing "medicine".
URL template
/collections

GET List Datasets

Description

Retrieves a list of dataset summaries.

The filter parameter should be a string formatted as a simple query string allowing filtering of collections based on specified conditions. The syntax combines conditions using a comma to represent the logical operator AND; the syntax only supports the logical OR operator WITHIN a condition, as described below:

Filter Syntax:

  • Each condition should be in the format: field[op]value

    • field: The name of the field on which the condition is applied.
    • op: The operator to use for comparison (e.g., eq for equals, gt for greater than).
    • value: The value against which the field is compared.
  • Multiple conditions can be combined by using a , meaning condition 1 AND condition 2. E.g. name[eq]"STA",!id[eq]"6b21bb6b-7e07-4688-9b7f-23a4f36a9011".

  • Mulitple conditions can be combined by using a | within a single condition meaning value 1 OR value 2. E.g. name[eq]"STA|Post-16 Guidance".

  • Conditions can be negated by using a !. E.g. !name[eq]"STA".

Example Filter:

name[eq]"DfE",!description[lk]"*primary*|*ks3*"
  • This example checks if the name field is equal to "DfE" and the description field is not like "primary" of "ks3".

The search parameter is used to perform a full-text search on the entities. The search relies on natural language processing capabilities to find relevant results based on the input query. It supports constructs that align with common search engine syntax, making it intuitive for users familiar with web-based searching.

Search Syntax:

  • The search query should be a string composed of keywords or phrases.
  • The system interprets spaces between words as logical AND operators, requiring all terms to be present.
  • Use quotes for phrases to search for exact matches, e.g., "machine learning".
  • Logical operators such as OR can be explicitly used to broaden searches, e.g., science OR technology.
  • Special characters like * for wildcard searches can be employed when supported, e.g., chem* to match "chemistry" and "chemical".
  • Negation can be used to exclude terms from the results, e.g., -climate excludes results containing "climate".
  • The search is case-insensitive.

Example Search Queries:

  • data science: Finds results containing both "data" and "science".
  • "artificial intelligence": Matches entities that contain the exact phrase.
  • biology OR physics: Retrieves entities related to either biology or physics.
  • genetics -medicine: Finds results related to "genetics" but not containing "medicine".
URL template
/datasets

GET List Files

Description

Retrieves a list of file summaries.

The filter parameter should be a string formatted as a simple query string allowing filtering of collections based on specified conditions. The syntax combines conditions using a comma to represent the logical operator AND; the syntax only supports the logical OR operator WITHIN a condition, as described below:

Filter Syntax:

  • Each condition should be in the format: field[op]value

    • field: The name of the field on which the condition is applied.
    • op: The operator to use for comparison (e.g., eq for equals, gt for greater than).
    • value: The value against which the field is compared.
  • Multiple conditions can be combined by using a , meaning condition 1 AND condition 2. E.g. name[eq]"STA",!id[eq]"6b21bb6b-7e07-4688-9b7f-23a4f36a9011".

  • Mulitple conditions can be combined by using a | within a single condition meaning value 1 OR value 2. E.g. name[eq]"STA|Post-16 Guidance".

  • Conditions can be negated by using a !. E.g. !name[eq]"STA".

Example Filter:

"!publishers[lk]"DfE|*Oxford*",!tags[eq]"location:england|version:v1"
  • This example checks if the publisher field isn't like "DFE" or "Oxford" and doesn't have a tag equal to location, england or version, v1.

The search parameter is used to perform a full-text search on the entities. The search relies on natural language processing capabilities to find relevant results based on the input query. It supports constructs that align with common search engine syntax, making it intuitive for users familiar with web-based searching.

Search Syntax:

  • The search query should be a string composed of keywords or phrases.
  • The system interprets spaces between words as logical AND operators, requiring all terms to be present.
  • Use quotes for phrases to search for exact matches, e.g., "machine learning".
  • Logical operators such as OR can be explicitly used to broaden searches, e.g., science OR technology.
  • Special characters like * for wildcard searches can be employed when supported, e.g., chem* to match "chemistry" and "chemical".
  • Negation can be used to exclude terms from the results, e.g., -climate excludes results containing "climate".
  • The search is case-insensitive.

Example Search Queries:

  • data science: Finds results containing both "data" and "science".
  • "artificial intelligence": Matches entities that contain the exact phrase.
  • biology OR physics: Retrieves entities related to either biology or physics.
  • genetics -medicine: Finds results related to "genetics" but not containing "medicine".
URL template
/files

GET List Metrics

Description

Retrieves a paginated list of field occurrences.

URL template
/collections/metrics/{field}

GET List Metrics

Description

Retrieves a paginated list of field occurrences.

URL template
/files/metrics/{field}

GET List Metrics

Description

Retrieves a paginated list of field occurrences.

URL template
/datasets/metrics/{field}

GET List Publishers

Description

Lists publishers, with optional search and filtering.

Returns a paginated list of publisher summaries, each including the publisher's key, value, and the number of times it is associated with collections, files, or datasets.

If the search parameter is provided, a full-text search is performed over publisher fields. Matching results will include a relevance_score indicating how closely each publisher matches the search terms. If search is not used, relevance_score will be absent.

If the filter parameter is provided, results can be filtered using a query string syntax that supports AND, OR, equality, inequality, wildcards, and negation for publisher fields.

Example usages:

  • /publishers?search=science
  • /publishers?filter=key[eq]"Subject",value[lk]"*Science*"

Notes:

  • This endpoint returns only summary information for each publisher.
  • The publisher description field is NOT included in these results.
  • Occurrence counts for linked files, datasets, and collections are always included.
  • If search is used, each result includes a relevance_score field (float), otherwise this field is omitted.

Filtering Guide:

  • , (comma) for logical AND between conditions.
  • | inside a value for logical OR.
  • ! to negate a condition.
  • Example: key[eq]"Subject",!value[eq]"maths"
  • Example: value[lk]"*Science*|*Technology*"

Search Guide:

  • Unquoted words: AND logic ("math science" → must match both).
  • Quoted phrases: exact search ("computer science").
  • OR, -, *: supported for more flexible and broad queries.

Returns: BaseListResponse[PublisherSummaryWithoccurrences]: Paginated publisher summaries.

URL template
/publishers

GET List Tags

Description

Lists tags, with optional search and filtering.

Returns a paginated list of tag summaries, each including the tag's key, value, and the number of times it is associated with collections, files, or datasets.

If the search parameter is provided, a full-text search is performed over tag fields.Matching results will include a relevance_score indicating how closely each tag matches the search terms. If search is not used, relevance_score will be absent.

If the filter parameter is provided, results can be filtered using a query string syntax that supports AND, OR, equality, inequality, wildcards, and negation for tag fields.

Example usages:

  • /tags?search=science
  • /tags?filter=key[eq]"Subject",value[lk]"*Science*"

Notes:

  • This endpoint returns only summary information for each tag.
  • The tag description field is NOT included in these results.
  • Occurrence counts for linked files, datasets, and collections are always included.
  • If search is used, each result includes a relevance_score field (float), otherwise this field is omitted.

Filtering Guide:

  • , (comma) for logical AND between conditions.
  • | inside a value for logical OR.
  • ! to negate a condition.
  • Example: key[eq]"Subject",!value[eq]"maths"
  • Example: value[lk]"*Science*|*Technology*"

Search Guide:

  • Unquoted words: AND logic ("math science" → must match both).
  • Quoted phrases: exact search ("computer science").
  • OR, -, *: supported for more flexible and broad queries.

Returns: BaseListResponse[TagSummaryWithoccurrences]: Paginated tag summaries.

URL template
/tags

GET Liveness

Description

Liveness

URL template
/health/liveness

GET Openapi

Description

Endpoint to retrieve the OpenAPI 3.1 specification.

Returns: dict: The OpenAPI 3.1 specification.

URL template
/openapi.json

GET Readiness

Description

Checks the health of the application by verifying database connectivity and Azure Storage Account access.

URL template
/health/readiness

GET Redirect To Url

Description

Redirect To Url

URL template
/

GET Req Version

Description

Req Version

URL template
/health/version

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/chunks/filters

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/collections/filters

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/datasets/filters

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/files/filters

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/publishers/filters

GET List Filters

Description

Retrieves all possible filter fields.

URL template
/tags/filters

Back to top