Save up to 17% with yearly billing

See pricing

Задержки FAA

Получайте активные программы задержек Национальной системы воздушного пространства FAA (NAS — гражданское воздушное пространство США) для аэропортов США и территорий США. Используйте общенациональный поток данных для операционных дашбордов, а поток по отдельному аэропорту — для дополнения табло вылетов, оповещений экипажей и уведомлений пассажиров.

Категории задержек:

КодНазваниеОписание
GDPПрограмма наземных задержек (Ground Delay Program)Дозирование прилётов на объект — включает строки со средней и максимальной задержкой
GSЗапрет вылетов (Ground Stop)Задержка вылетов в направлении конкретного объекта
ClosureЗакрытие аэропорта/программыОбъект закрыт или работает с ограничениями
AFPПрограмма управления потоками в воздушном пространстве (Airspace Flow Program)Перенаправление трафика на уровне ARTCC

Покрытие ограничено аэропортами под юрисдикцией FAA — континентальная часть США, Аляска, Гавайи, Пуэрто-Рико, Виргинские Острова США, Гуам и другие тихоокеанские территории США. Для контекста задержек за пределами США комбинируйте эти данные со Статусом рейса и операционными данными авиакомпаний.

Важно: массивы в ответе присутствуют всегда, но могут быть пустыми — total_alerts: 0 со строкой message является корректным ответом «нет активных программ», а не ошибкой. Не кэшируйте дольше 2–5 минут — программы GDP и GS меняются практически без предупреждения.

ЭндпоинтКогда использовать
GET /delays/faaОперационная карта — все активные оповещения GDP, GS, закрытия и AFP
GET /delays/faa/{icao}Сведения по аэропорту — задержки, затрагивающие один аэропорт США

Все текущие задержки FAA

Возвращает все активные задержки FAA NAS по всей стране.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/delays/faa

Query-параметров нет. Возвращает текущие программы задержек FAA; данные обновляются при каждом запросе.

Ответ

{
  "ground_delays": [
    {
      "airport": "KSFO",
      "airport_name": null,
      "reason": "low ceilings",
      "avg_delay": "34 minutes",
      "max_delay": "1 hour and 25 minutes"
    }
  ],
  "ground_stops": [],
  "closures": [
    {
      "airport": "KJFK",
      "airport_name": null,
      "reason": "!JFK 06/158 JFK AD AP CLSD TO TRANSIENT GA ACFT EXC 24HR PPR ...",
      "begin": "Jun 11 at 16:30 UTC.",
      "reopen": "Jul 22 at 03:59 UTC."
    }
  ],
  "airspace_flow_programs": [],
  "total_alerts": 8,
  "message": null
}
ПолеТипОбязательныйДопускает nullОписание
ground_delaysarrayДаНикогдаАктивные записи GDP
ground_stopsarrayДаНикогдаАктивные запреты вылетов
closuresarrayДаНикогдаЗакрытия аэропортов/программ
airspace_flow_programsarrayДаНикогдаПрограммы управления потоками ARTCC
total_alertsintegerНетНикогдаСумма всех строк оповещений (по умолчанию 0)
messagestringНетДаТекст статуса, когда активных задержек нет

Наземная задержка (ground_delays[])

ПолеТипОбязательныйДопускает nullОписание
airportstringДаНикогдаИдентификатор аэропорта ICAO или FAA
airport_namestringНетДаНазвание аэропорта, если указано
reasonstringДаНикогдаПричина задержки (часто погода или объём трафика)
avg_delaystringНетДаСредняя продолжительность задержки (в удобочитаемом виде)
max_delaystringНетДаМаксимальная продолжительность задержки

Запрет вылетов (ground_stops[])

ПолеТипОбязательныйДопускает nullОписание
airportstringДаНикогдаЗатронутый аэропорт
airport_namestringНетДаНазвание аэропорта, если доступно
reasonstringДаНикогдаПричина запрета
end_timestringНетДаОжидаемое время окончания (UTC)

Закрытие (closures[])

ПолеТипОбязательныйДопускает nullОписание
airportstringДаНикогдаЗатронутый аэропорт
airport_namestringНетДаНазвание аэропорта, если доступно
reasonstringДаНикогдаПричина закрытия (часто включает текст NOTAM)
beginstringНетДаНачало закрытия (UTC, в удобочитаемом виде)
reopenstringНетДаОжидаемое время открытия

Программа управления потоками в воздушном пространстве (airspace_flow_programs[])

ПолеТипОбязательныйДопускает nullОписание
facilitystringДаНикогдаИдентификатор органа УВД (ARTCC — районный диспетчерский центр), а не код аэропорта
reasonstringДаНикогдаПричина программы
fca_startstringНетДаНачало зоны ограничения потока (FCA)
fca_endstringНетДаКонец зоны ограничения потока (FCA)

Важно: программы управления потоками используют facility (ARTCC), а не код аэропорта — чётко подписывайте их в интерфейсе, чтобы пользователи не путали строки AFP с задержками конкретного аэропорта.

GET
/delays/faa
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Response Body

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/delays/faa"
{
  "ground_delays": [
    {
      "airport": "KEWR",
      "reason": "WEATHER / THUNDERSTORMS",
      "avg_delay": "1 hour and 30 minutes",
      "max_delay": "2 hours"
    }
  ],
  "ground_stops": [],
  "closures": [],
  "airspace_flow_programs": [],
  "total_alerts": 1
}

Задержки для конкретного аэропорта

Возвращает активные задержки FAA, отфильтрованные по конкретному аэропорту США по коду ICAO. Программы управления потоками (уровня ARTCC) включаются полностью, поскольку они могут косвенно влиять на запрошенный аэропорт.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/delays/faa/{icao}
ПараметрТипОбязательныйОписание
icaostringДа4-буквенный код ICAO аэропорта США (например, KJFK)

Ответ

Та же структура, что и в разделе Все текущие задержки FAA, но массивы отфильтрованы по запрошенному аэропорту (плюс соответствующие строки AFP).

{
  "ground_delays": [],
  "ground_stops": [],
  "closures": [
    {
      "airport": "KJFK",
      "airport_name": null,
      "reason": "!JFK 06/158 JFK AD AP CLSD TO TRANSIENT GA ACFT EXC 24HR PPR ...",
      "begin": "Jun 11 at 16:30 UTC.",
      "reopen": "Jul 22 at 03:59 UTC."
    }
  ],
  "airspace_flow_programs": [],
  "total_alerts": 1,
  "message": null
}
GET
/delays/faa/{icao}
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Path Parameters

icao*Icao

4-letter ICAO airport code (e.g. KJFK)

Length4 <= length <= 4

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/delays/faa/KJFK"
{
  "ground_delays": [
    {
      "airport": "string",
      "airport_name": "string",
      "reason": "string",
      "avg_delay": "string",
      "max_delay": "string"
    }
  ],
  "ground_stops": [
    {
      "airport": "string",
      "airport_name": "string",
      "reason": "string",
      "end_time": "string"
    }
  ],
  "closures": [
    {
      "airport": "string",
      "airport_name": "string",
      "reason": "string",
      "begin": "string",
      "reopen": "string"
    }
  ],
  "airspace_flow_programs": [
    {
      "facility": "string",
      "reason": "string",
      "fca_start": "string",
      "fca_end": "string"
    }
  ],
  "total_alerts": 0,
  "message": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Клиентские типы

"""FAA NAS delay response models for /delays/faa endpoints."""from __future__ import annotationsfrom dataclasses import dataclassfrom typing import Literal@dataclassclass GroundDelay:    airport: str    reason: str    airport_name: str | None = None    avg_delay: str | None = None    max_delay: str | None = None@dataclassclass GroundStop:    airport: str    reason: str    airport_name: str | None = None    end_time: str | None = None@dataclassclass Closure:    airport: str    reason: str    airport_name: str | None = None    begin: str | None = None    reopen: str | None = None@dataclassclass AirspaceFlowProgram:    facility: str    reason: str    fca_start: str | None = None    fca_end: str | None = None@dataclassclass FaaDelayResponse:    ground_delays: list[GroundDelay]    ground_stops: list[GroundStop]    closures: list[Closure]    airspace_flow_programs: list[AirspaceFlowProgram]    total_alerts: int = 0    message: str | None = NoneDelayKind = Literal["GDP", "GS", "Closure", "AFP"]@dataclassclass DelayAlert:    kind: DelayKind    airport: str    reason: str    avg_delay: str | None    max_delay: str | None

Интеграция

Опрашивайте задержки FAA по аэропорту и сводите их в единый список оповещений для табло вылетов.

Пример ниже кэширует ответы на 2 минуты, потому что во время погодных явлений программы задержек меняются часто. Каждый запрос использует явные тайм-ауты (10 с на подключение / 20 с на чтение). Вспомогательная функция объединяет строки GDP, GS, закрытий и AFP в единый список DelayAlert для отрисовки бейджей.

import osimport timefrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}DELAY_TTL = 120  # 2 min - FAA feed is real-time@dataclassclass DelayAlert:    kind: str    airport: str    reason: str    avg_delay: str | None    max_delay: str | Nonedef fetch_faa_delays(icao: str | None = None) -> dict:    key = f"delays:{icao or 'all'}"    cached = CACHE.get(key)    if cached and time.time() < cached[1]:        return cached[0]    path = f"{BASE}/delays/faa/{icao.upper()}" if icao else f"{BASE}/delays/faa"    try:        r = requests.get(path, headers=HEADERS, timeout=(10, 20))    except requests.Timeout as exc:        raise RuntimeError("SkyLink timeout fetching FAA delays") from exc    r.raise_for_status()    data = r.json()    CACHE[key] = (data, time.time() + DELAY_TTL)    return datadef delay_alerts(icao: str | None = None) -> list[DelayAlert]:    data = fetch_faa_delays(icao)    alerts: list[DelayAlert] = []    for item in data.get("ground_delays", []):        alerts.append(            DelayAlert(                kind="GDP",                airport=item["airport"],                reason=item["reason"],                avg_delay=item.get("avg_delay"),                max_delay=item.get("max_delay"),            )        )    for item in data.get("ground_stops", []):        alerts.append(            DelayAlert(kind="GS", airport=item["airport"], reason=item["reason"], avg_delay=None, max_delay=None)        )    for item in data.get("closures", []):        alerts.append(            DelayAlert(kind="Closure", airport=item["airport"], reason=item["reason"], avg_delay=None, max_delay=None)        )    for item in data.get("airspace_flow_programs", []):        alerts.append(            DelayAlert(                kind="AFP",                airport=item["facility"],                reason=item["reason"],                avg_delay=None,                max_delay=None,            )        )    return alertsif __name__ == "__main__":    import json    delays = fetch_faa_delays("KJFK")    print(json.dumps(delays, indent=2, default=str))

Примечания по реализации

Продолжительность в удобочитаемом виде. avg_delay и max_delay — строки (например, "34 minutes"): разбирайте их с осторожностью или показывайте как есть.

Пустые ответы. total_alerts: 0 с заполненным message может означать, что активных программ по стране нет, — показывайте пустое состояние, а не баннер с ошибкой.

Ответы с ошибками

Общие ошибки платформы: Обработка ошибок. Специфичные для эндпоинта:

422 — некорректная длина кода ICAO

{
  "detail": [
    {
      "type": "string_too_short",
      "loc": ["path", "icao"],
      "msg": "String should have at least 4 characters"
    }
  ]
}

Руководства по интеграции

РуководствоСодержание
NOTAMСводная таблица, фильтр по аэродрому, предполётная проверка
Задержки FAAСканирование по всей стране, дашборд хаба
Обработка ошибокПустые массивы, покрытие только США
Кэширование и мониторингTTL: 5 мин для NOTAM / 2 мин для FAA

См. также: NOTAM · Статус рейса · Расписания