> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.truvo.com/llms.txt.

# Show quotes to a person

Once a quote request lists a quote in `quotes`, read it with `GET /v1/quotes/{id}`. This is a recorded sandbox auto quote:

### Response (200)

```json
{
  "id": "qt_5509b679fd9c50116b9d7791078a12ab",
  "version": 1,
  "environment": "sandbox",
  "quote_request_id": "qreq_f09d1472f363261d325ba98ca1d965ee",
  "created_at": "2026-09-27T15:00:20.000000Z",
  "updated_at": "2026-09-27T15:00:24.000Z",
  "status": "active",
  "status_details": {
    "reason": "available",
    "message": "This quote is available."
  },
  "source": {
    "carrier": {
      "id": "assurance-america",
      "name": "Assurance America"
    },
    "product": "Sandbox Auto",
    "carrier_quote_id": null
  },
  "price": {
    "premium": {
      "amount_minor": 186000,
      "currency": "USD"
    },
    "term_months": 6,
    "billing_cycle": "pay_in_full",
    "fees": []
  },
  "coverage": {
    "conditions": [
      "Sandbox premium. Not a carrier price."
    ],
    "subjects": [
      {
        "subject_id": "vehicle-1",
        "kind": "vehicle",
        "label": "2019 Toyota Camry",
        "coverages": [
          {
            "code": "bodily_injury_per_person",
            "limit": {
              "amount_minor": 10000000,
              "currency": "USD"
            },
            "deductible": null,
            "included": true
          },
          {
            "code": "bodily_injury_per_accident",
            "limit": {
              "amount_minor": 30000000,
              "currency": "USD"
            },
            "deductible": null,
            "included": true
          },
          {
            "code": "property_damage",
            "limit": {
              "amount_minor": 5000000,
              "currency": "USD"
            },
            "deductible": null,
            "included": true
          },
          {
            "code": "comprehensive",
            "limit": null,
            "deductible": {
              "amount_minor": 100000,
              "currency": "USD"
            },
            "included": true
          },
          {
            "code": "collision",
            "limit": null,
            "deductible": {
              "amount_minor": 100000,
              "currency": "USD"
            },
            "included": true
          }
        ]
      }
    ]
  },
  "availability": {
    "expires_at": "2026-10-27T15:00:20.000Z"
  },
  "next_actions": [
    {
      "id": "qt_5509b679fd9c50116b9d7791078a12ab",
      "resource": "quote",
      "type": "read_status"
    },
    {
      "open": "new_tab",
      "quote_id": "qt_5509b679fd9c50116b9d7791078a12ab",
      "quote_version": 1,
      "redirect_path": "/v1/handoffs/hoff_353aed36c3e9329734184da6ed7de6a6",
      "type": "continue_on_carrier_site",
      "url": "https://www.truvo.com/s/eadd89e890e1a1871517"
    }
  ],
  "evidence": {
    "assumptions": [],
    "label": "mock"
  }
}
```

## Quote fields

| Field            | What it holds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status`         | `active` or `inactive`. Offer the quote's next actions only while it's `active`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `status_details` | Why the quote has its status: a `reason` and a `message` that you can show the person. The reasons today are `available` (`active`), and `expired` (`inactive`).                                                                                                                                                                                                                                                                                                                                                                                                        |
| `source`         | The `carrier` and the `product` that priced the quote, and `carrier_quote_id`: the carrier's own number for the quote, or `null`. A person can give that number to the carrier. `product` is the name of the carrier's product, or `null` when Truvo has none. A carrier can give a quote for each of several products.                                                                                                                                                                                                                                                 |
| `price`          | `premium`, with an `amount_minor` and a `currency` of `USD`, or `null` when the price is unknown. Also `term_months`, `billing_cycle` (`pay_in_full` or `monthly`), and `fees`. `premium` is the price for the whole term of `term_months` months, as the carrier states it, even when `billing_cycle` is `monthly`. `term_months` is `null` when the term is unknown. On a renters quote, `premium` already includes every fee in `fees`: show it as the total, and don't add the fees to it. On other lines, the quote doesn't say whether `premium` includes `fees`. |
| `coverage`       | `conditions` and the covered `subjects`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `availability`   | `expires_at`, when the quote turns `inactive`. See [When does a quote expire?](/guides/when-does-a-quote-expire).                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `next_actions`   | The actions this quote supports.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `evidence`       | `label`: `mock` for a made-up sandbox price, or `live` for a carrier's price. Also the `assumptions` specific to this quote, such as a value the carrier changed. The quote request's `assumptions` lists the ones every quote shares.                                                                                                                                                                                                                                                                                                                                  |

The [API reference](/api-reference/get-quote) lists every field.

## Show the price

* Show `premium` with its term: the auto quote above is \$1,860 for 6 months.
* To give a monthly figure, divide `premium.amount_minor` by `term_months` and round up to the dollar. Say that it's the premium spread over the term, not a payment plan: \$310 a month for the quote above. When `term_months` is `null`, show only the premium.
* An unknown value stays unknown. Don't fill in a price, a fee, or a limit that the quote doesn't give.
* A quote is a price offer, not coverage. A checkout link isn't proof of payment or coverage either.
* One carrier's quote isn't a market comparison.
* A sandbox quote has `evidence.label` `mock` and the coverage condition `Sandbox premium. Not a carrier price.`

## Send the person to buy

Offer only the actions a quote lists, and never infer one from the line or the carrier. Skip an action of a type that you don't know.

* **`continue_on_carrier_site`** gives a `url` to open in a new tab. The link goes through a Truvo redirect to the carrier's site and works until `availability.expires_at`. After that, it opens a Truvo page that says the quote has expired. In the sandbox, the link opens a Truvo sandbox page, never a carrier site.
* **`read_status`** names a resource to read again. An `inactive` quote lists only `read_status`. Send a new quote request for a new price.

The quote request has next actions of its own:

* **`continue_on_truvo`**: a personal auto request that completes with a quote can list a `url` to Truvo's results page for the request, to open in a new tab, where the customer can see more options and go on to buy. A live request lists it only when the customer agreed to the quote disclosure that includes contact consent. The page shows the customer's details to anyone who opens the link, so give it only to the customer.
* **`request_assistance`**: give the person `advisor_line.phone` from `GET /v1/capabilities`, or send `POST /v1/callback_requests` with the number they asked Truvo to call.

### Mobile apps and web views

In a mobile app, open a `continue_on_carrier_site` link in the system browser or an in-app browser tab: `SFSafariViewController` on iOS, or Custom Tabs on Android. Don't load it in an embedded web view such as `WKWebView` or Android `WebView`.

The link redirects to the carrier's own site, where the customer enters personal details and pays. A browser tab shows the carrier's address, and it gives the customer the browser's saved passwords, autofill, and payment methods. An embedded web view shows no address, doesn't share the browser's saved data, and lets the host app read the page, which is the carrier's checkout.