# Статус рейса

Статус рейса в реальном времени по номеру рейса: время вылета и прилёта, гейты, терминалы и метки операционного статуса.



Операционный статус отдельного рейса по расписанию в реальном времени. Передайте **номер рейса IATA** (2-буквенный префикс авиакомпании + цифры, например `BA123`) или **префикс оператора ICAO** (3-буквенный префикс, например `BAW123`). Ответ содержит время вылета и прилёта, терминал, гейт, стойку регистрации и багажную ленту, если они опубликованы.

Поля гейта, терминала, багажной ленты и стойки регистрации часто содержат **пустые строки** (`""`), пока авиакомпания или аэропорт их не опубликует, — не `null`. Отображайте пустые строки в интерфейсе как «неизвестно» и не выводите их как ошибки конфигурации.

Поиск по префиксу ICAO определяет коды операторов по справочным данным SkyLink. Если номер в формате IATA есть, используйте его: определение европейских операторов менее надёжно, чем поиск по IATA для крупных перевозчиков.

## Запрос [#request]

<DocRequirements>
  <DocRequirementAuth />
</DocRequirements>

<DocApiPath method="GET" path="/flight_status/{flight_number}" />

| Параметр        | Тип    | Обязательный | Описание                                                                           |
| --------------- | ------ | ------------ | ---------------------------------------------------------------------------------- |
| `flight_number` | string | Да           | Номер рейса в формате IATA (`BA123`) или префикс оператора ICAO + цифры (`BAW123`) |

## Ответ [#response]

```json
{
  "flight_number": "BA 123",
  "airline": "British Airways",
  "status": "En Route",
  "departure": {
    "airport": "EGLL",
    "airport_full": "London Heathrow Airport",
    "scheduled_time": "10:30",
    "scheduled_date": "11 Feb",
    "actual_time": "10:35",
    "actual_date": "11 Feb",
    "terminal": "5",
    "gate": "A12",
    "checkin": ""
  },
  "arrival": {
    "airport": "KJFK",
    "airport_full": "John F Kennedy International Airport",
    "scheduled_time": "14:45",
    "scheduled_date": "11 Feb",
    "estimated_time": "14:50",
    "estimated_date": "11 Feb",
    "terminal": "7",
    "gate": "B15",
    "baggage": ""
  }
}
```

### Поля верхнего уровня [#top-level-fields]

| Поле            | Тип    | Обязательный | Описание                                                                                        |
| --------------- | ------ | ------------ | ----------------------------------------------------------------------------------------------- |
| `flight_number` | string | **Да**       | Номер рейса для отображения, например `"BA 123"`                                                |
| `airline`       | string | **Да**       | Название авиакомпании для отображения                                                           |
| `status`        | string | **Да**       | Текущая метка статуса — воспринимайте её как текст для отображения, а не как фиксированный enum |
| `departure`     | object | **Да**       | Информация об аэропорте вылета и гейте                                                          |
| `arrival`       | object | **Да**       | Информация об аэропорте прилёта и гейте                                                         |

### Объект `departure` [#departure-object]

| Поле             | Тип    | Обязательный | Примечания                                       |
| ---------------- | ------ | ------------ | ------------------------------------------------ |
| `airport`        | string | **Да**       | Код аэропорта (IATA или ICAO)                    |
| `airport_full`   | string | **Да**       | Полное название аэропорта                        |
| `scheduled_time` | string | **Да**       | Местное время вылета по расписанию               |
| `scheduled_date` | string | **Да**       | Местная дата вылета по расписанию                |
| `actual_time`    | string | **Да**       | Фактическое или последнее известное время вылета |
| `actual_date`    | string | **Да**       | Дата для `actual_time`                           |
| `terminal`       | string | **Да**       | Может быть `""`, если не опубликован             |
| `gate`           | string | **Да**       | Может быть `""`, если неизвестен                 |
| `checkin`        | string | **Да**       | Может быть `""`, если не указана                 |

### Объект `arrival` [#arrival-object]

| Поле             | Тип    | Обязательный | Примечания                                             |
| ---------------- | ------ | ------------ | ------------------------------------------------------ |
| `airport`        | string | **Да**       | Код аэропорта прилёта                                  |
| `airport_full`   | string | **Да**       | Полное название аэропорта                              |
| `scheduled_time` | string | **Да**       | Местное время прилёта по расписанию                    |
| `scheduled_date` | string | **Да**       | Местная дата прилёта по расписанию                     |
| `estimated_time` | string | **Да**       | Последнее расчётное время прилёта, когда рейс в пути   |
| `estimated_date` | string | **Да**       | Дата для `estimated_time`                              |
| `terminal`       | string | **Да**       | Может быть `""`, если недоступен                       |
| `gate`           | string | **Да**       | Может быть `""`, если неизвестен                       |
| `baggage`        | string | **Да**       | Багажная лента — может быть `""`, если не опубликована |

## Клиентские типы [#client-types]

<DocClientTypes id="v31/flight-status/status-types" />

## Интеграция [#integration]

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

Пример ниже нормализует введённый номер рейса для отображения, применяет тайм-ауты подключения и чтения и преобразует ответ в плоскую модель представления для UI-компонентов.

<DocExample id="v31/flight-status/status-fetch" />

### Примечания по реализации [#implementation-notes]

**Обработка отсутствующих данных о гейте и терминале.** Поля гейта, терминала, багажной ленты и стойки регистрации часто остаются пустыми строками почти до самого вылета или прилёта. Скрывайте их или показывайте нейтральный плейсхолдер, а не баннер с ошибкой.

**Метки статуса.** Не зашивайте в код исчерпывающий enum статусов. Обрабатывайте отдельно только то, что нужно вашему интерфейсу (например, `Cancelled` и `Landed` для цветовой маркировки).

**Частота опроса.** Для потребительских табло рейсов опрашивайте каждые 2–5 минут. Для push-обновлений см. [Вебхуки](/docs/v31/webhooks-subscriptions).

## Ответы с ошибками [#error-responses]

Общие ошибки платформы см. в разделе [Обработка ошибок](/docs/errors). Специфичные для эндпоинта:

### 404 — рейс не найден [#404---flight-not-found]

```json
{
  "detail": "Flight not found for number: BA123"
}
```

Обычно это означает, что рейс сегодня не выполняется, номер некорректен или источник данных ещё не опубликовал его. У этого эндпоинта нет параметра даты — день выполнения рейса проверяйте в разделе [Расписания](/docs/v31/schedules).

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

***

См. также: [Расписания](/docs/v31/schedules) · [Брифинг полёта](/docs/v31/flight-briefing) · [Авиакомпании](/docs/v31/airlines)
