---
title: "Record Exploration"
method: POST
path: "/conv/flight-check-signals/exploration"
tags: ["conversational"]
---

# Record Exploration

`POST /conv/flight-check-signals/exploration`

## Request

- Base URL: `https://api.helloaxel.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.helloaxel.com/conv/flight-check-signals/exploration`
- Auth: none declared

Reuse the authenticated first-party stream; no supplier or account work.

## Headers

- `authorization` string, nullable

## Request body

- AgentExplorationSignalRequest: Only web observations may enter the scoped web ingestion endpoint.
  - `session_id` string, uuid, required
  - `entry` union, required
    - AgentExplorationPage: One server-rendered page fetch, not a click, person or supplier operation. Flights and hotels share the existing session-scoped event store. Counts describe what this response exposed, not the eventual cache contents.
      - `type` 'exploration_page' | 'comparison_viewed', required
      - `product` 'flight' | 'hotel', required
      - `request_id` string, uuid, required
      - `occurred_at` string, date-time, required
      - `page` 'results' | 'requirements' | 'edit' | 'comparison' | 'destination' | 'dates' | 'guests' | 'properties' | 'rooms' | 'rates' | 'offer' | 'price_request' | 'price_request_signup', required
      - `action` 'view' | 'refresh' | 'continue'
      - `outcome` 'ready' | 'partial' | 'empty' | 'unavailable' | 'pending'
      - `api_operation` 'destinations' | 'hotels' | 'hotel' | 'search' | 'results' | 'rooms' | 'quote' | 'details', nullable
      - `http_status` integer, nullable
      - `error_reason` 'stay_changed' | 'expired' | 'rate_limited' | 'not_found' | 'invalid_request' | 'unavailable' | 'network' | 'unknown', nullable
      - `retry_after_seconds` integer, nullable
      - `duration_ms` integer, required
      - `fetcher` 'chatgpt' | 'claude' | 'perplexity' | 'google' | 'muse' | 'mcp' | 'crawler' | 'unknown'
      - `viewer` 'assistant' | 'person'
      - `verified` boolean
      - `page_revision` string, nullable
      - `mode` 'departure' | 'return' | 'both' | 'week' | 'flexible', nullable
      - `total_count` integer, nullable
      - `ready_count` integer, nullable
      - `priced_count` integer, nullable
      - `result_count` integer, nullable
      - `departure_date` string, date, nullable
      - `return_date` string, date, nullable
      - `check_in` string, date, nullable
      - `check_out` string, date, nullable
      - `destination` string, nullable
      - `hotel_id` integer, nullable
      - `room_key` string, nullable
      - `page_number` integer, nullable
      - `quote_id` string, uuid, nullable
      - `fare_index` integer, nullable: Explicit valid fare selection on a named agent's flight offer review fetch; not a recommendation or sharing receipt.
      - `flight_observation_ids` string[], nullable
      - `hotel_quote_ids` string[], nullable
      - `hotel_property_ids` integer[], nullable
      - `flight_stage` 'outbound' | 'return' | 'quote' | 'saved', nullable
      - `flight_search_choices` FlightSearchChoices
        - `airline` string, nullable
        - `max_stops` integer, nullable
        - `outbound` FlightSearchLegChoices
          - `stops` 'nonstop' | 'one' | 'twoPlus', nullable
          - `airline_only` string, nullable
          - `avoided_airlines` string[]
        - `returning` FlightSearchLegChoices
          - `stops` 'nonstop' | 'one' | 'twoPlus', nullable
          - `airline_only` string, nullable
          - `avoided_airlines` string[]
        - `fare_preferences` FlightFarePreferences: Stated needs for this party; None is unstated, never a requirement.
          - `seat_selection` boolean, nullable
          - `carry_on` boolean, nullable
          - `checked_bags` integer, nullable: Checked bags needed per ticketed traveler, on each direction.
          - `changes` boolean, nullable
          - `refunds` boolean, nullable
      - `trip_reference` string, nullable
      - `request_scope` 'search' | 'selection', nullable
      - `plan_lookup_ms` integer, nullable
      - `search_ms` integer, nullable
      - `save_ms` integer, nullable
      - `render_ms` integer, nullable
      - `comparison_results` AgentComparisonResult[], nullable
        - `departure_date` string, date, required
        - `return_date` string, date, nullable
        - `status` 'priced' | 'empty' | 'pending', required
        - `observation_id` string, uuid, nullable
      - `hotel_choices` object, nullable
    - AgentSessionLinked: An edge between existing sessions; never a new journey identifier.
      - `type` 'session_linked', required
      - `product` 'flight' | 'hotel', required
      - `parent_session_id` string, uuid, required
      - `reason` 'dates' | 'search_edit' | 'next_day', required
      - `occurred_at` string, date-time, required
    - AgentHotelBrowserSignal: Client-observed hotel browsing, never an AI fetch or proof of a human. Anonymous ingestion cannot claim a user, purchase, charge, or booking. Authenticated checkout continues in user_signals/trip_logs.
      - `type` 'hotel_browser_signal', required
      - `product` 'hotel'
      - `event` 'handoff_opened' | 'hotel_checkout_opened' | 'rooms_loaded' | 'rooms_empty' | 'rooms_load_failed' | 'room_list_viewed' | 'room_details_opened' | 'room_continue_tapped' | 'checkout_abandoned' | 'hotel_price_comparison_viewed', required
      - `request_id` string, uuid, required
      - `occurred_at` string, date-time, required
      - `device_id` string, uuid, required
      - `hotel_checkout_id` string, uuid, nullable
      - `hotel_id` integer, required
      - `agent_hotel_quote_id` string, uuid, nullable
      - `quote_id` string, uuid, nullable
      - `room_count` integer, nullable
      - `had_error` boolean, nullable
      - `step` 'detail' | 'travelers' | 'confirm' | 'complete' | 'payment', nullable
      - `page_revision` string, nullable
      - `hotel_price_comparison` HotelPriceComparisonExposure: Provider rows visibly presented, not merely fetched by the browser.
        - `axel_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
        - `check_in` string, date, required
        - `check_out` string, date, required
        - `adults` integer, required
        - `children_ages` integer[], required
        - `providers` HotelPriceProofProvider[], required
          - `provider` 'hotel_website' | 'expedia' | 'booking.com', required
          - `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
        - `basis` 'hotel_starting_price' | 'displayed_rate', required
        - `checked_at` string, date-time, required
        - `expires_at` string, date-time, required
        - `breakfast_only` boolean

## Response `200`

Successful Response

- FlightCheckSignalRecorded
  - `recorded` boolean, required

## Other responses

- `422`: Validation Error

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-20** `11400fcce11a`: 5 info
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/plan_lookup_ms`
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/render_ms`
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/save_ms`
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/search_ms`
  - …1 more
- **2026-10-19** `2af704f6b5b3`: 2 info
  - added the new optional request property `entry/oneOf[subschema #3: AgentHotelBrowserSignal]/hotel_price_comparison`
  - added the new `hotel_price_comparison_viewed` enum value to the request property `entry/oneOf[subschema #3: AgentHotelBrowserSignal]/event`
- **2026-10-19** `0abedc5c73dd`: 5 info
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/request_scope`
  - added `hotel_browser_signal` discriminator mapping keys to the `entry` request property
  - added the new `price_request` enum value to the request property `entry/oneOf[subschema #1: AgentExplorationPage]/page`
  - added the new `price_request_signup` enum value to the request property `entry/oneOf[subschema #1: AgentExplorationPage]/page`
  - …1 more
- **2026-10-18** `c02ec1aa4be1`: 1 info
  - added the new optional request property `entry/oneOf[subschema #1: AgentExplorationPage]/fare_index`
- …earlier changes not shown

[Operation history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/conv/flight-check-signals/exploration/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/8824999a7a0a?raw)
