Save up to 17% with yearly billing

See pricing

Обработка ошибок

Кэширование и квоты: Кэширование и мониторинг.

Ошибки платформы (401, 403, 422, 429, 5xx): Обработка ошибок.

Статус рейса

GET /flight_status/{flight_number} возвращает 404, когда рейс не опубликован на сегодня, — а не когда в вашем коде ошибка. Параметра даты нет; для данных табло на конкретный день используйте Расписания.

Поля выхода на посадку, терминала, выдачи багажа и регистрации часто содержат пустые строки ("") — считайте их неизвестными, а не признаком отсутствующей настройки.

Расписания

flights может быть пустым массивом — это допустимое состояние табло. Ключи строк записаны в Title Case (Flight, Time, Status) — ключи в нижнем регистре возвращают undefined.

Расстояние

Возвращает 422, если коды аэропортов не удаётся распознать или координаты выходят за допустимый диапазон.

Брифинг по полёту

Генерация брифинга выполняется медленно (часто 30–90 с) и под нагрузкой может возвращать 503. Выполните одну повторную попытку после короткой задержки (backoff); не засыпайте эндпоинт запросами при каждой перерисовке интерфейса.

Структурированный JSON использует summary, origin_briefing и destination_briefing — а не обёртку sections.

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)")

Для временных сбоев используйте вспомогательную функцию повторных попыток со страницы Обработка ошибок.


См. также: Статус рейса · Расписания · Расстояние · Брифинг по полёту · Кэширование и мониторинг