RAD
Required roles:
AIS PIB API— Roles
Base endpoint:https://ais-pib-api.ibosoft.net.tr:2087/eurocontrol-rad
Reference documents: EUROCONTROL ERNIP Part 4 RAD Users Manual, Ed. 2.9 (26/11/25)
Attribution: showibonav.aerowherever this data is displayed
Data sources: EUROCONTROL Network Manager.
Last updated: 17 OCT 2026About the reference documents: Related Documents and Resources
Depending on your use, the original data sources may also need to be credited.
The Route Availability Document (RAD) of the EUROCONTROL Network Manager, sheet by sheet: the list of versions, the cover contents and the rows of each annex with filtering, sorting and paging, plus the original file.
Two RADs are in publication at the same time: the one for the current AIRAC cycle and the one for the next cycle (published 28 days in advance). Within a cycle the RAD is revised several times (1.0, 1.24, 1.26 …); each new version is detected and kept. Updates are checked every 30 minutes. For AIRAC dates see Effective Dates.
Endpoints
| Endpoint | Description |
|---|---|
GET /eurocontrol-rad/status |
Service status, current and next AIRAC, number of versions |
GET /eurocontrol-rad/versions |
All known versions |
GET /eurocontrol-rad/{selector}/cover |
Version data and the contents table of the cover |
GET /eurocontrol-rad/{selector}/sheets |
The sheets of a version with their row and column counts |
GET /eurocontrol-rad/{selector}/sheets/{sheet}/columns |
Column headers of a sheet |
GET /eurocontrol-rad/{selector}/sheets/{sheet} |
Rows of a sheet — filtered, sorted, paged (most used) |
GET /eurocontrol-rad/{selector}/sheets/{sheet}/columns/{col_index}/values |
Distinct values of a column with counts (for filter menus) |
GET /eurocontrol-rad/{selector}/download |
The original .xlsx file |
Parameters
selector
| Value | Meaning |
|---|---|
latest |
Highest version of the current AIRAC cycle (default choice for a user interface) |
next |
Highest version of the next AIRAC cycle |
{airac}/{version} |
A specific version, e.g. 2605/1.24 |
/versions
| Parameter | Description |
|---|---|
status |
current, next or past |
airac |
One AIRAC cycle, e.g. 2605 |
Row queries (/sheets/{sheet})
| Parameter | Description |
|---|---|
filter[<header>]=value |
Exact match. Repeated for the same header → OR; different headers → AND |
filter_text[<header>]=text |
Contains text. Repeated → OR |
search=text |
Contains text in any column |
sort=<header>:asc|desc |
Sort; can be repeated, the first one has priority |
limit, offset |
Paging (default 100, maximum 1000) |
filter and filter_text on the same column are combined with AND. /values takes the same filter, filter_text and search parameters, and limit (default 500).
Matching ignores case and diacritics (İSTANBUL, Istanbul and istanbul match each other). Line breaks in headers count as spaces: filter[Change Ind.]=NEW matches the header Change↵Ind.. An unknown header is ignored, not an error.
| Example | Query |
|---|---|
| One value | filter[Country]=BE |
| Several values (OR) | filter[Country]=BE&filter[Country]=NL |
| Different columns (AND) | filter[Country]=BE&filter[Rule]=DCT |
| Text | filter_text[FL Range]=FL245 |
| Any column | search=EVRA |
Response
/status
{
"scheduler": {
"started_at": "2026-05-25T06:00:00Z",
"last_run_at": "2026-05-25T06:30:00Z",
"last_success_at": "2026-05-25T06:30:01Z",
"last_error": null,
"last_error_at": null,
"next_poll_at": "2026-05-25T07:00:00Z"
},
"airac": {"current": "2605", "next": "2606"},
"version_counts": {"current": 4, "next": 2, "past": 18},
"total_versions": 24
}
/versions
{
"count": 24,
"versions": [
{"airac": "2605", "major": 1, "minor": 24, "version_str": "1.24",
"kind": "rolling_rad", "status": "current", "is_latest_for_airac": true,
"valid_from": "2026-05-14", "fetched_at": "2026-05-25T06:00:00Z", "has_changes": true}
]
}
| Field | Description |
|---|---|
kind |
rad (version 1.0, the first issue of the cycle) or rolling_rad (later revisions) |
status |
current, next or past, by the AIRAC cycle of the version |
is_latest_for_airac |
true for the highest version of its cycle |
Current versions come first, then next, then past; newest first within each.
/{selector}/cover
{
"airac": "2605", "version": "1.26", "valid_from": "2026-05-14",
"contents": [
{"annex": "Annex 1", "description": "Area Definitions", "chg": "NO"},
{"annex": "Annex 2B", "description": "Local and Cross-border …", "chg": "YES"}
]
}
chg: "YES" marks the annexes changed in this version. Only the contents table of the cover is returned.
/{selector}/sheets
{
"airac": "2605", "version": "1.26",
"sheets": [
{"name": "annex_1", "original_name": "Annex 1", "description": "Area Definitions", "has_change": false, "row_count": 245, "column_count": 8},
{"name": "annex_2b", "original_name": "Annex 2B", "description": "Local and Cross-border …", "has_change": true, "row_count": 1342, "column_count": 12}
]
}
name is the URL-safe sheet name used in the endpoints; original_name is the name in the RAD.
/{selector}/sheets/{sheet}
{
"airac": "2605", "version": "1.26", "sheet": "annex_2b",
"total": 1342, "count": 100, "limit": 100, "offset": 0,
"columns": [{"index": 1, "header": "Country"}, {"index": 2, "header": "Area ID"}],
"rows": [
{"_row": 17, "values": ["BE", "BRUEUR", "FL245 to FL285", "…"],
"rich": {"3": [{"t": "FL245 to ", "b": 0, "s": 0}, {"t": "FL285", "b": 1, "s": 0}]}}
]
}
rich is present only for cells with formatting; keys are column indexes, and each segment is {t: text, b: bold, s: strikethrough}.
/columns/{col_index}/values
{
"airac": "2605", "version": "1.26", "sheet": "annex_2b",
"column": {"index": 1, "header": "Country"},
"total_distinct": 24,
"values": [{"value": "FR", "count": 203}, {"value": "DE", "count": 156}]
}
The other active filters are applied; the column's own filter is not.
/{selector}/download
The original .xlsx file (Content-Disposition: attachment).
Errors
| Code | Meaning |
|---|---|
404 |
AIRAC cycle, version, sheet or column not found |
503 |
The service is starting up; retry shortly |
Examples
# Annex 2B rows of Belgium containing FL245 in "FL Range", sorted by FL Range
curl 'https://ais-pib-api.ibosoft.net.tr:2087/eurocontrol-rad/latest/sheets/annex_2b?filter[Country]=BE&filter_text[FL%20Range]=FL245&sort=FL%20Range:asc&limit=50'
# Rows containing "EVRA" in any column
curl 'https://ais-pib-api.ibosoft.net.tr:2087/eurocontrol-rad/latest/sheets/annex_2b?search=EVRA'
# Belgium or the Netherlands
curl 'https://ais-pib-api.ibosoft.net.tr:2087/eurocontrol-rad/latest/sheets/annex_2b?filter[Country]=BE&filter[Country]=NL'