FAA-Verspätungen
Rufen Sie aktive Verspätungsprogramme des FAA National Airspace System (NAS — ziviler Luftraum der USA) für Flughäfen in den USA und in US-Territorien ab. Verwenden Sie den landesweiten Feed für Betriebs-Dashboards und den flughafenbezogenen Feed, um Abflugtafeln, Crew-Benachrichtigungen und Passagierinformationen zu ergänzen.
Verspätungskategorien:
| Code | Name | Beschreibung |
|---|---|---|
| GDP | Ground Delay Program | Zuflusssteuerung der Ankünfte an einer Einrichtung — enthält Strings für durchschnittliche und maximale Verspätung |
| GS | Ground Stop | Zurückhalten von Abflügen zu einer bestimmten Einrichtung |
| Closure | Schließung von Flughafen/Programm | Einrichtung geschlossen oder eingeschränkt |
| AFP | Airspace Flow Program | Verkehrsflussmanagement mit Umleitungen auf ARTCC-Ebene |
Die Abdeckung beschränkt sich auf Flughäfen im Zuständigkeitsbereich der FAA — die kontinentalen USA, Alaska, Hawaii, Puerto Rico, die Amerikanischen Jungferninseln, Guam und weitere US-Territorien im Pazifik. Für internationale Verspätungsinformationen kombinieren Sie die Daten mit Flugstatus und Betriebsdaten der Fluggesellschaften.
Wichtig: Die Arrays der Antwort sind immer vorhanden, können aber leer sein — total_alerts: 0 mit einem message-String ist eine gültige Antwort „keine aktiven Programme“, kein Fehler. Speichern Sie Ergebnisse nicht länger als 2–5 Minuten im Cache — GDP- und GS-Programme ändern sich sehr kurzfristig.
| Endpoint | Einsatzzweck |
|---|---|
GET /delays/faa | Betriebskarte — alle aktiven GDP-, GS-, Schließungs- und AFP-Meldungen |
GET /delays/faa/{icao} | Flughafendetails — Verspätungen, die einen US-Flughafen betreffen |
Alle aktuellen FAA-Verspätungen
Liefert alle aktiven FAA-NAS-Verspätungen landesweit.
Anfrage
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/delays/faaKeine Query-Parameter. Liefert die aktuellen Verspätungsprogramme der FAA; die Daten werden bei jeder Anfrage aktualisiert.
Antwort
{
"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
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
ground_delays | array | Ja | Nie | Aktive GDP-Einträge |
ground_stops | array | Ja | Nie | Aktive Ground Stops |
closures | array | Ja | Nie | Schließungen von Flughäfen/Programmen |
airspace_flow_programs | array | Ja | Nie | Airspace Flow Programs der ARTCCs |
total_alerts | integer | Nein | Nie | Summe aller Meldungszeilen (Standardwert 0) |
message | string | Nein | Ja | Statustext, wenn keine Verspätungen aktiv sind |
Ground Delay (ground_delays[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
airport | string | Ja | Nie | ICAO- oder FAA-Kennung des Flughafens |
airport_name | string | Nein | Ja | Name des Flughafens, sofern angegeben |
reason | string | Ja | Nie | Grund der Verspätung (häufig Wetter oder Verkehrsaufkommen) |
avg_delay | string | Nein | Ja | Durchschnittliche Verspätungsdauer (menschenlesbar) |
max_delay | string | Nein | Ja | Maximale Verspätungsdauer |
Ground Stop (ground_stops[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
airport | string | Ja | Nie | Betroffener Flughafen |
airport_name | string | Nein | Ja | Name des Flughafens, sofern verfügbar |
reason | string | Ja | Nie | Grund des Stopps |
end_time | string | Nein | Ja | Erwartetes Ende (UTC) |
Schließung (closures[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
airport | string | Ja | Nie | Betroffener Flughafen |
airport_name | string | Nein | Ja | Name des Flughafens, sofern verfügbar |
reason | string | Ja | Nie | Grund der Schließung (enthält häufig NOTAM-Text) |
begin | string | Nein | Ja | Beginn der Schließung (UTC, menschenlesbar) |
reopen | string | Nein | Ja | Erwarteter Zeitpunkt der Wiedereröffnung |
Airspace Flow Program (airspace_flow_programs[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
facility | string | Ja | Nie | Kennung der ATC-Einrichtung (ARTCC — Streckenkontrollzentrale), kein Flughafencode |
reason | string | Ja | Nie | Grund des Programms |
fca_start | string | Nein | Ja | Beginn der Flow Constrained Area |
fca_end | string | Nein | Ja | Ende der Flow Constrained Area |
Wichtig: Airspace Flow Programs verwenden facility (ARTCC) statt eines Flughafencodes — kennzeichnen Sie sie in den Texten Ihrer UI eindeutig, damit Benutzer AFP-Zeilen nicht mit flughafenspezifischen Verspätungen verwechseln.
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
}Verspätungen für einen bestimmten Flughafen
Liefert aktive FAA-Verspätungen, gefiltert nach einem bestimmten US-Flughafen anhand seines ICAO-Codes. Airspace Flow Programs (auf ARTCC-Ebene) sind vollständig enthalten, da sie den angefragten Flughafen indirekt betreffen können.
Anfrage
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/delays/faa/{icao}| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
icao | string | Ja | Vierstelliger US-ICAO-Code (z. B. KJFK) |
Antwort
Gleiche Hülle wie bei Alle aktuellen FAA-Verspätungen, wobei die Arrays auf den angefragten Flughafen gefiltert sind (zuzüglich relevanter AFP-Zeilen).
{
"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
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
4-letter ICAO airport code (e.g. KJFK)
4 <= length <= 4Response 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": {}
}
]
}Client-Typen
"""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 | NoneIntegration
Fragen Sie FAA-Verspätungen pro Flughafen regelmäßig ab und führen Sie sie für eine Abflugtafel in einer einheitlichen Meldungsliste zusammen.
Das folgende Beispiel speichert Antworten 2 Minuten im Cache, da sich Verspätungsprogramme bei Wetterereignissen häufig ändern. Jede Anfrage verwendet explizite Timeouts (10 s Verbindungsaufbau / 20 s Lesen). Die Hilfsfunktion führt GDP-, GS-, Schließungs- und AFP-Zeilen in einer einzigen DelayAlert-Liste für die Darstellung als Badges zusammen.
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))Hinweise zur Implementierung
Menschenlesbare Dauern. avg_delay und max_delay sind Strings (z. B. "34 minutes") — parsen Sie sie zurückhaltend oder zeigen Sie sie unverändert an.
Leere Antworten. total_alerts: 0 mit gesetztem message kann bedeuten, dass landesweit keine Programme aktiv sind — zeigen Sie einen Leerzustand an, kein Fehlerbanner.
Fehlerantworten
Gemeinsame Plattformfehler: Fehlerbehandlung. Endpoint-spezifisch:
422 — ungültige ICAO-Länge
{
"detail": [
{
"type": "string_too_short",
"loc": ["path", "icao"],
"msg": "String should have at least 4 characters"
}
]
}Integrationsleitfäden
| Leitfaden | Inhalt |
|---|---|
| NOTAMs | Übersichtstabelle, Flugplatzfilter, Prüfung vor dem Flug |
| FAA-Verspätungen | Landesweiter Überblick, Hub-Dashboard |
| Fehlerbehandlung | Leere Arrays, Abdeckung nur für die USA |
| Caching & Monitoring | TTLs von 5 min für NOTAMs / 2 min für FAA |
Siehe auch: NOTAMs · Flugstatus · Flugpläne