Save up to 17% with yearly billing

See pricing

Оценка времени полёта с помощью ML

Время полёта от выхода до выхода (gate-to-gate) между любыми двумя аэропортами, прогнозируемое моделью GradientBoosting, обученной на исторических эксплуатационных данных (R² ≈ 0.98). Блочное время — это плановая продолжительность от выхода до выхода (gate-to-gate), включая руление в обоих аэропортах.

Используйте этот эндпоинт, когда вам нужны оценки блочного времени для составления расписаний, буферов на стыковки или панелей оценки риска задержек — без поддержки собственных статистических таблиц по маршрутам.

Передайте аэропорты вылета и назначения кодами ICAO или IATA. Для более точной оценки передайте необязательный код типа воздушного судна ICAO (B738, A320, B77W); если он не указан, модель использует типичные крейсерские параметры реактивного самолёта для данной пары городов. API возвращает точечную оценку, минимальную и максимальную границы и удобочитаемую строку продолжительности.

Важно: ветер и текущая погода на маршруте не являются входными данными модели — результат представляет собой статистическое среднее для маршрута и категории воздушного судна, а не прогноз для конкретного времени вылета.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/ml/flight-time
ПараметрТипОбязательныйПо умолчаниюОписание
fromstringДа-Код ICAO или IATA аэропорта вылета (3–4 символа), например KSFO, SFO
tostringДа-Код ICAO или IATA аэропорта назначения, например KJFK, JFK
aircraftstringНетзначение модели по умолчаниюКод типа воздушного судна ICAO, например B738, A320, C172

Ответ

{
  "origin": "KSFO",
  "destination": "KJFK",
  "aircraft_type": "B738",
  "distance_nm": 2241.75,
  "estimated_minutes": 294,
  "estimated_hours_display": "4h 54m",
  "min_minutes": 259,
  "max_minutes": 329,
  "model_version": "2.0.0-wind"
}

Объект прогноза

ПолеТипОбязательныйМожет быть null?Описание
originstringДаНикогдаИтоговый код ICAO аэропорта вылета
destinationstringДаНикогдаИтоговый код ICAO аэропорта назначения
aircraft_typestring | nullНетДаТип воздушного судна, использованный для прогноза, или null, если не указан
distance_nmnumberДаНикогдаРасстояние по ортодромии в морских милях
estimated_minutesintegerДаНикогдаОценка от выхода до выхода в минутах (включает среднее время руления в обоих аэропортах)
estimated_hours_displaystringДаНикогдаУдобочитаемая продолжительность, например "4h 54m"
min_minutesintegerДаНикогдаНижняя граница диапазона оценки
max_minutesintegerДаНикогдаВерхняя граница диапазона оценки
model_versionstringДаНикогдаСтрока версии артефакта модели

Важно: используйте estimated_minutes для расчётов, а estimated_hours_display — для подписей, которые видят пассажиры. Показывайте min_minutes–max_minutes как диапазон, когда нужны интервалы неопределённости (планирование стыковок, буферы SLA).

Клиентские типы

"""ML flight time response models for /ml/flight-time."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass FlightTimeRequest:    """Query input for GET /ml/flight-time."""    from_airport: str    to_airport: str    aircraft: str | None = None@dataclassclass FlightTimePrediction:    origin: str    destination: str    aircraft_type: str | None    distance_nm: float    estimated_minutes: int    estimated_hours_display: str    min_minutes: int    max_minutes: int    model_version: str

Интеграция

Планировщики маршрутов обычно кэшируют результаты ML-оценки времени полёта для каждой пары городов, поскольку базовая модель меняется нечасто. Пример ниже получает прогноз, преобразует его в компактную модель представления (block_minutes, display, range) и использует явные таймауты подключения и чтения, чтобы медленный вызов инференса не мог заблокировать ваш воркер.

import osfrom dataclasses import dataclassimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}@dataclassclass FlightTimeEstimate:    origin: str    destination: str    block_minutes: int    display: str    min_minutes: int    max_minutes: int    distance_nm: floatdef fetch_flight_time(*, origin: str, destination: str, aircraft: str | None = None) -> dict:    """Fetch ML gate-to-gate flight time between two airports."""    params: dict[str, str] = {"from": origin.upper(), "to": destination.upper()}    if aircraft:        params["aircraft"] = aircraft.upper()    r = requests.get(f"{BASE}/ml/flight-time", headers=HEADERS, params=params, timeout=(10, 20))    r.raise_for_status()    return r.json()def flight_time_estimate(origin: str, destination: str, aircraft: str | None = None) -> FlightTimeEstimate:    data = fetch_flight_time(origin=origin, destination=destination, aircraft=aircraft)    return FlightTimeEstimate(        origin=data["origin"],        destination=data["destination"],        block_minutes=int(data["estimated_minutes"]),        display=data["estimated_hours_display"],        min_minutes=int(data["min_minutes"]),        max_minutes=int(data["max_minutes"]),        distance_nm=float(data["distance_nm"]),    )if __name__ == "__main__":    import json    from dataclasses import asdict    estimate = flight_time_estimate("KJFK", "KLAX", aircraft="B738")    print(json.dumps(asdict(estimate), indent=2))

Примечания по реализации

Тип воздушного судна. Коды узкофюзеляжных (B738, A320) и широкофюзеляжных (B77W, A359) самолётов существенно влияют на блочное время на длинных маршрутах — передавайте aircraft, если в строке вашего расписания уже известен тип ВС.

Границы и точечная оценка. min_minutes и max_minutes охватывают типичный эксплуатационный разброс. Не рассматривайте их как жёсткие эксплуатационные ограничения.

Важно: если ML-модель временно недоступна, SkyLink может переключиться на расчёт по расстоянию и скорости. Проверяйте model_version при аудите прогнозов для ESG-отчётности или процессов планирования расписаний.

Ответы с ошибками

Общие ошибки платформы (аутентификация, ограничения частоты запросов, формат ошибок валидации) описаны на странице Обработка ошибок. Поведение, специфичное для эндпоинта:

422 — недопустимый код аэропорта

Возвращается, когда from или to не удаётся сопоставить с известным аэропортом или когда query-параметры не проходят валидацию.

GET
/ml/flight-time
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Query Parameters

from*From

Origin airport ICAO or IATA code

Length3 <= length <= 4
to*To

Destination airport ICAO or IATA code

Length3 <= length <= 4
aircraft?Aircraft

Aircraft type code (e.g. B738, A320, C172)

Lengthlength <= 4

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/ml/flight-time?from=stri&to=stri"
{
  "origin": "string",
  "destination": "string",
  "aircraft_type": "string",
  "distance_nm": 0,
  "estimated_minutes": 0,
  "estimated_hours_display": "string",
  "min_minutes": 0,
  "max_minutes": 0,
  "model_version": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}