> 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-net-api/technical-specification/stations.md).

# Stations

## GET /stations

> Get a list of the current GPS stations over the specified time period. The info is derived from <https://www.ordnancesurvey.co.uk/documents/resources/osnet-coordinates-file.txt>. Note that if the start and end date are omitted then the response will not contain the percentageComplete property. The dataFrequency parameter is only relevant if the start and end date are supplied.

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.6.1-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"paths":{"/stations":{"get":{"parameters":[{"$ref":"#/components/parameters/SpatialParameters"},{"$ref":"#/components/parameters/TemporalParameters"},{"$ref":"#/components/parameters/dataFrequency"}],"operationId":"Get Stations","description":"Get a list of the current GPS stations over the specified time period. The info is derived from https://www.ordnancesurvey.co.uk/documents/resources/osnet-coordinates-file.txt. Note that if the start and end date are omitted then the response will not contain the percentageComplete property. The dataFrequency parameter is only relevant if the start and end date are supplied.","tags":["Stations"],"responses":{"200":{"description":"Returns the list of stations, either as structured JSON data or a simple text file","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Station"}}},"text/plain":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"type":"object"}}}}}}}},"components":{"parameters":{"SpatialParameters":{"in":"query","name":"SpatialParameters","description":"Spatial parameters for the /stations endpoint. These parameters can be used to restrict the station search to a specific geographic area.","required":false,"explode":true,"schema":{"$ref":"#/components/schemas/SpatialParameters"}},"TemporalParameters":{"in":"query","name":"TemporalParameters","description":"Parameters that provide an optional temporal window (from start to end) for a query. These parameters can be used to restrict the query to a specific time range. When using start and end, please note that start should be within the last 45 days, and the end should be no more than 24 hours after the start.","required":false,"explode":true,"schema":{"$ref":"#/components/schemas/TemporalParameters"}},"dataFrequency":{"name":"dataFrequency","in":"query","description":"Parameter that selects the data frequency for a query. If the parameter is omitted then the query will proceed as if 30S data has been requested. Ephemeris files do not have a data frequency, and will be returned regardless of the dataFrequency parameter. Every organisation has access to 30S data. Access to 01S data is restricted to organisations on the Public Sector Plan.","required":false,"schema":{"type":"string"}}},"schemas":{"SpatialParameters":{"description":"Spatial parameters for the /stations endpoint","type":"object","properties":{"location":{"description":"Optional. A point location for the search. Will reorder the results by distance from this point. Supports: National Grid eastings and northings (space separated), ETRS89 in Cartesian XYZ, decimal degrees (including degrees and decimal minutes / degrees, minutes, and decimal seconds), postcodes (including partial postcodes). More information: https://www.ordnancesurvey.co.uk/geodesy-positioning/coordinate-transformations/tool/formats.","type":"string"},"radius":{"description":"Optional, limits the search to the given radius. 'location' must also be provided.","type":"integer"},"stationCount":{"description":"Optional, limits the result to a fixed number of stations. 'location' must also be provided.","type":"integer"}}},"TemporalParameters":{"description":"Parameters that provide an optional temporal window (from start to end) for a query. When using start and end, please note that start should be within the last 45 days, and the end should be no more than 24 hours after the start.","type":"object","properties":{"start":{"description":"Optional start date-time for the search window","type":"string","format":"date-time"},"end":{"description":"Optional end date-time for the search window","type":"string","format":"date-time"}}},"Station":{"type":"object","description":"Information about a GPS station.","required":["stationId","ETRS89_X","ETRS89_Y","ETRS89_Z","ETRS89_Lat","ETRS89_Long","ETRS89_H","OSGB36_N","OSGB36_E","ortho_h","ortho_Datum","tranModel","percentageComplete"],"properties":{"stationId":{"type":"string"},"stationName":{"type":"string"},"ETRS89_X":{"type":"number"},"ETRS89_Y":{"type":"number"},"ETRS89_Z":{"type":"number"},"ETRS89_Lat":{"type":"string"},"ETRS89_Long":{"type":"string"},"ETRS89_H":{"type":"number"},"OSGB36_E":{"type":"number"},"OSGB36_N":{"type":"number"},"ortho_h":{"type":"number"},"ortho_Datum":{"type":"string"},"tranModel":{"type":"string"},"percentageComplete":{"description":"Health percentage, based on expected and actual data for the station, and for the overall time period that was queried. If the time period is omitted then the percentage complete will not be included in the response.","type":"integer","minimum":0,"maximum":100},"dataFrequency":{"description":"Gives the data frequency that the percentage complete describes.","type":"string"},"distance":{"description":"Distance in KM from given search point, to two decimal places. Omitted if the query did not include a location.","type":"number"},"links":{"description":"Links for finding further information about the station.\n","type":"array","items":{"$ref":"#/components/schemas/Link"}}}},"Link":{"title":"Link","description":"Provides a link leading to further information about a resource","type":"object","properties":{"href":{"type":"string","format":"uri"},"rel":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"required":["href","rel","type","title","description"]}}}}
```

## GET /stations/health

> Get an hour-by-hour breakdown of the OS Net network health for a specific date.

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.6.1-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"paths":{"/stations/health":{"get":{"operationId":"Get Network Health","description":"Get an hour-by-hour breakdown of the OS Net network health for a specific date.","tags":["Stations"],"parameters":[{"$ref":"#/components/parameters/date"},{"$ref":"#/components/parameters/dataFrequency"}],"responses":{"200":{"description":"Returns the network health for the given date. Each station in the network will be included in the response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationNetworkHealth"}}}}}}}},"components":{"parameters":{"date":{"name":"date","in":"query","description":"Date for the network health search. Please note that the date should be within the last 45 days.","required":true,"schema":{"type":"string","format":"date"}},"dataFrequency":{"name":"dataFrequency","in":"query","description":"Parameter that selects the data frequency for a query. If the parameter is omitted then the query will proceed as if 30S data has been requested. Ephemeris files do not have a data frequency, and will be returned regardless of the dataFrequency parameter. Every organisation has access to 30S data. Access to 01S data is restricted to organisations on the Public Sector Plan.","required":false,"schema":{"type":"string"}}},"schemas":{"StationNetworkHealth":{"type":"array","items":{"type":"object","properties":{"stationId":{"type":"string"},"hourlyData":{"$ref":"#/components/schemas/HourlyData"}}}},"HourlyData":{"type":"array","items":{"type":"object","properties":{"hour":{"type":"integer","minimum":0,"maximum":23},"percentageComplete":{"type":"integer","minimum":0,"maximum":100},"dataFrequency":{"description":"Gives the data frequency that the percentage complete describes.","type":"string"}}}}}}}
```

## GET /stations/{stationId}

> Get info on specified station over a specified time period. Note that if the start and end date are omitted then the response will not contain the percentageComplete property. The dataFrequency parameter is only relevant if the start and end date are supplied.

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.6.1-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"paths":{"/stations/{stationId}":{"get":{"operationId":"Get Station","parameters":[{"$ref":"#/components/parameters/stationId"},{"$ref":"#/components/parameters/TemporalParameters"},{"$ref":"#/components/parameters/dataFrequency"}],"description":"Get info on specified station over a specified time period. Note that if the start and end date are omitted then the response will not contain the percentageComplete property. The dataFrequency parameter is only relevant if the start and end date are supplied.","tags":["Stations"],"responses":{"200":{"description":"Returns info about the station, as structured JSON data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Station"}},"text/plain":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"type":"object"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"type":"object"}}}}}}}},"components":{"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"type":"string","minLength":4,"maxLength":4,"pattern":"^[a-zA-Z0-9]*$"}},"TemporalParameters":{"in":"query","name":"TemporalParameters","description":"Parameters that provide an optional temporal window (from start to end) for a query. These parameters can be used to restrict the query to a specific time range. When using start and end, please note that start should be within the last 45 days, and the end should be no more than 24 hours after the start.","required":false,"explode":true,"schema":{"$ref":"#/components/schemas/TemporalParameters"}},"dataFrequency":{"name":"dataFrequency","in":"query","description":"Parameter that selects the data frequency for a query. If the parameter is omitted then the query will proceed as if 30S data has been requested. Ephemeris files do not have a data frequency, and will be returned regardless of the dataFrequency parameter. Every organisation has access to 30S data. Access to 01S data is restricted to organisations on the Public Sector Plan.","required":false,"schema":{"type":"string"}}},"schemas":{"TemporalParameters":{"description":"Parameters that provide an optional temporal window (from start to end) for a query. When using start and end, please note that start should be within the last 45 days, and the end should be no more than 24 hours after the start.","type":"object","properties":{"start":{"description":"Optional start date-time for the search window","type":"string","format":"date-time"},"end":{"description":"Optional end date-time for the search window","type":"string","format":"date-time"}}},"Station":{"type":"object","description":"Information about a GPS station.","required":["stationId","ETRS89_X","ETRS89_Y","ETRS89_Z","ETRS89_Lat","ETRS89_Long","ETRS89_H","OSGB36_N","OSGB36_E","ortho_h","ortho_Datum","tranModel","percentageComplete"],"properties":{"stationId":{"type":"string"},"stationName":{"type":"string"},"ETRS89_X":{"type":"number"},"ETRS89_Y":{"type":"number"},"ETRS89_Z":{"type":"number"},"ETRS89_Lat":{"type":"string"},"ETRS89_Long":{"type":"string"},"ETRS89_H":{"type":"number"},"OSGB36_E":{"type":"number"},"OSGB36_N":{"type":"number"},"ortho_h":{"type":"number"},"ortho_Datum":{"type":"string"},"tranModel":{"type":"string"},"percentageComplete":{"description":"Health percentage, based on expected and actual data for the station, and for the overall time period that was queried. If the time period is omitted then the percentage complete will not be included in the response.","type":"integer","minimum":0,"maximum":100},"dataFrequency":{"description":"Gives the data frequency that the percentage complete describes.","type":"string"},"distance":{"description":"Distance in KM from given search point, to two decimal places. Omitted if the query did not include a location.","type":"number"},"links":{"description":"Links for finding further information about the station.\n","type":"array","items":{"$ref":"#/components/schemas/Link"}}}},"Link":{"title":"Link","description":"Provides a link leading to further information about a resource","type":"object","properties":{"href":{"type":"string","format":"uri"},"rel":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"required":["href","rel","type","title","description"]}}}}
```

## GET /stations/{stationId}/health

> Get health information about a specific station

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.6.1-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"paths":{"/stations/{stationId}/health":{"get":{"operationId":"Get Station Health","description":"Get health information about a specific station","tags":["Stations"],"parameters":[{"$ref":"#/components/parameters/stationId"},{"$ref":"#/components/parameters/dataFrequency"}],"responses":{"200":{"description":"Returns the station health, on a day-by-day basis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthByDate"}}}}}}}},"components":{"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"type":"string","minLength":4,"maxLength":4,"pattern":"^[a-zA-Z0-9]*$"}},"dataFrequency":{"name":"dataFrequency","in":"query","description":"Parameter that selects the data frequency for a query. If the parameter is omitted then the query will proceed as if 30S data has been requested. Ephemeris files do not have a data frequency, and will be returned regardless of the dataFrequency parameter. Every organisation has access to 30S data. Access to 01S data is restricted to organisations on the Public Sector Plan.","required":false,"schema":{"type":"string"}}},"schemas":{"HealthByDate":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"hourlyData":{"$ref":"#/components/schemas/HourlyData"}}}},"HourlyData":{"type":"array","items":{"type":"object","properties":{"hour":{"type":"integer","minimum":0,"maximum":23},"percentageComplete":{"type":"integer","minimum":0,"maximum":100},"dataFrequency":{"description":"Gives the data frequency that the percentage complete describes.","type":"string"}}}}}}}
```

## GET /stations/{stationId}/log

> Get logs for specified station

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.6.1-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"paths":{"/stations/{stationId}/log":{"get":{"operationId":"Get Station Logs","parameters":[{"$ref":"#/components/parameters/stationId"}],"description":"Get logs for specified station","tags":["Stations"],"responses":{"200":{"description":"Returns the station logs","content":{"text/plain":{"schema":{"type":"string"}},"application/xml":{"schema":{"type":"string"}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"type":"object"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"type":"object"}}}}}}}},"components":{"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"type":"string","minLength":4,"maxLength":4,"pattern":"^[a-zA-Z0-9]*$"}}}}}
```


---

# 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-net-api/technical-specification/stations.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.
