---
title: "Read a quote"
method: GET
path: "/api/v1/quotes/{quoteId}"
tags: ["Quote"]
---

# Read a quote

`GET /api/v1/quotes/{quoteId}`

## Request

- Base URL: `https://www.upgradeagent.ai`
- URL: `https://www.upgradeagent.ai/api/v1/quotes/{quoteId}`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://www.upgradeagent.ai/api/oauth/authorize`, token URL `https://www.upgradeagent.ai/api/oauth/token`, scopes: `mcp`)
  - HTTP bearer

The stored non-PII result (the MCP `get_eligibility_result` tool). A quote another caller owns reads as 404.

## Path parameters

- `quoteId` string, required

## Response `200`

The quote — completed, or still pending the traveler's input.

- union
  - Quote
    - `quoteId` string, nullable, required: Null when the booking isn't transactable (no quote is stored).
    - `status` 'ELIGIBLE' | 'MODIFY' | 'NOT_ELIGIBLE' | 'PNR_NOT_FOUND' | 'NOT_CONFIGURED' | 'ERROR', required
    - `carrier` string, nullable, required: Carrier as supplied by the caller.
    - `carrierCode` string, nullable, required: Operating carrier IATA code from the booking.
    - `options` QuoteOption[], required
      - `offerId` string, required: Deterministic, non-PII id for this cabin+segment — pass as offerReference to PATCH/DELETE/price.
      - `cabin` string, required: Target cabin: BUSINESS | FIRST | PREMIUM_ECONOMY | …
      - `productName` string, required
      - `segment` Segment, required
        - `origin` string, required: IATA airport/port code.
        - `destination` string, required
        - `flightNumber` string, required
        - `departureDate` string, nullable, required: ISO date.
      - `bid` BidRange, required: The operator's live bid range for this option. Offers outside it are rejected.
        - `currency` string, required
        - `minimum` number, nullable, required
        - `suggested` number, nullable, required
        - `maximum` number, nullable, required
      - `instant` object, nullable, required
        - `currency` string, required
        - `price` number, required: The operator's fixed buy-now price.
      - `points` object, nullable, required
        - `minimum` number, nullable, required
        - `suggested` number, nullable, required
        - `maximum` number, nullable, required
      - `existingOffer` object, nullable, required: An offer already on the booking for this option at quote time.
        - `amount` number, nullable, required
        - `currency` string, nullable, required
        - `status` string, required
    - `operatorUrl` string, nullable, required: The operator's hosted upgrade page for this booking (pay-by-link target).
    - `changesRemaining` integer, required: Offer changes still allowed on this booking through the API.
    - `changesLimit` integer, required
    - `expiresAt` string, nullable, required: ISO timestamp — when the quote stops being readable/executable.
    - `message` string, nullable, required
  - PendingQuote
    - `quoteId` string, required
    - `status` 'PENDING' | 'EXPIRED', required
    - `carrier` string, nullable, required
    - `secureUrl` string, required: HTTPS page where the traveler enters their booking reference and last name.
    - `expiresAt` string, required
    - `options` QuoteOption[], required: Always empty while pending.
      - `offerId` string, required: Deterministic, non-PII id for this cabin+segment — pass as offerReference to PATCH/DELETE/price.
      - `cabin` string, required: Target cabin: BUSINESS | FIRST | PREMIUM_ECONOMY | …
      - `productName` string, required
      - `segment` Segment, required
        - `origin` string, required: IATA airport/port code.
        - `destination` string, required
        - `flightNumber` string, required
        - `departureDate` string, nullable, required: ISO date.
      - `bid` BidRange, required: The operator's live bid range for this option. Offers outside it are rejected.
        - `currency` string, required
        - `minimum` number, nullable, required
        - `suggested` number, nullable, required
        - `maximum` number, nullable, required
      - `instant` object, nullable, required
        - `currency` string, required
        - `price` number, required: The operator's fixed buy-now price.
      - `points` object, nullable, required
        - `minimum` number, nullable, required
        - `suggested` number, nullable, required
        - `maximum` number, nullable, required
      - `existingOffer` object, nullable, required: An offer already on the booking for this option at quote time.
        - `amount` number, nullable, required
        - `currency` string, nullable, required
        - `status` string, required
    - `message` string, required

## Other responses

- `401`: Missing, invalid, expired, or revoked bearer token. The WWW-Authenticate challenge points at the OAuth protected-resource metadata.
- `404`: Unknown quote, or owned by another caller.
- `429`: Per-caller rate limit exceeded.

---

[API](https://skmtc.dev/upgradeagent/apis/upgrade-agent-rest-api.md) · [All operations](https://skmtc.dev/upgradeagent/apis/upgrade-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/upgradeagent/apis/upgrade-agent-rest-api/revisions/fbed715712c1?raw)
