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: show ibonav.aero wherever this data is displayed
Data sources: EUROCONTROL Network Manager.
Last updated: 17 OCT 2026

About 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'