---
title: "Hold Agent Flight Quote"
method: POST
path: "/conv/agent-flight-quotes/{token}/hold"
tags: ["conversational"]
---

# Hold Agent Flight Quote

`POST /conv/agent-flight-quotes/{token}/hold`

## 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/agent-flight-quotes/{token}/hold`
- Auth: none declared

An assistant holds its saved offer's price for free. PUBLIC, no account.

A price lock, never a seat: the offer keeps its saved price for
``agent_offer_hold.hold_hours`` (24); when a person claims the offer in
that window their checkout gets a free fare hold with the same clock and
pays the lower of the held and live price. Needs the source the Axel web
server signed for a verified assistant (ChatGPT, Claude) or Axel's MCP
server, else 403 ``verified_assistant_required``. ParamStore
``agent_offer_hold.enabled`` off answers 403 ``agent_offer_hold_disabled``.
Idempotent: a repeat answers the same hold with ``created: false``.

## Path parameters

- `token` string, required

## Headers

- `X-Axel-Flight-Source` string, nullable: Percent-encoded FlightCheckSource JSON the Axel web server signed.
- `X-Axel-Flight-Source-Signature` string, nullable: HMAC-SHA256 (hex) of X-Axel-Flight-Source by the Axel web server.

## Response `200`

Successful Response

- AgentFlightQuoteHoldResponse: ``POST /conv/agent-flight-quotes/{token}/hold``: the offer's active hold.
  - `quote_id` string, uuid, required
  - `price_hold` AgentQuotePriceHold, required: A free price hold an assistant placed on its saved offer (Oct 2026). A price lock, never a seat: when a person claims the offer before ``expires_at``, travel arms a free fare hold on their checkout with this clock and checkout charges the lower of ``held_total_cents`` and the live price. Absent when no hold is active.
    - `held_total_cents` integer, required: Whole-party price held, in cents: the offer's saved price without Membership.
    - `currency` 'USD'
    - `armed_at` string, date-time, required
    - `expires_at` string, date-time, required
    - `basis` 'free'
    - `source` 'assistant'
  - `created` boolean, required: False when the offer already had this active hold (idempotent repeat).

## Other responses

- `403`: agent_offer_hold_disabled or verified_assistant_required
- `404`: Flight quote not found
- `409`: hold_unavailable: departs too soon, offer too old, or unpriced
- `422`: Validation Error
- `429`: hold_limit or too_many_requests

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-15** `ba2f26081946`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/conv/agent-flight-quotes/:token/hold/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)
