# Fehlerbehandlung

Fehler im Flugbetrieb im Produktivbetrieb behandeln – fehlende Flüge, ungültige Flugnummern und Wiederholungsversuche.



Caching und Kontingente: [Caching & Monitoring](/docs/v31/flight-operations-integration-production).

**Plattformfehler** (401, 403, 422, 429, 5xx): [Fehlerbehandlung](/docs/errors).

### Flugstatus [#flight-status]

`GET /flight_status/{flight_number}` liefert **404**, wenn der Flug für heute nicht veröffentlicht ist — nicht, wenn Ihr Code fehlerhaft ist. Es gibt keinen Datumsparameter; verwenden Sie [Flugpläne](/docs/v31/schedules) für Anzeigetafeldaten eines bestimmten Tages.

Felder für Gate, Terminal, Gepäck und Check-in sind oft leere Strings (`""`) — behandeln Sie sie als unbekannt, nicht als fehlende Konfiguration.

### Flugpläne [#schedules]

`flights` kann ein leeres Array sein — das ist ein gültiger Zustand der Anzeigetafel. Zeilenschlüssel verwenden **Title Case** (`Flight`, `Time`, `Status`) — kleingeschriebene Schlüssel liefern `undefined`.

### Entfernung [#distance]

Liefert **422**, wenn Flughafencodes nicht aufgelöst werden können oder Koordinaten außerhalb des gültigen Bereichs liegen.

### Flugbriefing [#flight-briefing]

Die Erstellung eines Briefings ist langsam (oft 30–90 s) und kann unter Last **503** liefern. Wiederholen Sie die Anfrage einmal nach einem kurzen Backoff; bombardieren Sie den Endpoint nicht bei jedem UI-Rendering.

Strukturiertes JSON verwendet `summary`, `origin_briefing` und `destination_briefing` — keinen `sections`-Wrapper.

```python
import os
import time

import requests

HEADERS = {
    "X-RapidAPI-Key": os.getenv("RAPIDAPI_KEY", "YOUR_RAPIDAPI_KEY"),
    "X-RapidAPI-Host": "skylink-api.p.rapidapi.com",
}
BASE = "https://skylink-api.p.rapidapi.com"


def fetch_status(flight: str) -> dict | None:
    r = requests.get(f"{BASE}/flight_status/{flight}", headers=HEADERS, timeout=(10, 15))
    if r.status_code == 404:
        return None
    r.raise_for_status()
    return r.json()


def fetch_briefing(origin: str, destination: str) -> dict | None:
    params = {
        "origin": origin,
        "destination": destination,
        "include_weather": "true",
        "include_notams": "true",
        "format": "json",
    }
    for attempt in range(2):
        r = requests.get(
            f"{BASE}/briefing/flight",
            headers=HEADERS,
            params=params,
            timeout=(10, 90),
        )
        if r.status_code == 404:
            return None
        if r.status_code in (502, 503, 504):
            if attempt == 0:
                time.sleep(8)
                continue
            return None
        r.raise_for_status()
        return r.json()
    return None


if __name__ == "__main__":
    status = fetch_status("BA123")
    print("Status:", status["status"] if status else "not found today")
    print("Briefing smoke test: see flight-briefing-integration (60–90 s generation time)")
```

Für vorübergehende Fehler verwenden Sie den Retry-Helper unter [Fehlerbehandlung](/docs/errors#retry-rules).

***

Siehe auch: [Flugstatus](/docs/v31/flight-status-integration) · [Flugpläne](/docs/v31/schedules-integration) · [Entfernung](/docs/v31/distance-integration) · [Flugbriefing](/docs/v31/flight-briefing-integration) · [Caching & Monitoring](/docs/v31/flight-operations-integration-production)
