Save up to 17% with yearly billing

See pricing

NOTAMs

Rufen Sie aktuell gültige Notices to Air Missions (NOTAMs — maßgebliche betriebliche Hinweise, die einen Ort oder Luftraum betreffen) für jeden ICAO-Flughafencode weltweit ab. Verwenden Sie diesen Endpoint in Briefing-Workflows, Dispatch-Dashboards und Vorflug-Checklisten, wenn Sie betriebliche Hinweise benötigen, ohne einen eigenen NOTAM-Feed zu pflegen.

Wichtig: US-Ortskennungen mit drei Buchstaben (z. B. JFK) erhalten automatisch das Präfix K. Ein leeres notams-Array ist eine normale 200-Antwort, wenn keine aktiven Hinweise vorliegen — kein Fehler.

Jeder Eintrag enthält den vollständigen NOTAM-Text im ICAO-Standardformat (raw), gegebenenfalls ICAO- und nationale Kennungen, Beginn und Ende der Gültigkeit, die einzeln geparsten Items sowie optionale Metadaten zum Geltungsbereich. Filtern Sie clientseitig nach scope und type oder verwenden Sie exclude_qcode/exclude_scope, um NOTAM-Kategorien serverseitig auszuschließen und die Antwortgröße zu verringern, bevor sie bei Ihnen ankommt.

Routenplanung mit mehr Vorlauf? Standardmäßig werden nur NOTAMs zurückgegeben, die bereits in Kraft sind — entsprechend einem Live-AIS-Briefing. Ein NOTAM, das für ein künftiges Gültigkeitsdatum veröffentlicht wurde (z. B. wenn ein Flughafen eine Flugplanänderung zwei Wochen im Voraus bekannt gibt), erscheint erst, wenn dieses Datum erreicht ist. Übergeben Sie include_future=true, um diese bevorstehenden NOTAMs schon jetzt zu sehen. Sie sind mit status: "FUTURE" gekennzeichnet, sodass Sie sie von den heute aktiven unterscheiden können.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/notams/{icao}

exclude_qcode und exclude_scope filtern serverseitig; scope und type bleiben in der Antwort für zusätzliche clientseitige Filterung verfügbar.

ParameterTypErforderlichBeschreibung
icaostringJa4-stelliger ICAO-Flughafencode (z. B. KJFK, EGLL). Dreistellige US-Codes erhalten automatisch das Präfix K
exclude_qcodestring (query)NeinKommagetrennte ICAO-Q-Code-Präfixe, die serverseitig ausgeschlossen werden, z. B. QK (gesamte Themenkategorie — schließt jedes Checklisten-NOTAM QK* aus) oder QKKKK (nur exakt dieser Code)
exclude_scopestring (query)NeinKommagetrennte scope-Werte, die serverseitig ausgeschlossen werden: AERODROME, FIR
include_futureboolean (query)NeinGibt zusätzlich NOTAMs zurück, deren Gültigkeitsbeginn noch in der Zukunft liegt, gekennzeichnet mit status: "FUTURE". Der Standardwert false liefert nur aktuell aktive NOTAMs. Abgelaufene NOTAMs werden in keinem Fall zurückgegeben

Beispiel für serverseitige Filterung: GET /notams/EGLL?exclude_qcode=QK&exclude_scope=FIR schließt monatliche Checklisten-NOTAMs (Q-Code-Thema QK*, z. B. QKKKK) sowie FIR-weite administrative bzw. En-Route-Hinweise aus und gibt nur flugplatzspezifische Einträge für EGLL zurück.

Antwort

{
  "icao": "KJFK",
  "notams": [
    {
      "raw": "A0373/26 NOTAMN\nQ) KZNY/QMXLC/IV/M/A/000/999/4038N07346W005\nA) KJFK\nB) 2603241038\nC) 2608311800\nE) TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD",
      "notam_id": "A0373/2026",
      "notam_id_domestic": "03/0373",
      "type": "N",
      "location": "KJFK",
      "effective": "202603241038",
      "expiration": "202608311800",
      "body": "TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD",
      "schedule": null,
      "lower_limit": null,
      "upper_limit": null,
      "affected_fir": "KZNY",
      "q_code": "QMXLC",
      "qline": "KZNY/QMXLC/IV/M/A/000/999/4038N07346W005",
      "scope": "AERODROME",
      "status": "ACTIVE"
    }
  ],
  "total": 1
}

raw ist ein mehrzeiliger String (durch \n getrennt), der den Hinweis genau so enthält, wie ihn ein AIS-Briefing veröffentlicht. Siehe ICAO-Format weiter unten.

Felder der obersten Ebene

FeldTypErforderlichBeschreibung
icaostringJaAufgelöster ICAO-Code der Anfrage
notamsarrayJaAktive NOTAM-Einträge (kann leer sein)
totalintegerNeinAnzahl der Elemente in notams (Standardwert 0)

NOTAM-Element (notams[])

FeldTypErforderlichNull?Beschreibung
rawstringJaNieVollständiger NOTAM-Text im ICAO-Standardformat (mehrzeilig, durch \n getrennt)
notam_idstringNeinJaICAO-NOTAM-Kennung (z. B. 373/2026)
notam_id_domesticstringNeinJaNationale FAA-Kennung (z. B. 03/373)
typestringNeinJaN (neu), R (Ersatz), C (Aufhebung)
locationstringNeinJaKennung des betroffenen Orts
effectivestringNeinJaBeginn der Gültigkeit (UTC, Format des Anbieters)
expirationstringNeinJaEnde der Gültigkeit (UTC, Format des Anbieters)
bodystringNeinJaNOTAM-Text (Item E) ohne Kopfzeile
schedulestringNeinJaAktivierungszeitplan (Item D), z. B. MON-FRI 0600-1800
lower_limitstringNeinJaUntere Höhengrenze (z. B. SFC, FL050)
upper_limitstringNeinJaObere Höhengrenze (z. B. FL195, UNL)
affected_firstringNeinJaFIR/ARTCC, unter der das NOTAM veröffentlicht wurde
q_codestringNeinJaICAO-NOTAM-Q-Code, sofern vorhanden — kann bei nationalen FAA-Hinweisen null sein
qlinestringNeinJaVollständige ICAO-Q-Zeile, sofern geliefert
scopestringNeinJaAERODROME (Flughafeneinrichtung) oder FIR (Luftraum auf der Strecke)
statusstringNeinJaACTIVE (aktuell gültig) oder FUTURE (Gültigkeitsdatum noch nicht erreicht — nur vorhanden, wenn include_future=true angefragt wurde)

raw ist immer vorhanden. Die meisten Metadatenfelder können null sein, je nachdem, wie die Upstream-Meldung kodiert wurde.

Wichtig: Hinweise mit scope: "AERODROME" betreffen den Flughafen direkt — zeigen Sie diese in Briefing-Panels gut sichtbar an. Hinweise mit scope: "FIR" sind Einträge zum Luftraum auf der Strecke, die ebenfalls in der Antwort erscheinen — zeigen Sie sie in einem separaten Abschnitt an oder klappen Sie sie standardmäßig ein. Behandeln Sie ebenso Hinweise mit status: "FUTURE" als bevorstehend und nicht als aktuell — die meisten Briefing-Oberflächen sollten sie getrennt von den heute aktiven Hinweisen auflisten.

ICAO-Format

raw enthält den Hinweis im ICAO-Standardlayout, das Piloten zu lesen gelernt haben — die Identifikationszeile, gefolgt von den mit Buchstaben gekennzeichneten Items. Stellen Sie ihn in einem Monospace-Block ohne erneuten Zeilenumbruch dar:

A0373/26 NOTAMN
Q) KZNY/QMXLC/IV/M/A/000/999/4038N07346W005
A) KJFK
B) 2603241038
C) 2608311800
E) TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD
ItemBedeutungZugehöriges Feld
Q)Q-Zeile — FIR, Q-Code, Verkehrsart, Zweck, Geltungsbereich, Grenzen, Mittelpunkt/Radiusqline, q_code, affected_fir
A)Ort, für den der Hinweis giltlocation
B)Gültig ab (YYMMDDHHMM, UTC)effective
C)Gültig bis oder PERMexpiration
D)Aktivierungszeitplan, wenn der Hinweis nur zeitweise giltschedule
E)Der eigentliche Hinweistextbody
F) / G)Untere und obere vertikale Grenzelower_limit, upper_limit

Hat die herausgebende Behörde eine eigene ICAO-Übersetzung veröffentlicht, gibt raw diese Byte für Byte wieder; andernfalls wird der Text aus den oben genannten geparsten Items zusammengesetzt.

Items erscheinen wie veröffentlicht. Ein Item ist nur vorhanden, wenn der Herausgeber es angegeben hat:

  • Q) — internationale Hinweise enthalten eine vollständige Q-Zeile. Viele nationale US-Hinweise werden ganz ohne Q-Code veröffentlicht, daher fehlen bei ihnen Q), q_code und qline.
  • D) — nur bei Hinweisen mit Aktivierungszeitplan; die meisten gelten durchgehend zwischen B) und C).
  • F)/G) — nur bei Luftraum- und Navigationshinweisen, die ein vertikales Band angeben.

Parsen Sie raw für die Anzeige und die einzelnen Felder für die Logik — setzen Sie nicht voraus, dass jedes Item vorhanden ist.

Client-Typen

"""NOTAM response models for GET /notams/{icao}."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass NotamEntry:    raw: str    notam_id: str | None = None    notam_id_domestic: str | None = None    type: str | None = None    location: str | None = None    effective: str | None = None    expiration: str | None = None    body: str | None = None    schedule: str | None = None    lower_limit: str | None = None    upper_limit: str | None = None    affected_fir: str | None = None    q_code: str | None = None    qline: str | None = None    scope: str | None = None@dataclassclass NotamResponse:    icao: str    notams: list[NotamEntry]    total: int = 0@dataclassclass NotamSummary:    notam_id: str | None    type: str | None    body: str | None    effective: str | None    expiration: str | None    scope: str | None

Integration

Fragen Sie aktive NOTAMs für einen Abflughafen regelmäßig ab und zeigen Sie in einer Briefing-Oberfläche eine kompakte Übersichtsliste an.

Das folgende Beispiel cacht NOTAM-Antworten 5 Minuten lang, da sich Hinweise in betrieblich aktiven Zeitfenstern häufig ändern können. Jede Anfrage verwendet ein Lese-Timeout von 30 s, um große NOTAM-Bestände an stark frequentierten Drehkreuzen zu bewältigen. Die Hilfsfunktion bildet Einträge für die Listendarstellung auf ein gekürztes NotamSummary ab und behält raw für Detailansichten bei.

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]] = {}NOTAM_TTL = 300  # 5 min@dataclassclass NotamSummary:    notam_id: str | None    type: str | None    body: str | None    effective: str | None    expiration: str | None    scope: str | Nonedef fetch_notams(icao: str) -> dict:    icao = icao.upper().strip()    if len(icao) == 3:        icao = f"K{icao}"    key = f"notams:{icao}"    cached = CACHE.get(key)    if cached and time.time() < cached[1]:        return cached[0]    try:        r = requests.get(f"{BASE}/notams/{icao}", headers=HEADERS, timeout=(10, 30))    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching NOTAMs for {icao}") from exc    r.raise_for_status()    data = r.json()    CACHE[key] = (data, time.time() + NOTAM_TTL)    return datadef notam_summaries(icao: str) -> list[NotamSummary]:    data = fetch_notams(icao)    return [        NotamSummary(            notam_id=item.get("notam_id"),            type=item.get("type"),            body=item.get("body"),            effective=item.get("effective"),            expiration=item.get("expiration"),            scope=item.get("scope"),        )        for item in data.get("notams", [])    ]if __name__ == "__main__":    import json    summaries = notam_summaries("KJFK")    print(json.dumps(summaries[:5], indent=2, default=str))

Hinweise zur Implementierung

Caching mit kurzer TTL. Verwenden Sie im Produktivbetrieb Cache-Zeitfenster von 2–5 Minuten; umgehen Sie den Cache innerhalb der letzten Stunde vor dem Abflug bei Workflows für die Allgemeine Luftfahrt und Charterflüge.

Umgang mit Aufhebungen. Einträge mit type: "C" heben ein früheres NOTAM auf — verfolgen Sie sie über notam_id, wenn Sie einen lokalen Zustand führen.

Präfix für US-Codes. Akzeptieren Sie JFK von Nutzern; die API löst den Code zu KJFK auf.

Routenplanung über den heutigen Tag hinaus. Für Flugplanungstools, die einen Flughafen Tage oder Wochen im Voraus prüfen, fragen Sie ?include_future=true an und verzweigen Sie anhand von status — zeigen Sie ACTIVE-Hinweise als aktuelle Bedingungen und FUTURE-Hinweise als bevorstehende Änderungen an, die die Besatzung vor dem Flug kennen sollte.

Fehlerantworten

Gemeinsame Plattformfehler: Fehlerbehandlung. Endpoint-spezifisch:

422 — ungültige Länge des ICAO-Codes

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

Wird zurückgegeben, wenn der Pfadparameter kürzer als vier Zeichen ist und nicht normalisiert werden kann.

GET
/notams/{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, EGLL)

Length4 <= length <= 4

Query Parameters

exclude_qcode?|

Comma-separated ICAO Q-code prefixes to exclude, e.g. QKKKK (exact code) or QK (whole subject category — drops every QK* checklist NOTAM).

exclude_scope?|

Comma-separated scopes to exclude: AERODROME, FIR. exclude_scope=FIR drops en-route/FIR-wide administrative notices.

include_future?Include Future

Also include NOTAMs whose effective start date is still in the future (not yet active), tagged with status=FUTURE. Default false returns only currently-active NOTAMs, matching a live AIS briefing.

Defaultfalse

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/notams/KJFK"
{
  "icao": "OMDB",
  "notams": [
    {
      "raw": "A2161/26 NOTAMN\nQ) OMAE/QMRLC/IV/NBO/A/000/999/2515N05521E005\nA) OMDB B) 2607162130 C) 2607302215\nE) RWY 12L/30R CLSD",
      "notam_id": "A2161/2026",
      "notam_id_domestic": "07/2161",
      "type": "N",
      "location": "OMDB",
      "effective": "202607162130",
      "expiration": "202607302215",
      "body": "RWY 12L/30R CLSD",
      "qline": "OMAE/QMRLC/IV/NBO/A/000/999/2515N05521E005",
      "scope": "AERODROME"
    }
  ],
  "total": 1
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Siehe auch: Flugbriefing · FAA-Verspätungen · METAR