---
title: "Retrieve an existing quote"
method: GET
path: "/quotes/{id}"
---

# Retrieve an existing quote

`GET /quotes/{id}`

## Request

- Base URL: `https://api.tellandgo.com/api/v1/agent`
- URL: `https://api.tellandgo.com/api/v1/agent/quotes/{id}`
- Auth: API key in header `X-API-Key`

Returns the cached quote by ID. `pricing.price_per_night` uses the SAME
definition as POST /quote — the all-in average (total / nights) — not
the rail-specific cached per-night figure (redefined 2026-08; the two
endpoints previously disagreed about the same quote id). When `nights`
is not positive the response falls back to the cached per-night figure
and omits `price_per_night_basis`.

## Path parameters

- `id` string, required

## Response `200`

Quote found

- QuoteResponse
  - `success` boolean
  - `quote` object
    - `id` string
    - `expires_at` string, date-time
    - `property` object
      - `id` string
      - `name` string
    - `room` object
      - `id` string
      - `name` string
    - `dates` object
      - `check_in` string, date
      - `check_out` string, date
      - `nights` integer
    - `pricing` object
      - `price_per_night` number: Uniform all-in average (total / nights) — see price_per_night_basis. NOT the base rate.
      - `price_per_night_basis` 'all_in_average': States that price_per_night is the all-in average (total / nights). Breakdown rows carry both bases explicitly.
      - `subtotal` number
      - `taxes_and_fees` number: NOT a pure tax figure — see taxes_and_fees_composition for what this bucket contains on each supplier rail. Always satisfies subtotal + taxes_and_fees == total.
      - `taxes_and_fees_composition` QuoteFeeComponent[]: Honest decomposition of the taxes_and_fees bucket. All amounts are customer money: supplier-itemized components are rescaled into the quote currency at customer prices so the set sums exactly to taxes_and_fees (raw supplier amounts are never emitted).
        - `kind` 'supplier_itemized' | 'supplier_charges_and_taxes' | 'included_in_total': supplier_itemized — a component the supplier itemized, rescaled to the quote currency at customer prices (the component set sums exactly to taxes_and_fees). supplier_charges_and_taxes — the supplier did not itemize (or the itemization did not reconcile); the amount is the whole bucket: taxes, supplier charges, and the retail spread. included_in_total — taxes and fees are already inside total; the bucket is zero by construction.
        - `name` string
        - `amount` number
        - `currency` string
        - `note` string
      - `total` number
      - `currency` string
      - `breakdown` object[]: Per-night price rows.
        - `date` string, date
        - `price` number: Legacy per-night figure kept for compat; its basis is rail-specific. Use base_price / all_in_price for an unambiguous reading.
        - `base_price` number: Base-rate share of this night: subtotal / nights.
        - `all_in_price` number: All-in share of this night: total / nights.
      - `non_included_taxes` NonIncludedTax[]: Taxes/fees not included in the online total and payable directly at check-in.
        - `name` string
        - `amount` string
        - `currency_code` string
        - `payable_at` 'check_in'
        - `note` string
    - `cancellation` object
      - `policy` string
      - `deadline` string, date-time: Cancellation deadline in UTC.
      - `refundable` boolean
      - `timezone` string: Label for the deadline/penalty timestamps. "UTC+0" means supplier timestamps are UTC-normalized; a "UTC±HH:MM" offset means the supplier states deadlines in the property's local timezone at that offset.
      - `penalty_schedule` QuotePenaltyBand[]: Full typed penalty ladder in customer (marked-up) money, present only when every supplier band parsed and rescaled cleanly (fails closed — omitted otherwise). The legacy policy string is always kept.
        - `from` string, nullable: Instant this penalty starts applying; null = from booking time.
        - `end_at` string: Instant this penalty stops applying, when the supplier bounded it.
        - `amount` number
        - `currency` string
    - `meal_plan` string
    - `prebook` object
      - `required_before_payment` boolean
      - `status` 'not_required' | 'not_started' | 'required' | 'locked' | 'price_changed' | 'failed'
      - `expires_at` string, date-time
      - `price_changed` boolean
    - `room_static` object: Static room content matched to the quoted rate, when available.
      - `images` object[]
        - `url` string, uri
        - `caption` string, nullable
      - `amenities` string[]
      - `rg_ext_match` boolean: Legacy conflated flag — true when ANY matching mechanism matched, not necessarily the one that supplied images. Use images_match_source / match_sources for truthful provenance.
      - `images_match_source` 'room_image_candidate' | 'room_type_rg_ext' | 'rg_ext' | 'name_containment': How the served images were matched, when any were served.
      - `match_sources` object: Per-mechanism match report behind the legacy rg_ext_match flag.
        - `room_image_candidate` boolean
        - `room_type` boolean
        - `etg_room_group` boolean
    - `hotel_policies` HotelPolicies: Supplier-neutral hotel policy metadata. Field names are stable across suppliers; raw supplier-specific policy keys are not exposed.
      - `extra_info` union: Optional free-text policy notes such as local taxes, fees, or other important hotel information.
        - string
        - object
      - `structured` object: Optional structured policy data normalized under supplier-neutral field names.
  - `quotes` object[]: All currently available rates from one live availability lookup, each with its own quote ID.
  - `booking_url` string, uri

## Other responses

- `401`: Authentication required or invalid
- `404`: Resource not found

---

[API](https://skmtc.dev/tellandgo/apis/tell-go-travel-agent-api.md) · [All operations](https://skmtc.dev/tellandgo/apis/tell-go-travel-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tellandgo/apis/tell-go-travel-agent-api/revisions/3d84f816eb4f?raw)
