# Flugpläne

Flugplan-API für Abflüge und Ankünfte an Flughäfen mit historischen und kurzfristig künftigen Zeitfenstern, inklusive anzeigetafelgerechter Zeilen.



Abflug- und Ankunftspläne eines Flughafens für ein Zeitfenster. Beide Operationen liefern dieselbe Struktur für Flugzeilen mit einem `direction`-Diskriminator (`departures` oder `arrivals`). Standardmäßig liefert die API anstehende Flüge für etwa die nächsten 12 Stunden und kann im Hintergrund weitere Seiten abrufen.

Geeignet für Flughafen-Anzeigetafeln, Dispatch-Dashboards und Batch-ETL. Geben Sie pro Anfrage genau eine Flughafenkennung an (`icao` oder `iata`).

**Wichtig:** Die Schlüssel der Flugzeilen verwenden **Title Case** — `Time`, `Flight`, `Status`, nicht `time`, `flight`, `status`. Der Zugriff auf kleingeschriebene Schlüssel liefert `undefined`.

## Anfrage [#request]

<DocRequirements>
  <DocRequirementAuth />
</DocRequirements>

**Abflüge**

<DocApiPath method="GET" path="/schedules/departures" />

**Ankünfte**

<DocApiPath method="GET" path="/schedules/arrivals" />

| Parameter | Typ     | Erforderlich              | Standard         | Beschreibung                                                                        |
| --------- | ------- | ------------------------- | ---------------- | ----------------------------------------------------------------------------------- |
| `icao`    | string  | Eines von `icao` / `iata` | -                | Vierstelliger ICAO-Flughafencode, z. B. `KJFK`, `EGLL`                              |
| `iata`    | string  | Eines von `icao` / `iata` | -                | Dreistelliger IATA-Flughafencode, z. B. `JFK`, `LHR`                                |
| `date`    | string  | Nein                      | aktuelles Datum  | Datum im Format `DD-MM-YYYY`. Bereich: 5 Tage zurück bis 1 Tag voraus               |
| `time`    | string  | Nein                      | aktuelle Uhrzeit | Uhrzeit im Format `HH:MM`. Erfordert `date`, wenn angegeben                         |
| `ts`      | integer | Nein                      | -                | Unix-Zeitstempel in **Millisekunden**. Überschreibt `date` und `time`, wenn gesetzt |

Bevorzugen Sie `ts` für programmatisches Polling — so vermeiden Sie Formatierungsfehler durch Gebietsschema und Zeitzone in Cronjobs und Serverless-Workern.

## Antwort [#response]

Beide Operationen verwenden dieselbe Antwortstruktur. Das Feld `direction` entspricht der aufgerufenen Operation.

### Beispiel für Abflüge [#departures-example]

```json
{
  "iata": "MXP",
  "direction": "departures",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:05",
      "Date": "11 Feb",
      "IATA": "ICN",
      "Destination": "Seoul",
      "Flight": "C84093",
      "Airline": "Federal Airlines",
      "Status": "Estimated 16:39"
    }
  ],
  "total_flights": 85,
  "pages_fetched": 3
}
```

### Beispiel für Ankünfte [#arrivals-example]

```json
{
  "iata": "MXP",
  "direction": "arrivals",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:20",
      "Date": "11 Feb",
      "IATA": "RAK",
      "Origin": "Marrakech",
      "Flight": "EC3929",
      "Airline": "easyJet Europe",
      "Status": "Landed 16:15"
    }
  ],
  "total_flights": 72,
  "pages_fetched": 3
}
```

### Felder der Antwortstruktur [#envelope-fields]

| Feld            | Typ     | Erforderlich | Beschreibung                                                                          |
| --------------- | ------- | ------------ | ------------------------------------------------------------------------------------- |
| `iata`          | string  | **Ja**       | IATA-Code des angefragten Flughafens, sofern bekannt                                  |
| `direction`     | string  | **Ja**       | `departures` oder `arrivals`                                                          |
| `airport_code`  | string  | **Ja**       | Echo Ihrer Anfrage — ICAO, wenn Sie `icao` übergeben, IATA, wenn Sie `iata` übergeben |
| `flights`       | array   | **Ja**       | Flugplanzeilen (kann leer sein)                                                       |
| `total_flights` | integer | **Ja**       | Gesamtzahl der Flüge im abgefragten Zeitfenster                                       |
| `pages_fetched` | integer | **Ja**       | Im Hintergrund abgerufene Seiten                                                      |

### Flugzeilen-Objekt (`flights[]`) [#flight-row-object-flights]

JSON-Pfad: `flights[]`. Schlüsselnamen sind in Title Case geschrieben.

| Feld          | Typ    | Erforderlich | Beschreibung                                                 |
| ------------- | ------ | ------------ | ------------------------------------------------------------ |
| `Time`        | string | **Ja**       | Planmäßige Ortszeit                                          |
| `Date`        | string | **Ja**       | Lokale Datumsangabe, z. B. `11 Feb`                          |
| `IATA`        | string | **Ja**       | IATA-Code des Gegenflughafens                                |
| `Destination` | string | Nur Abflüge  | Bezeichnung von Zielstadt/-flughafen                         |
| `Origin`      | string | Nur Ankünfte | Bezeichnung von Herkunftsstadt/-flughafen                    |
| `Flight`      | string | **Ja**       | Flugnummer wie auf Anzeigetafeln                             |
| `Airline`     | string | **Ja**       | Anzeigename der Fluggesellschaft                             |
| `Status`      | string | **Ja**       | Status als Freitext, z. B. `Estimated 16:39`, `Landed 16:15` |

## Client-Typen [#client-types]

<DocClientTypes id="v31/schedules/schedules-types" />

## Integration [#integration]

Rufen Sie Abflüge ab und normalisieren Sie die Schlüssel in Title Case in eine flache Struktur für Anzeigetafeleinträge.

Das folgende Beispiel erzwingt `icao` xor `iata`, verwendet timeoutsichere Anfragen für Batch-Polling und bildet Zeilen auf stabile interne Schlüssel ab.

<DocExample id="v31/schedules/schedules-fetch" />

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

**Status-Parsing.** `Status` ist Anzeigetext aus der Flugplanquelle. Parsen Sie ihn zurückhaltend, wenn Sie strukturierte Zustände benötigen.

**Paginierung.** Beginnen Sie mit dem Standardzeitfenster; größere Vorausschau-Bereiche erhöhen die Latenz.

**Details zu einzelnen Flügen.** Für Gate und Terminal eines einzelnen Flugs verwenden Sie [Flugstatus](/docs/v31/flight-status).

## Fehlerantworten [#error-responses]

Zu allgemeinen Fehlern siehe [Fehlerbehandlung](/docs/errors). Endpoint-spezifisch:

### 422 - ungültiges Datum/ungültige Uhrzeit oder fehlender Flughafencode [#422---invalid-datetime-or-missing-airport-code]

```json
{
  "detail": [
    {
      "type": "value_error",
      "loc": ["query", "date"],
      "msg": "Invalid date format. Expected DD-MM-YYYY."
    }
  ]
}
```

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

***

Siehe auch: [Flugstatus](/docs/v31/flight-status) · [Flughäfen](/docs/v31/airports) · [Fluggesellschaften](/docs/v31/airlines)
