# TAF

Flugplatzvorhersagen (TAF) für jeden ICAO-Flughafen abrufen. Die optionale dekodierte Ausgabe enthält Vorhersageperioden und die erwartete Flugwetterkategorie.



[TAFs (Terminal Aerodrome Forecasts)](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) sind strukturierte Vorhersagen für einen bestimmten Flughafen und seine unmittelbare Umgebung, die in der Regel etwa fünf nautische Meilen um den Flugplatz abdecken. Standard-[TAFs](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) werden viermal täglich um 00Z, 06Z, 12Z und 18Z herausgegeben und sind je nach Station 24 oder 30 Stunden gültig. Jeder [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) beschreibt erwarteten Wind, Sicht, Wolkenschichten, Wettererscheinungen und Flugwetterkategorien in zeitlich festgelegten Vorhersagegruppen wie FROM, TEMPO und BECMG. Piloten, Flugdienstberater und Flugplaner nutzen diese Vorhersagen, um bei der Erstellung operativer Pläne die erwarteten Bedingungen an Abflug-, Ziel- und Ausweichflughäfen zu beurteilen. Viele kleine Flughäfen veröffentlichen nur [METAR](https://en.wikipedia.org/wiki/METAR) — ein `404` beim [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) ist häufig und bedeutet nicht, dass der Flughafen unbekannt ist.

## Anfrage [#request]

<DocRequirements>
  <DocRequirementAuth />

  <DocRequirementIcao />
</DocRequirements>

Senden Sie eine <HttpMethod>GET</HttpMethod>-Anfrage mit dem ICAO-Code des Flughafens im Pfad. Optionale Query-Flags steuern die Dekodierung.

<DocApiPath method="GET" path="/weather/taf/{icao}" />

| Parameter | Typ     | Erforderlich | Standard | Beschreibung                                                                           |
| --------- | ------- | ------------ | -------- | -------------------------------------------------------------------------------------- |
| `icao`    | string  | Ja           | -        | 4-stelliger ICAO-Code — [Suche](/docs/v31/airport-search#search-by-text), z. B. `KJFK` |
| `parsed`  | boolean | Nein         | `false`  | Dekodierte Vorhersageperioden unter einem `parsed`-Schlüssel hinzufügen                |

## Antwort [#response]

### Rohdaten (Standard) [#raw-default]

```json
{
  "raw": "TAF KJFK 072334Z 0800/0906 35014G20KT P6SM FEW050 SCT100 FM080600 03011KT P6SM SCT025 ...",
  "icao": "KJFK",
  "airport_name": "John F. Kennedy International Airport",
  "timestamp": "2026-06-08T23:45:12Z"
}
```

| Feld           | Typ               | Erforderlich | Beschreibung                                                                                    |
| -------------- | ----------------- | ------------ | ----------------------------------------------------------------------------------------------- |
| `raw`          | string            | **Ja**       | Vollständiger TAF-String im Originalwortlaut                                                    |
| `icao`         | string            | **Ja**       | ICAO-Code                                                                                       |
| `airport_name` | string            | **Ja**       | Name des Flughafens                                                                             |
| `timestamp`    | string (ISO 8601) | **Ja**       | Zeitpunkt, zu dem die API diese Daten abgerufen hat — nicht der Ausgabezeitpunkt der Vorhersage |

### Dekodiert (`parsed=true`) [#parsed-parsedtrue]

```json
{
  "raw": "TAF KJFK 061933Z 0620/0724 ...",
  "icao": "KJFK",
  "airport_name": "John F. Kennedy International Airport",
  "timestamp": "2026-06-06T23:09:48Z",
  "parsed": {
    "start_time": "2026-06-06T22:00:00+02:00",
    "end_time": "2026-06-08T02:00:00+02:00",
    "forecast": [
      {
        "type": "FROM",
        "start_time": "2026-06-06T22:00:00+02:00",
        "end_time": "2026-06-07T01:00:00+02:00",
        "wind": { "direction": 200, "speed": 14, "gust": null, "variable": [] },
        "visibility": { "value": null, "repr": "P6" },
        "clouds": [
          { "type": "SCT", "base": 70, "repr": "SCT070" },
          { "type": "BKN", "base": 250, "repr": "BKN250" }
        ],
        "wx_codes": [],
        "flight_rules": "VFR",
        "probability": null,
        "turbulence": [],
        "icing": []
      },
      {
        "type": "TEMPO",
        "start_time": "2026-06-07T01:00:00+02:00",
        "end_time": "2026-06-07T05:00:00+02:00",
        "wind": { "direction": 290, "speed": 25, "gust": 45, "variable": [] },
        "visibility": { "value": 3, "repr": "3" },
        "clouds": [
          { "type": "SCT", "base": 25, "repr": "SCT025" },
          { "type": "BKN", "base": 50, "repr": "BKN050CB" }
        ],
        "wx_codes": [
          { "repr": "TSRA", "value": "Thunderstorm Rain" },
          { "repr": "BR",   "value": "Mist" }
        ],
        "flight_rules": "MVFR",
        "probability": null,
        "turbulence": [],
        "icing": []
      }
    ]
  }
}
```

| Feld                             | Typ               | Erforderlich                       | Beschreibung                                                                                                     |
| -------------------------------- | ----------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `parsed`                         | object            | **Ja** (bei `parsed=true`)         | Fehlt bei `parsed=false` — nicht `null`                                                                          |
| `parsed.start_time`              | string (ISO 8601) | **Ja**                             | Beginn des TAF-Gültigkeitszeitraums (`DDHH/DDHH` im Rohtext)                                                     |
| `parsed.end_time`                | string (ISO 8601) | **Ja**                             | Ende des TAF-Gültigkeitszeitraums                                                                                |
| `parsed.forecast`                | array             | **Ja**                             | Vorhersageperioden in chronologischer Reihenfolge — siehe [Arten von Vorhersageperioden](#forecast-period-types) |
| `parsed.forecast[].type`         | string            | **Ja** (pro Element)               | `FROM`, `TEMPO` oder `BECMG`                                                                                     |
| `parsed.forecast[].start_time`   | string (ISO 8601) | **Ja** (pro Element)               | Zeitpunkt, ab dem diese Gruppe gilt                                                                              |
| `parsed.forecast[].end_time`     | string (ISO 8601) | **Ja** (pro Element)               | Zeitpunkt, zu dem diese Gruppe endet                                                                             |
| `parsed.forecast[].wind`         | object            | **Ja** (pro Element)               | Gleiche Struktur wie [METAR `parsed.wind`](/docs/v31/weather-metar#object-schemas-and-nullability)               |
| `parsed.forecast[].visibility`   | object            | **Ja** (pro Element)               | Gleiche Struktur wie METAR `parsed.visibility`                                                                   |
| `parsed.forecast[].clouds`       | array             | **Ja** (pro Element)               | Gleiche Struktur wie METAR `parsed.clouds` — [Codes für den Bedeckungsgrad](/docs/v31/weather#cloud-cover-codes) |
| `parsed.forecast[].wx_codes`     | array             | **Ja** (pro Element)               | Erwartete Wettererscheinungen — `{ repr, value }[]`                                                              |
| `parsed.forecast[].flight_rules` | string            | **Ja** (pro Element)               | Erwartete [Flugwetterkategorie](/docs/v31/weather#flight-categories) für diese Gruppe                            |
| `parsed.forecast[].probability`  | object \| null    | **Ja** (Schlüssel immer vorhanden) | Bei `PROB30`/`PROB40`-Gruppen befüllt — siehe unten                                                              |
| `parsed.forecast[].turbulence`   | array             | **Ja** (pro Element)               | Intensität atmosphärischer Turbulenz, sofern angegeben — `[]`, wenn keine                                        |
| `parsed.forecast[].icing`        | array             | **Ja** (pro Element)               | Intensität der Vereisung der Flugzeugzelle, sofern angegeben — `[]`, wenn keine                                  |

### Objektschemas und Nullbarkeit [#object-schemas-and-nullability]

Jedes Objekt in `parsed.forecast[]` enthält in jeder Periode dieselben Schlüssel — für `wind`, `visibility`, `clouds` und `wx_codes` gelten dieselben Regeln wie bei der [Nullbarkeit von METAR](/docs/v31/weather-metar#object-schemas-and-nullability).

| Feld                            | Typ            | Erforderlich | Null / leer                    | Hinweise                                            |
| ------------------------------- | -------------- | ------------ | ------------------------------ | --------------------------------------------------- |
| `parsed.forecast[].wind`        | object         | **Ja**       | Immer vorhanden                | Gleiche Form wie METAR `parsed.wind`                |
| `parsed.forecast[].visibility`  | object         | **Ja**       | Immer vorhanden                | `value: null` häufig bei `P6SM` (`repr: "P6"`)      |
| `parsed.forecast[].clouds`      | array          | **Ja**       | `[]` möglich                   | Gleiche Elementform wie bei METAR                   |
| `parsed.forecast[].wx_codes`    | array          | **Ja**       | `[]`, wenn keine               | Gleiche `{ repr, value }`-Elementform wie bei METAR |
| `parsed.forecast[].probability` | object \| null | **Ja**       | `null` bei den meisten Gruppen | Objekt bei `PROB30`/`PROB40` — siehe unten          |
| `parsed.forecast[].turbulence`  | array          | **Ja**       | `[]`, wenn nicht angegeben     | Nie `null`                                          |
| `parsed.forecast[].icing`       | array          | **Ja**       | `[]`, wenn nicht angegeben     | Nie `null`                                          |

Bei `parsed=false` fehlt der Schlüssel `parsed` vollständig.

#### Wahrscheinlichkeit bei PROB-Gruppen [#probability-on-prob-groups]

Im Roh-[TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) kennzeichnen `PROB30` und `PROB40` probabilistische Teilperioden (30 % bzw. 40 % Eintrittswahrscheinlichkeit). Im JSON des Produktivbetriebs erscheinen sie als `FROM`- oder `TEMPO`-Eintrag mit befülltem `probability`-Objekt — es gibt **keinen** separaten `type: "PROB"` (überprüft an KORD, EGLL, EDDF).

```json
"probability": {
  "repr": "30",
  "value": 30,
  "spoken": "three zero"
}
```

| Feld     | Typ     | Erforderlich | Beschreibung                     |
| -------- | ------- | ------------ | -------------------------------- |
| `repr`   | string  | **Ja**       | Roh-Token: `"30"` oder `"40"`    |
| `value`  | integer | **Ja**       | `30` oder `40`                   |
| `spoken` | string  | **Ja**       | Gesprochene Form aus der Meldung |

Wenn die Gruppe nicht probabilistisch ist, ist `probability` `null`.

<DocDetails title="Turbulenz, Vereisung und Arten von Vorhersageperioden">
  #### Turbulenz- und Vereisungsgruppen [#turbulence-and-icing-groups]

  Die meisten Vorhersageperioden liefern `"turbulence": []` und `"icing": []`. Wenn der zugrunde liegende [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) `TURB`- oder `ICE`-Gruppen enthält, enthält jedes Array ein oder mehrere Objekte mit mindestens `repr` (Roh-Token) und `value` (menschenlesbare Intensität) — dasselbe `{ repr, value }`-Muster wie bei `wx_codes`. Zusätzliche Höhenschlüssel können erscheinen, wenn die Meldung eine vertikale Schicht angibt; behandeln Sie unbekannte Schlüssel als vorwärtskompatibel.

  ```json
  "turbulence": [{ "repr": "MOD", "value": "Moderate" }],
  "icing": []
  ```

  <a id="forecast-period-types" />

  #### Arten von Vorhersageperioden [#forecast-period-types]

  Durchlaufen Sie `parsed.forecast[]` chronologisch: zuerst die aktive `FROM`-Basis, dann die überlappenden Modifikatoren.

  | TAF-Token            | `type` im JSON                      | Zeitfelder                  | Bedeutung                                                                                    |
  | -------------------- | ----------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------- |
  | Anfangsgruppe / `FM` | `FROM`                              | `start_time` → `end_time`   | **Basisbedingungen.** Jede `FM`-Gruppe ersetzt ab `start_time` alles Vorherige               |
  | `TEMPO`              | `TEMPO`                             | `start_time` → `end_time`   | **Vorübergehende Schwankungen** innerhalb der Basis — als Hinweis anzeigen, nicht als Ersatz |
  | `BECMG`              | `BECMG`                             | `start_time` → `end_time`   | **Allmähliche Änderung** hin zu den Werten dieser Gruppe bis `end_time`                      |
  | `PROB30` / `PROB40`  | `FROM` oder `TEMPO` + `probability` | wie beim übergeordneten Typ | **Probabilistische Teilperiode** — `probability` in der Zeile ist nicht null                 |

  **Perioden für eine Abflugzeit auslesen**

  1. Filtern Sie `parsed.forecast[]` nach `type == "FROM"` und `start_time <= departure <= end_time` — Basis.
  2. Sammeln Sie überlappende `TEMPO`-, `BECMG`- und probabilistische Zeilen — Modifikatoren.
  3. Zeigen Sie die [flight\_rules](/docs/v31/weather#flight-categories) der Basis deutlich an; listen Sie Modifikatoren separat auf.
  4. Ungünstigster Fall über den gesamten [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast): höchster Rang der [flight\_rules](/docs/v31/weather#flight-categories) unter allen `FROM`-Gruppen.

  Beispiel für KORD: Die Basis-`FROM`-Gruppe kann `VFR` sein, während ein überlappendes `TEMPO` `MVFR` mit `-SHRA` zeigt — zeigen Sie beides an.
</DocDetails>

## Client-Typen [#client-types]

Kopieren Sie sie in Ihr Projekt. Die Nullbarkeit entspricht [Objektschemas und Nullbarkeit](#object-schemas-and-nullability) und der [Nullbarkeit von METAR](/docs/v31/weather-metar#object-schemas-and-nullability) für gemeinsam genutzte verschachtelte Objekte.

<DocClientTypes id="v31/weather/taf-types" />

`TafResponse` / `TafParsed` / `TafPeriod` entsprechen dem JSON der API. `TafDepartureSummary` ist am Anfang jedes Tabs im Codebeispiel definiert.

## Integration [#integration]

Vorhersageperioden zu einer Abflugzeit abrufen, cachen und interpretieren.

Das Beispiel cacht jeden [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) fünfzehn Minuten lang ([TAFs](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) werden viermal täglich neu herausgegeben), verwendet Timeouts von 10 s / 15 s für Verbindungsaufbau/Lesen, wählt zu einer Abflugzeit die aktive `FROM`-Gruppe aus und listet überlappende `TEMPO`/`BECMG`-Modifikatoren auf.

<DocExample id="v31/weather/taf-fetch" />

Schritt-für-Schritt-Erklärung der Periodenschichtung: [Schichtung der TAF-Perioden](/docs/v31/weather-integration-airport#3-what-will-the-weather-be-when-i-depart).

### Hinweise zur Implementierung [#implementation-notes]

**TEMPO- und probabilistische Gruppen lesen.** TEMPO legt sich über die aktive FROM-Basis. `PROB30`/`PROB40` erscheinen als Zeilen, in denen `probability` nicht null ist — prüfen Sie `probability.value`, nicht einen separaten `type`. Siehe [Arten von Vorhersageperioden](#forecast-period-types).

**[TAFs](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) werden viermal täglich aktualisiert**, um 00Z, 06Z, 12Z und 18Z. Ein Caching von 15–30 Minuten ist angemessen.

**404 ohne [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast).** Viele Plätze der Allgemeinen Luftfahrt (GA) veröffentlichen nur [METAR](https://en.wikipedia.org/wiki/METAR). Behandeln Sie ein `404` beim [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) als fehlende Vorhersagedaten, nicht als fehlgeschlagene Anfrage.

**Kombination mit [METAR](https://en.wikipedia.org/wiki/METAR).** Rufen Sie beide parallel ab. Verwenden Sie die [flight\_rules](/docs/v31/weather#flight-categories) aus dem [METAR](https://en.wikipedia.org/wiki/METAR) für die aktuellen Bedingungen und die ungünstigsten FROM-[flight\_rules](/docs/v31/weather#flight-categories) über den gesamten [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) als schlechteste erwartete Bedingungen.

## Fehlerantworten [#error-responses]

Hierher gehören nur **[TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast)-spezifische** Fehler. Gemeinsame Fehler: [Fehlerbehandlung](/docs/errors). `404` bei [METAR](https://en.wikipedia.org/wiki/METAR) vs. [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) im Produktivbetrieb: [Wenn Wetterdaten fehlen](/docs/v31/weather-integration-errors#when-weather-data-is-missing).

### 404 — kein TAF für diesen ICAO-Code [#404--no-taf-for-this-icao]

```json
{
  "detail": "No current TAF forecast available for KOXB. Weather station may not issue TAF reports or may be temporarily offline."
}
```

Häufiger Fall: Der Flughafen hat ein [METAR](https://en.wikipedia.org/wiki/METAR), aber keinen [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast). Rufen Sie das [METAR](https://en.wikipedia.org/wiki/METAR) wie gewohnt ab; überspringen Sie den [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast) und beschriften Sie die UI mit **Vorhersage nicht verfügbar**.

<APIPage document="&#x22;https://api.skylinkapi.com/v3.1/openapi.json&#x22;" operations="[{&#x22;path&#x22;:&#x22;/weather/taf/{icao}&#x22;,&#x22;method&#x22;:&#x22;get&#x22;}]" />

***

Siehe auch: [METAR](/docs/v31/weather-metar) · [Anwendungsfälle](/docs/v31/weather-integration-airport) · [Fehler](/docs/v31/weather-integration-errors) · [Produktivbetrieb](/docs/v31/weather-integration-production)
