---
title: "Change a bid's aircraft"
method: POST
path: "/flights/change-aircraft"
tags: ["Flights"]
---

# Change a bid's aircraft

`POST /flights/change-aircraft`

Assigns a different aircraft to a bid before the flight is started. Persists the bid's aircraft so `/flights/start` uses it. The chosen aircraft must be one returned by `GET /flights/bookings/{bid}/aircraft`. Rejected when the authenticated pilot has their own SimBrief OFP for the flight, once a PIREP is in progress, and for aircraft outside the flight's eligible set.

## Request body

- ChangeAircraftRequest
  - `bid_id` integer, required
  - `aircraft_id` integer, required — Must be one of the IDs from GET /flights/bookings/{bid}/aircraft.

## Response `200`

Updated booking.

- Booking
  - `bid_id` integer, required — Unique bid ID. Used by `/flights/start` and `/flights/unbook`.
  - `number` string, required — Flight number (no airline code).
  - `code` string, required — Operating airline code.
  - `departure_airport` string, required — Departure airport ID (ICAO).
  - `arrival_airport` string, required
  - `route` string[], required — Route waypoints split on whitespace. Empty array if no route is filed.
  - `flight_level` string, required — Cruise altitude as filed (free-form string, e.g. `360` or `FL360`).
  - `distance` number, float, required — Great-circle distance in the VA's configured local unit (typically nautical miles).
  - `departure_time` string, required — Scheduled departure, free-form per VA setting.
  - `arrival_time` string, required
  - `flight_time` number, float, required — Scheduled flight time in decimal hours.
  - `days_of_week` integer[], required — Days the flight operates (0 = Sunday). Empty if not configured.
  - `type` 'P' | 'C', required — Coarse flight category derived from phpVMS's flight_type. `P` = passenger (scheduled/charter/extra/govt/other), `C` = cargo (ambulance/cargo/training/mail/military/positioning/special/general aviation/technical).
  - `aircraft` integer, nullable, required — Aircraft ID assigned to the bid: the SimBrief airframe if set, otherwise the bid's aircraft. Null when no aircraft is assigned — the pilot must pick one (e.g. via /flights/change-aircraft) before starting.
  - `aircraft_changeable` boolean — Whether the pilot may switch the aircraft for this bid before starting. False when the authenticated pilot has their own SimBrief OFP for this flight — per-pilot, so another pilot's OFP does not lock it. Drives the client's dropdown-vs-text rendering.
  - `notes` string, required

## Other responses

- `401` — Missing or invalid Bearer token.
- `403` — The bid does not belong to the authenticated pilot.
- `404` — Bid not found.
- `409` — A PIREP is already in progress for this bid.
- `422` — Missing fields, the authenticated pilot's own SimBrief OFP locking the aircraft, or an aircraft not eligible for this flight.

---

[API](https://skmtc.net/skyvexsoftware/apis/stratos-core-api.md) · [All operations](https://skmtc.net/skyvexsoftware/apis/stratos-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skyvexsoftware/stratos-core-api/versions/0b7ba98ff0aa/schema)
