> For the complete documentation index, see [llms.txt](https://docs.os.uk/os-apis/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.os.uk/os-apis/accessing-os-apis/os-downloads-api/technical-specification.md).

# Technical specification

OS Downloads API is a service that lets you automate the discovery and download of OS OpenData and data packages for OS Premium products.

This technical specification explains the methods that you can use to call the OS Downloads API.

{% hint style="info" %}
If you are not familiar with the OS Downloads API please read the [overview documentation](/os-apis/accessing-os-apis/os-downloads-api.md) before proceeding.
{% endhint %}

OS Downloads API allows you to access information about available OS OpenData products and obtain product metadata as well as download links. The API also allows you to access information about your data packages, and to download any available data package versions. The API can be used to automate the retrieval and integration of OS data with your own systems.

## Core concepts

This specification does not cover core concepts that apply to all Ordnance Survey APIs.

Please read the following pages to learn more about OS API core concepts:

* [Authentication](/os-apis/core-concepts/authentication.md)
* [Error codes](/os-apis/core-concepts/error-codes.md)
* [Rate-limiting policy](/os-apis/core-concepts/rate-limiting-policy.md)

## API reference

{% hint style="info" %}
To use the:

* OS OpenData parts of this API, you do not require an API Key.
* Data package endpoints (Premium products), you need to use an API Key (or OAuth 2 access token).
  {% endhint %}

Since the content of the API may change as products are changed, added to or removed, you should use the methods listed to get the most current list of content available.

The OS Downloads API provides different methods for downloading OS OpenData and data packages (Premium data products).

### OS OpenData

Operations providing access to OS OpenData products:

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>OpenData products</strong></td><td>Returns a list of OS OpenData products that are available.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/opendata-products.md">OpenData products</a></td></tr><tr><td><strong>OpenData product details</strong></td><td>Return details about a specific OS OpenData product.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/opendata-product-details.md">OpenData product details</a></td></tr><tr><td><strong>Download an OpenData product</strong></td><td>Return a list of downloads for a specific OS OpenData product</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/download-an-opendata-product.md">Download an OpenData product</a></td></tr><tr><td><strong>OpenData product image</strong></td><td>Return a HTTP redirect to thumbnail images for an OS OpenData product.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/opendata-product-image.md">OpenData product image</a></td></tr></tbody></table>

### Premium OS Data (data packages)

Operations providing access to data packages.

{% hint style="warning" %}
To access data packages you must supply a valid API Key or OAuth 2 access token.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Data packages</strong></td><td>Lists the data packages that are available.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/data-packages.md">Data packages</a></td></tr><tr><td><strong>Data package ID</strong></td><td>Get a specific data package.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/data-package-id.md">Data package ID</a></td></tr><tr><td><strong>Data package version</strong></td><td>Get a list of versions for a specific data package.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/data-package-version.md">Data package version</a></td></tr><tr><td><strong>Data package version ID</strong></td><td>Get a specific data package version.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/data-package-version-id.md">Data package version ID</a></td></tr><tr><td><strong>Download a data package</strong></td><td>Get a specific file from a data package version.</td><td><a href="/os-apis/accessing-os-apis/os-downloads-api/technical-specification/download-a-data-package.md">Download a data package</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.os.uk/os-apis/accessing-os-apis/os-downloads-api/technical-specification.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
