---
title: "Search"
method: POST
path: "/conv/agent-flight-searches"
tags: ["conversational"]
---

# Search

`POST /conv/agent-flight-searches`

## Headers

- `X-Axel-Quote-Session` string, uuid, required
- `X-Axel-Flight-Source` string, nullable — Optional percent-encoded FlightCheckSource JSON (2048 characters maximum). Invalid telemetry is ignored.

## Request body

- AgentFlightQuoteRequest — Route search using existing airport resolution and traveler types.
  - `origin` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
  - `destination` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
  - `departure_date` string, date, required
  - `return_date` string, date, nullable
  - `passengers` AgentFlightPassengers, required — Anonymous pricing needs counts/types, never traveler identities.
    - `adults` integer, required
    - `children` integer
    - `infants_in_seat` integer
    - `infants_on_lap` integer
  - `airline` string, nullable
  - `max_stops` integer, nullable — Maximum stops per direction; null leaves stops unrestricted.
  - `cabin` 'economy' | 'business'
  - `currency` 'USD'

## Response `200`

Successful Response

- union
  - AgentFlightSearchOptionsResponse — Flight choices with stage-specific Member totals and no supplier tokens.
    - `stage` 'outbound' | 'return', required
    - `session_id` string, uuid, required
    - `request` AgentFlightQuoteRequest, required — Route search using existing airport resolution and traveler types.
      - `origin` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
      - `destination` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
      - `departure_date` string, date, required
      - `return_date` string, date, nullable
      - `passengers` AgentFlightPassengers, required — Anonymous pricing needs counts/types, never traveler identities.
        - `adults` integer, required
        - `children` integer
        - `infants_in_seat` integer
        - `infants_on_lap` integer
      - `airline` string, nullable
      - `max_stops` integer, nullable — Maximum stops per direction; null leaves stops unrestricted.
      - `cabin` 'economy' | 'business'
      - `currency` 'USD'
    - `options` AgentFlightSearchOption[], required
      - `option_id` string, uuid, required — Existing Axel flight observation ID; select this ID directly.
      - `summary` FlightShareLeg, required — Public-safe itinerary facts for one ordered leg of a flight.
        - `airline_name` string, nullable
        - `airline_code` string, nullable
        - `origin` string, required
        - `destination` string, required
        - `departure_date` string, required
        - `departure_time` string, nullable
        - `arrival_date` string, nullable
        - `arrival_time` string, nullable
        - `duration_minutes` integer, nullable
        - `stops` integer, required
        - `connection_airports` string[], nullable — Ordered connection airport codes when every segment boundary is known and stays at the same airport. Null when unavailable, incomplete, or requiring an airport change; an empty list means a confirmed nonstop leg.
        - `flight_numbers` string[]
      - `starting_member_price_total` 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
      - `starting_non_member_price_total` 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
      - `member_price_total` 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
      - `non_member_price_total` 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
      - `airline_price_total` 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
    - `selected_outbound` FlightShareLeg — Public-safe itinerary facts for one ordered leg of a flight.
      - `airline_name` string, nullable
      - `airline_code` string, nullable
      - `origin` string, required
      - `destination` string, required
      - `departure_date` string, required
      - `departure_time` string, nullable
      - `arrival_date` string, nullable
      - `arrival_time` string, nullable
      - `duration_minutes` integer, nullable
      - `stops` integer, required
      - `connection_airports` string[], nullable — Ordered connection airport codes when every segment boundary is known and stays at the same airport. Null when unavailable, incomplete, or requiring an airport change; an empty list means a confirmed nonstop leg.
      - `flight_numbers` string[]
    - `origin_airports` string[] — Resolved origin airports included in this search.
    - `destination_airports` string[] — Resolved destination airports included in this search.
  - AgentFlightSearchQuoteResponse
    - `stage` 'quote'
    - `session_id` string, uuid, required
    - `checks_remaining` integer, nullable — Deprecated saved-offer allowance; clients must not require this field.
    - `url` string, required
    - `share` AgentFlightQuoteResolveResponse, required — Persisted quote readable independently of its creating browser/session.
      - `target` FlightShareTarget — Public target discriminator for a shared flight.
        - `type` 'flight_share'
      - `share_kind` 'agent_quote'
      - `quote_id` string, uuid, required
      - `request` AgentFlightQuoteRequest, required — Route search using existing airport resolution and traveler types.
        - `origin` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
        - `destination` string, required — Airport code, city/metro name or code, or comma-separated airport codes. Resolves to searchable airport codes before search.
        - `departure_date` string, date, required
        - `return_date` string, date, nullable
        - `passengers` AgentFlightPassengers, required — Anonymous pricing needs counts/types, never traveler identities.
          - `adults` integer, required
          - `children` integer
          - `infants_in_seat` integer
          - `infants_on_lap` integer
        - `airline` string, nullable
        - `max_stops` integer, nullable — Maximum stops per direction; null leaves stops unrestricted.
        - `cabin` 'economy' | 'business'
        - `currency` 'USD'
      - `snapshot` FlightShareSnapshot, required — Immutable, explicitly whitelisted facts safe for a public share page.
        - `fare_label` string, nullable
        - `passenger_count` integer, required
        - `legs` FlightShareLeg[], required
          - `airline_name` string, nullable
          - `airline_code` string, nullable
          - `origin` string, required
          - `destination` string, required
          - `departure_date` string, required
          - `departure_time` string, nullable
          - `arrival_date` string, nullable
          - `arrival_time` string, nullable
          - `duration_minutes` integer, nullable
          - `stops` integer, required
          - `connection_airports` string[], nullable — Ordered connection airport codes when every segment boundary is known and stays at the same airport. Null when unavailable, incomplete, or requiring an airport change; an empty list means a confirmed nonstop leg.
          - `flight_numbers` string[]
        - `axel_price_total` Money, required — 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
        - `comparison_price_total` 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
        - `non_member_price_total` 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
      - `checked_at` string, date-time, required
      - `membership_required` true
      - `membership_terms` string
      - `non_member_booking` string

## Other responses

- `422` — Validation Error

## Changes

> 15 revisions in range; 1 not diffed.

- **2026-09-15** `fa4c4b94f345` — 2 breaking, 4 info
  - the response property `oneOf[subschema #2: AgentFlightSearchQuoteResponse]/checks_remaining` became optional for the status `200`
  - response property `oneOf[subschema #2: AgentFlightSearchQuoteResponse]/checks_remaining` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - added the optional property `oneOf[subschema #1: AgentFlightSearchOptionsResponse]/options/items/summary/connection_airports` to the response with the `200` status
  - added the optional property `oneOf[subschema #1: AgentFlightSearchOptionsResponse]/selected_outbound/anyOf[subschema #1: FlightShareLeg]/connection_airports` to the response with the `200` status
  - …2 more
- **2026-09-14** `40b17b2af72a` — 4 info
  - added the new optional `header` request parameter `X-Axel-Flight-Source`
  - added the optional property `oneOf[subschema #1: AgentFlightSearchOptionsResponse]/options/items/non_member_price_total` to the response with the `200` status
  - added the optional property `oneOf[subschema #1: AgentFlightSearchOptionsResponse]/options/items/starting_non_member_price_total` to the response with the `200` status
  - added the optional property `oneOf[subschema #2: AgentFlightSearchQuoteResponse]/share/snapshot/non_member_price_total` to the response with the `200` status
- **2026-09-11** `106d2d712b27` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/conv/agent-flight-searches/post.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/e5f778e80f9a?raw)
