Save up to 17% with yearly billing

See pricing

Авиакомпании

Ищите авиакомпанию по коду авиакомпании ICAO (трёхбуквенный указатель, например BAW для British Airways) или по коду авиакомпании IATA (двухбуквенный код, который видят пассажиры, например BA). Ответ содержит название перевозчика, радиотелефонный позывной (позывной, используемый в радиообмене с УВД, например SPEEDBIRD), страну, статус деятельности и URL логотипа, размещённого на серверах SkyLink, если он доступен. Используйте этот эндпоинт, чтобы дополнять строки расписаний и карточки статуса рейса.

Передайте ровно один код (icao или iata). Если передать оба, вернётся 400.

Важно: для неизвестных кодов возвращается HTTP 200 с пустым массивом [], а не 404. Предусмотрите в интерфейсе заглушку для отсутствующего перевозчика, а не состояние ошибки.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/airlines/search
ПараметрТипОбязательныйПо умолчаниюОписание
icaostringОдин из icao / iata-Код авиакомпании ICAO (3 буквы), например AAL
iatastringОдин из icao / iata-Код авиакомпании IATA (2 буквы), например AA

Ответ

Эндпоинт возвращает массив подходящих авиакомпаний (для корректного кода обычно один элемент).

[
  {
    "id": 24,
    "name": "American Airlines",
    "alias": null,
    "iata": "AA",
    "icao": "AAL",
    "callsign": "AMERICAN",
    "country": "United States",
    "active": "Y",
    "logo": "https://media.skylinkapi.com/logos/AA.png"
  }
]

Объект авиакомпании

ПолеТипОбязательныйNull?Описание
idintegerДаНикогдаЧисловой идентификатор записи
namestringДаНикогдаНазвание авиакомпании
aliasstring | nullНетДаАльтернативное название, если есть
iatastring | nullНетДаКод IATA (2 буквы)
icaostring | nullНетДаКод ICAO (3 буквы)
callsignstring | nullНетДаРадиотелефонный позывной ICAO
countrystring | nullНетДаНазвание страны на английском языке
activestringДаНикогдаY — действующая, N — неактивная или прекратившая деятельность
logostring | nullНетДаURL логотипа на серверах SkyLink, если доступен

Семантика «не найдено»

HTTP-статусТелоЗначение
200[]Подходящий перевозчик не найден — покажите заглушку
400строка detailКод не указан или переданы оба кода

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

"""Airline lookup response models for /airlines/search."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass AirlineLookupRequest:    """Query input for GET /airlines/search - provide one code."""    icao: str | None = None    iata: str | None = None@dataclassclass AirlineRecord:    id: int    name: str    alias: str | None    iata: str | None    icao: str | None    callsign: str | None    country: str | None    active: str    logo: str | None@dataclassclass AirlineSummary:    """Shape returned by airline_summary() helper."""    icao: str | None    iata: str | None    name: str    callsign: str | None    country: str | None    is_active: bool    logo: str | None

Интеграция

Определите перевозчика по коду ICAO и преобразуйте его в компактную модель интерфейса для отображения расписаний.

Пример ниже кэширует результаты поиска авиакомпаний на 24 часа и использует явные тайм-ауты, чтобы медленный вызов внешнего сервиса не блокировал ваш API-воркер.

import osimport timefrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}AIRLINE_TTL = 86_400  # 24 h@dataclassclass AirlineSummary:    icao: str | None    iata: str | None    name: str    callsign: str | None    country: str | None    is_active: bool    logo: str | Nonedef fetch_airline(*, icao: str | None = None, iata: str | None = None) -> dict | None:    if bool(icao) == bool(iata):        raise ValueError("Provide exactly one of icao or iata")    code = (icao or iata or "").upper()    key = f"airline:{icao or ''}:{iata or ''}"    cached = CACHE.get(key)    if cached and time.time() < cached[1]:        return cached[0]    params = {"icao": code} if icao else {"iata": code}    try:        r = requests.get(f"{BASE}/airlines/search", headers=HEADERS, params=params, timeout=(10, 15))    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching airline {code}") from exc    if r.status_code == 404:        return None    r.raise_for_status()    items = r.json()    if not items:        return None    airline = items[0]    CACHE[key] = (airline, time.time() + AIRLINE_TTL)    return airlinedef airline_summary(icao: str) -> AirlineSummary | None:    airline = fetch_airline(icao=icao)    if not airline:        return None    return AirlineSummary(        icao=airline.get("icao"),        iata=airline.get("iata"),        name=airline["name"],        callsign=airline.get("callsign"),        country=airline.get("country"),        is_active=airline.get("active") == "Y",        logo=airline.get("logo"),    )if __name__ == "__main__":    import json    from dataclasses import asdict    summary = airline_summary("AAL")    print(json.dumps(asdict(summary), indent=2) if summary else "Airline not found")

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

Неактивные перевозчики. Отфильтровывайте active: "N", если только вашей функции не нужны исторические рейсы.

Резервный логотип. Всегда обрабатывайте logo: null, подставляя локальное изображение-заглушку.

Выбор кода. Код ICAO стабильнее для операционных систем; код IATA лучше подходит для подписей, которые видят пассажиры.

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

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

400 - не указан код для поиска

{
  "detail": "Either ICAO or IATA code must be provided"
}

400 - указаны оба кода

{
  "detail": "Provide either ICAO or IATA, not both"
}
GET
/airlines/search
x-api-key<token>

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

In: header

Query Parameters

icao?|

3-letter ICAO airline code

iata?|

2-letter IATA airline code

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/airlines/search"
[
  {
    "id": 1355,
    "name": "British Airways",
    "iata": "BA",
    "icao": "BAW",
    "callsign": "SPEEDBIRD",
    "country": "United Kingdom",
    "active": "Y",
    "logo": "https://media.skylinkapi.com/logos/BA.png"
  }
]
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

См. также: Расписания · Статус рейса · Аэропорты