> 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.

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.3.0-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"security":[{"OAuth2":[]},{"APIKeyQuery":[]},{"APIKeyHeader":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"OAUTH_TOKEN_URL","scopes":{}}}},"APIKeyQuery":{"type":"apiKey","in":"query","name":"key"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"key"}},"parameters":{"SpatialParameters":{"name":"SpatialParameters","in":"query","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":{"name":"TemporalParameters","in":"query","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"}}},"schemas":{"SpatialParameters":{"type":"object","properties":{"location":{"type":"string","description":"Optional, Point location for the search. Will reorder the results by distance from this point. National Grid Eastings and Northings (space separated),"},"radius":{"type":"integer","description":"Optional, limits the search to the given radius. 'location' must also be provided."},"stationCount":{"type":"integer","description":"Optional, limits the result to a fixed number of stations. 'location' must also be provided."}},"description":"Spatial parameters for the /stations endpoint"},"TemporalParameters":{"type":"object","properties":{"start":{"type":"string","description":"Optional start date-time for the search window","format":"date-time"},"end":{"type":"string","description":"Optional end date-time for the search window","format":"date-time"}},"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."},"Station":{"required":["ETRS89_H","ETRS89_Lat","ETRS89_Long","ETRS89_X","ETRS89_Y","ETRS89_Z","OSGB36_E","OSGB36_N","ortho_Datum","ortho_h","percentageComplete","stationId","tranModel"],"type":"object","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":{"maximum":100,"minimum":0,"type":"integer","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."},"distance":{"type":"number","description":"Distance in KM from given search point, to two decimal places. Omitted if the query did not include a location."},"links":{"type":"array","description":"Links for finding further information about the station.\n","items":{"$ref":"#/components/schemas/Link"}}},"description":"Information about a GPS station."},"Link":{"title":"Link","required":["description","href","rel","title","type"],"type":"object","properties":{"href":{"type":"string","format":"uri"},"rel":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"description":"Provides a link leading to further information about a resource"}}},"paths":{"/stations":{"get":{"tags":["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.","operationId":"Get Stations","parameters":[{"$ref":"#/components/parameters/SpatialParameters"},{"$ref":"#/components/parameters/TemporalParameters"}],"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"}}}}}}}}}
```

## 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.3.0-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"security":[{"OAuth2":[]},{"APIKeyQuery":[]},{"APIKeyHeader":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"OAUTH_TOKEN_URL","scopes":{}}}},"APIKeyQuery":{"type":"apiKey","in":"query","name":"key"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"key"}},"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"}}},"schemas":{"StationNetworkHealth":{"type":"array","items":{"type":"object","properties":{"stationId":{"type":"string"},"hourlyData":{"$ref":"#/components/schemas/HourlyData"}}}},"HourlyData":{"type":"array","items":{"type":"object","properties":{"hour":{"maximum":23,"minimum":0,"type":"integer"},"percentageComplete":{"maximum":100,"minimum":0,"type":"integer"}}}}}},"paths":{"/stations/health":{"get":{"tags":["Stations"],"description":"Get an hour-by-hour breakdown of the OS Net network health for a specific date.","operationId":"Get Network Health","parameters":[{"$ref":"#/components/parameters/date"}],"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"}}}}}}}}}
```

## 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.

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.3.0-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"security":[{"OAuth2":[]},{"APIKeyQuery":[]},{"APIKeyHeader":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"OAUTH_TOKEN_URL","scopes":{}}}},"APIKeyQuery":{"type":"apiKey","in":"query","name":"key"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"key"}},"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"maxLength":4,"minLength":4,"pattern":"^[a-zA-Z0-9]*$","type":"string"}},"TemporalParameters":{"name":"TemporalParameters","in":"query","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"}}},"schemas":{"TemporalParameters":{"type":"object","properties":{"start":{"type":"string","description":"Optional start date-time for the search window","format":"date-time"},"end":{"type":"string","description":"Optional end date-time for the search window","format":"date-time"}},"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."},"Station":{"required":["ETRS89_H","ETRS89_Lat","ETRS89_Long","ETRS89_X","ETRS89_Y","ETRS89_Z","OSGB36_E","OSGB36_N","ortho_Datum","ortho_h","percentageComplete","stationId","tranModel"],"type":"object","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":{"maximum":100,"minimum":0,"type":"integer","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."},"distance":{"type":"number","description":"Distance in KM from given search point, to two decimal places. Omitted if the query did not include a location."},"links":{"type":"array","description":"Links for finding further information about the station.\n","items":{"$ref":"#/components/schemas/Link"}}},"description":"Information about a GPS station."},"Link":{"title":"Link","required":["description","href","rel","title","type"],"type":"object","properties":{"href":{"type":"string","format":"uri"},"rel":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"description":"Provides a link leading to further information about a resource"}}},"paths":{"/stations/{stationId}":{"get":{"tags":["Stations"],"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.","operationId":"Get Station","parameters":[{"$ref":"#/components/parameters/stationId"},{"$ref":"#/components/parameters/TemporalParameters"}],"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"}}}}}}}}}
```

## GET /stations/{stationId}/health

> Get health information about a specific station

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.3.0-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"security":[{"OAuth2":[]},{"APIKeyQuery":[]},{"APIKeyHeader":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"OAUTH_TOKEN_URL","scopes":{}}}},"APIKeyQuery":{"type":"apiKey","in":"query","name":"key"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"key"}},"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"maxLength":4,"minLength":4,"pattern":"^[a-zA-Z0-9]*$","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":{"maximum":23,"minimum":0,"type":"integer"},"percentageComplete":{"maximum":100,"minimum":0,"type":"integer"}}}}}},"paths":{"/stations/{stationId}/health":{"get":{"tags":["Stations"],"description":"Get health information about a specific station","operationId":"Get Station Health","parameters":[{"$ref":"#/components/parameters/stationId"}],"responses":{"200":{"description":"Returns the station health, on a day-by-day basis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthByDate"}}}}}}}}}
```

## GET /stations/{stationId}/log

> Get logs for specified station

```json
{"openapi":"3.0.0","info":{"title":"OS Net API","version":"1.3.0-SNAPSHOT"},"servers":[{"url":"https://api.os.uk/positioning/osnet/v1"}],"security":[{"OAuth2":[]},{"APIKeyQuery":[]},{"APIKeyHeader":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"OAUTH_TOKEN_URL","scopes":{}}}},"APIKeyQuery":{"type":"apiKey","in":"query","name":"key"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"key"}},"parameters":{"stationId":{"name":"stationId","in":"path","description":"Specific station ID.","required":true,"schema":{"maxLength":4,"minLength":4,"pattern":"^[a-zA-Z0-9]*$","type":"string"}}}},"paths":{"/stations/{stationId}/log":{"get":{"tags":["Stations"],"description":"Get logs for specified station","operationId":"Get Station Logs","parameters":[{"$ref":"#/components/parameters/stationId"}],"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"}}}}}}}}}
```


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
