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.
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
descriptionfield 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
descriptionfield 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
filterparameter 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]valuefield: 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
contentfield 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
searchparameter 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.,
-climateexcludes 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
filterparameter 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]valuefield: 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
namefield 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
searchparameter 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.,
-climateexcludes 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
filterparameter 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]valuefield: 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
namefield is equal to "DfE" and thedescriptionfield is not like "primary" of "ks3".
The
searchparameter 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.,
-climateexcludes 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
filterparameter 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]valuefield: 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
publisherfield isn't like "DFE" or "Oxford" and doesn't have a tag equal to location, england or version, v1.
The
searchparameter 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.,
-climateexcludes 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
searchparameter is provided, a full-text search is performed over publisher fields. Matching results will include arelevance_scoreindicating how closely each publisher matches the search terms. Ifsearchis not used,relevance_scorewill be absent.If the
filterparameter 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
descriptionfield 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_scorefield (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
searchparameter is provided, a full-text search is performed over tag fields.Matching results will include arelevance_scoreindicating how closely each tag matches the search terms. Ifsearchis not used,relevance_scorewill be absent.If the
filterparameter 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
descriptionfield 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_scorefield (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