---
title: "Create Flight Booking By Code"
method: POST
path: "/bookings/flight/code"
tags: ["bookings"]
---

# Create Flight Booking By Code

`POST /bookings/flight/code`

Create a flight booking from a confirmation code.

## Request body

- ConfirmationCodeBookingRequest
  - `confirmation_code` string, required
  - `booking_provider` string, required
  - `traveler_profile_id` string, uuid, nullable
  - `first_name` string, nullable
  - `last_name` string, nullable
  - `conv_trip_id` string, uuid, nullable — Brain trip document UUID from conversation card

## Response `201`

Successful Response

- FlightBookingDetailResponse — Enriched flight booking detail for client.
  - `id` string, uuid, required
  - `user_id` string, uuid, required
  - `status` string, required
  - `confirmation_code` string, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `is_axel_booked` boolean — True if booked through Axel (booking_channel='axel')
  - `booking_channel` string, nullable
  - `booking_provider` string, nullable
  - `origin` string, nullable
  - `origin_city` string, nullable
  - `destination` string, nullable
  - `destination_city` string, nullable
  - `departure_date` string, date, nullable
  - `departure_time` string, date-time, nullable
  - `arrival_time` string, date-time, nullable
  - `is_round_trip` boolean
  - `cabin_class` string, nullable
  - `airline_code` string, nullable
  - `airline_name` string, nullable
  - `travelers` string[] — Traveler names
  - `total_price` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
    - `amount` integer, required
    - `currency` string, required
  - `is_award_booking` boolean
  - `reprice_capability` RepriceCapability — What Axel can do with a booking.
    - `can_reprice` boolean, required — Whether repricing is possible
    - `is_watching` boolean, required — Whether an active watch exists
    - `blocker` 'basic_economy' | 'award_booking' | 'already_departed' | 'departure_too_soon' | 'booking_cancelled' | 'booking_not_active' | 'supplier_not_supported' | 'insufficient_data' | 'non_refundable_hotel' — Reasons Axel can't reprice a booking.
  - `credit_secured` SavingsSecured — Savings captured from a completed reprice.
    - `savings_method` 'card_refund' | 'axel_credit' | 'airline_credit' | 'miles_returned' | 'reduced_payment', required — How customer receives savings from repricing.
    - `amount` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `miles_amount` integer, nullable — Miles returned
    - `airline_credit_id` string, uuid, nullable — Reference to airline credit record
    - `airline_code` string, nullable — IATA airline code
    - `airline_name` string, nullable — Airline display name
    - `expires_at` string, date, nullable — Credit expiration date
    - `loyalty_program` string, nullable — Loyalty program name
  - `airline_credit_offer` AirlineCreditOffer — Synthetic airline-credit offer shown after sparse flight import.
    - `available` boolean, required
    - `credit_cents` integer, nullable
    - `currency` string, nullable
    - `airline_name` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) · [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/helloaxel/client-api-gateway/revisions/d3c4c29fede7/schema)
