---
title: "Release Fare Hold"
method: DELETE
path: "/flight-booking/fare-holds/{hold_id}"
tags: ["flight-booking"]
---

# Release Fare Hold

`DELETE /flight-booking/fare-holds/{hold_id}`

Customer-initiated release of an active hold (active -> released).

## Path parameters

- `hold_id` string, uuid, required

## Response `200`

Successful Response

- FareHoldSummary — One fare_holds row as clients see it. Money is integer cents.
  - `id` string, uuid, required
  - `status` 'active' | 'redeemed' | 'released' | 'expired', required
  - `armed_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `basis_tier` 'free' | 'member' | 'acquisition', required
  - `currency` string, required
  - `held_flight_cents` integer, required
  - `held_items_total_cents` integer
  - `held_items` FareHoldHeldLine[], nullable
    - `kind` 'bag' | 'seat', required
    - `anchor` FareHoldHeldLineAnchor, required — Which flight (seat) or journey (bag) a held line rides. ``schemas.domain.ancillary_identity.SegmentAnchor.as_dict()``.
      - `carrier` string, nullable
      - `flight_number` string, nullable
      - `origin` string, nullable
      - `destination` string, nullable
      - `departure_date` string, nullable
    - `designator` string, nullable
    - `bag` FareHoldHeldBag
      - `checked` boolean, nullable
      - `cabin` boolean, nullable
      - `weight_norm` string, nullable
      - `display_name` string, nullable
    - `quantity` integer, required
    - `traveler_profile_id` string, nullable
    - `held_amount_cents` integer, required
    - `currency` string, required
  - `held_fares` FareHoldHeldFare[], nullable
    - `fare_family_id` string, nullable
    - `fare_label` string, nullable
    - `cabin` string, nullable
    - `held_flight_cents` integer, required
    - `currency` string, required
    - `source` 'session' | 'ladder', required
    - `selected` boolean
  - `itinerary_fingerprint` string, required
  - `fare_match` FareHoldFareMatch — Arm-time fare identity (``schemas.domain.fare_hold_identity.build_fare_match``).
    - `itinerary_fingerprint` string, nullable
    - `fare_family_id` string, nullable
    - `fare_label` string, nullable
    - `cabin` string, nullable
    - `observation_id` string, nullable
  - `pax_count` integer, required
  - `passenger_mix` PassengerCount — Passenger breakdown for offers/searches. Simple counts by type.
    - `adults` integer
    - `children` integer
    - `infants_in_seat` integer
    - `infants_on_lap` integer
  - `flight_summary` FareHoldFlightSummary — Display-only card facts snapshotted at arm time. Built by ``services.fare_hold_service.build_flight_summary``: nulls where the session payload was thin, never a guess. Forwards everything the payload has so the card can grow without a backend change.
    - `origin` string, nullable
    - `destination` string, nullable
    - `departure_date` string, nullable
    - `return_date` string, nullable
    - `carrier` string, nullable
    - `flight_numbers` string[]
    - `fare_label` string, nullable
    - `origin_city` string, nullable
    - `destination_city` string, nullable
    - `trip_type` 'one_way' | 'round_trip' | 'multi_city', nullable
    - `is_international` boolean, nullable
    - `carriers` string[]
    - `fare_family_id` string, nullable
    - `cabin` string, nullable
    - `requested_cabin` string, nullable
    - `fare_features` string[]
    - `baggage_notes` string[]
    - `book_with` string, nullable
    - `separate_tickets` boolean, nullable
    - `source` string, nullable
    - `observed_at` string, date-time, nullable
    - `seats_available` integer, nullable
    - `total_stops` integer, nullable
    - `total_duration_minutes` integer, nullable
    - `legs` FareHoldFlightLeg[]
      - `direction` 'outbound' | 'return' | 'leg', required
      - `origin` string, nullable
      - `destination` string, nullable
      - `origin_city` string, nullable
      - `destination_city` string, nullable
      - `departure_date` string, nullable
      - `departure_time` string, nullable
      - `arrival_date` string, nullable
      - `arrival_time` string, nullable
      - `stops` integer
      - `duration_minutes` integer, nullable
      - `carrier` string, nullable
      - `carriers` string[]
      - `cabin` string, nullable
      - `fare_family` string, nullable
      - `fare_family_id` string, nullable
      - `flight_numbers` string[]
      - `overnight` boolean, nullable
      - `layovers` FareHoldFlightLayover[]
        - `airport` string, nullable
        - `city` string, nullable
        - `duration_minutes` integer, nullable
      - `segments` FareHoldFlightSegment[]
        - `origin` string, nullable
        - `destination` string, nullable
        - `origin_city` string, nullable
        - `destination_city` string, nullable
        - `origin_terminal` string, nullable
        - `destination_terminal` string, nullable
        - `departure_date` string, nullable
        - `departure_time` string, nullable
        - `arrival_date` string, nullable
        - `arrival_time` string, nullable
        - `duration_minutes` integer, nullable
        - `carrier` string, nullable
        - `marketing_carrier` string, nullable
        - `operating_carrier` string, nullable
        - `flight_number` string, nullable
        - `raw_flight_number` string, nullable
        - `marketing_flight_number` string, nullable
        - `cabin` string, nullable
        - `raw_supplier_cabin` string, nullable
        - `cabin_confidence` string, nullable
        - `booking_class` string, nullable
        - `fare_family` string, nullable
        - `fare_family_id` string, nullable
        - `aircraft` string, nullable
        - `overnight` boolean, nullable
        - `often_delayed` boolean, nullable
  - `conv_trip_id` string, uuid, nullable
  - `source_session_id` string, uuid, required
  - `observation_id` string, uuid, nullable
  - `card_observation_id` string, uuid, nullable
  - `last_live_cents` integer, nullable
  - `last_quoted_at` string, date-time, nullable
  - `last_quote_reason` 'ok' | 'fare_gone' | 'unknown', nullable
  - `dismissed_at` string, date-time, nullable
  - `redeemed_booking_id` string, uuid, nullable
  - `ended_at` string, date-time, nullable

## Other responses

- `403` — Arming is paused, or price holds are a member benefit.
- `404` — No such hold or checkout session for this user.
- `409` — The hold or session is not in a state that allows this.
- `422` — Validation Error
- `503` — Membership could not be verified, or the held checkout could not be reopened.

## Changes

> 16 revisions in range; 1 not diffed.

- **2026-09-10** `09ac75a22f0e` — 5 info
  - added the optional property `card_observation_id` to the response with the `200` status
  - added the optional property `detail/hold/anyOf[subschema #1: FareHoldSummary]/card_observation_id` to the response with the `403` status
  - added the optional property `detail/hold/anyOf[subschema #1: FareHoldSummary]/card_observation_id` to the response with the `404` status
  - added the optional property `detail/hold/anyOf[subschema #1: FareHoldSummary]/card_observation_id` to the response with the `409` status
  - …1 more
- **2026-09-06** `fa0678aea849` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/flight-booking/fare-holds/:hold_id/delete.md)

---

[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.dev/helloaxel/apis/client-api-gateway/revisions/d777249f5e71?raw)
