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

# Request a renters quote

To get renters quotes, send a `POST /v1/quote-requests` request with `line` set to `renters`. Prefill what you already know about the applicant, such as their name or the address they rent, and ask them for the rest. If you don't know an optional value, omit the field instead of guessing.

## Get the applicant's agreement

Before you request quotes, the applicant must agree to Truvo's quote disclosure. [`GET /v1/capabilities`](/api-reference/get-capabilities) returns it as `quote_disclosure`. Show the applicant its `text` as written, and ask whether they agree. If they agree, send its `version` as `quote_disclosure_version`, with `quote_disclosure_accepted` set to `true`. If the version isn't the current one, the request fails with `422`. [The quote disclosure](/guides/truvo#the-quote-disclosure) lists each rule and its error.

## Minimal request

Generate one `Idempotency-Key` for each new quote request, and [reuse it when you retry](/guides/request-keys). To retry, rerun the `curl` command without regenerating `KEY`. Over MCP, pass the key as `request_key`.

Set `TRUVO_API_KEY` to your [sandbox key](/guides/authentication) and replace `quote_disclosure_version` with the version the applicant agreed to:

```bash
KEY=$(uuidgen)
curl -X POST https://api.truvo.com/v1/quote-requests \
  -H "Authorization: Bearer $TRUVO_API_KEY" \
  -H "Truvo-Version: 2026-09-26" \
  -H "Idempotency-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "line": "renters",
    "quote_disclosure_version": "2026-10-06.1",
    "quote_disclosure_accepted": true,
    "application": {
      "applicant": {
        "name": {
          "first_name": "Test",
          "last_name": "Applicant One"
        },
        "date_of_birth": "1990-04-12",
        "email": "alex@example.com",
        "phone": "512-555-0123"
      },
      "rented_address": {
        "line1": "100 Example Way",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78701"
      }
    }
  }'
```

Truvo returns `202` with a quote request. [Poll the quote request](/guides/polling) to get its quotes.

## Request fields

| Label       | Meaning                                                                                                                               |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Required    | The request fails with `422` without the field.                                                                                       |
| Required if | The request fails with `422` without the field when the condition after the label is true.                                            |
| Recommended | Optional. Carriers use the value to price the quote, so send it when you have it. If you omit it, they receive a default or no value. |
| No label    | Optional. If Truvo applies a default, the table lists it.                                                                             |

[Top-level fields](#top-level-fields) · [`application`](#application) · [`applicant`](#applicationapplicant) · [`rented_address`](#applicationrented_address) · [`dwelling`](#applicationdwelling) · [`current_insurance`](#applicationcurrent_insurance) · [`protection`](#applicationprotection) · [`facts`](#applicationfacts)

### Top-level fields

| Field                                | Type    | Description                                                                                                                                                                                        |
| ------------------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `line` Required                      | string  | The insurance line. Value: `renters`.                                                                                                                                                              |
| `quote_disclosure_version` Required  | string  | The version of the quote disclosure that the applicant agreed to. `GET /v1/capabilities` returns it as `quote_disclosure.version`.                                                                 |
| `quote_disclosure_accepted` Required | boolean | Set to `true` after the applicant agrees to the quote disclosure. Their agreement covers the quote and contact by phone, text, and email. If the value isn't `true`, the request fails with `422`. |
| `application` Required               | object  | The applicant, rented home, and coverage to quote. `GET /v1/capabilities` returns its JSON Schema as the line's `required_facts_schema`.                                                           |

### `application`

| Field                     | Type          | Default   | Description                                                                                                                                           |
| ------------------------- | ------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `applicant` Required      | object        |           | The applicant's name, contact details, and date of birth.                                                                                             |
| `rented_address` Required | object        |           | The address of the rented home.                                                                                                                       |
| `dwelling`                | object        |           | The rented home's dwelling type.                                                                                                                      |
| `current_insurance`       | object        |           | The applicant's current policy: whether they have one, and its carrier.                                                                               |
| `protection`              | object        |           | The coverage limits and the deductible. Truvo applies a default for each one you omit.                                                                |
| `billing_cycle`           | string        | `monthly` | The billing plan to price. Values: `pay_in_full`, `monthly`.                                                                                          |
| `facts`                   | object        |           | Details about the rented home and the household. Truvo applies defaults to the fields you omit and reports them in the quote request's `assumptions`. |
| `coverage_start_date`     | string (date) |           | The date coverage starts, in `YYYY-MM-DD` format. If omitted, each quote uses a default start date and reports it in `evidence.assumptions`.          |

### `application.applicant`

| Field                      | Type                                 | Description                                                                                                                                                                                                                                                                                                   |
| -------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` Required            | object                               | The applicant's name.                                                                                                                                                                                                                                                                                         |
| `name.first_name` Required | string, 1 to 100 characters          | The first name, such as `Alex`.                                                                                                                                                                                                                                                                               |
| `name.last_name` Required  | string, 1 to 100 characters          | The last name, such as `Smith`.                                                                                                                                                                                                                                                                               |
| `date_of_birth` Required   | string (date)                        | The applicant's date of birth, in `YYYY-MM-DD` format.                                                                                                                                                                                                                                                        |
| `email` Required           | string (email), up to 254 characters | The applicant's email address.                                                                                                                                                                                                                                                                                |
| `phone` Required           | string, 1 to 32 characters           | The applicant's US phone number, including its area code, such as `512-555-0123`. The sandbox accepts `512-555-0123`; for live quotes, use the applicant's number. A live request with a number that nobody could answer, such as a fictional number in the `555-0100` to `555-0199` range, fails with `422`. |

### `application.rented_address`

| Field                  | Type                                | Description                                    |
| ---------------------- | ----------------------------------- | ---------------------------------------------- |
| `line1` Required       | string, 1 to 200 characters         | The street address, such as `100 Example Way`. |
| `city` Required        | string, 1 to 100 characters         | The city, such as `Austin`.                    |
| `state` Required       | string                              | The two-letter state code, such as `TX`.       |
| `postal_code` Required | string                              | The ZIP code, such as `78701` or `78701-1234`. |
| `line2`                | string or null, 1 to 200 characters | A second address line, such as a unit number.  |

### `application.dwelling`

| Field                       | Type   | Default     | Description                                                                                                                                                                                              |
| --------------------------- | ------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dwelling_type` Recommended | string | `apartment` | The type of rented home. A request with `mobile_home` returns `422`, because no renters carrier on Truvo quotes mobile homes. Values: `apartment`, `single_family`, `condo`, `townhouse`, `mobile_home`. |

### `application.current_insurance`

| Field                 | Type                        | Default | Description                                                                                                                     |
| --------------------- | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `insured` Recommended | boolean                     | `false` | Whether the applicant currently has renters insurance.                                                                          |
| `carrier`             | string, 1 to 120 characters |         | The current insurer's name, such as `State Farm`. Send it only if `insured` is `true`; otherwise, the request fails with `422`. |

### `application.protection`

| Field                     | Type                    | Default                | Description                                                                                                                                                                                                                                                    |
| ------------------------- | ----------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `personal_property_minor` | integer, greater than 0 | `1500000` (\$15,000)   | The personal property limit, in US cents: `1500000` is \$15,000. Allowed values: `500000` (\$5,000), `1000000` (\$10,000), `1500000` (\$15,000), `2000000` (\$20,000), `2500000` (\$25,000), `3000000` (\$30,000), `4000000` (\$40,000), `5000000` (\$50,000). |
| `liability_minor`         | integer, greater than 0 | `10000000` (\$100,000) | The liability limit, in US cents: `10000000` is \$100,000. Allowed values: `2500000` (\$25,000), `5000000` (\$50,000), `10000000` (\$100,000), `30000000` (\$300,000).                                                                                         |
| `deductible_minor`        | integer, 0 or more      | `25000` (\$250)        | The deductible, in US cents: `25000` is \$250. Allowed values: `10000` (\$100), `25000` (\$250), `50000` (\$500).                                                                                                                                              |

### `application.facts`

| Field                                            | Type                    | Default       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------ | ----------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `roof_type`                                      | string                  | `composition` | The roof material. Values: `aluminum`, `asbestos`, `asphalt`, `cedar_shakes`, `cedar_shingles`, `clay_tile`, `composition`, `concrete`, `concrete_tile`, `copper`, `fiberglass`, `gravel`, `metal`, `other`, `plastic`, `plywood`, `recycled`, `reinforced_concrete`, `rock`, `roll_roofing`, `rubber`, `single_ply_membrane`, `slate`, `spanish_tile`, `steel_porcelain_shingles`, `tar_and_gravel`, `tin`, `wood_shake`, `wood_shingle`. |
| `roof_shape`                                     | string                  | `gable`       | The shape of the roof. Values: `gable`, `hip`, `flat`, `gambrel`, `mansard`, `shed`.                                                                                                                                                                                                                                                                                                                                                       |
| `foundation`                                     | string                  | `slab`        | The type of foundation. Values: `slab`, `basement`, `crawl_space`, `pier`, `stilts`.                                                                                                                                                                                                                                                                                                                                                       |
| `construction`                                   | string                  | `frame`       | The home's construction type. `frame` is wood frame, and `masonry` is brick or stone. Values: `frame`, `masonry`, `masonry_veneer`, `fire_resistive`, `superior`.                                                                                                                                                                                                                                                                          |
| `heating_type`                                   | string                  | `central`     | The home's heating type. Values: `central`, `baseboard`, `space_heater`, `wood_stove`, `none`.                                                                                                                                                                                                                                                                                                                                             |
| `heating_fuel`                                   | string                  | `electric`    | The heating fuel. Values: `electric`, `gas`, `oil`, `propane`, `wood`, `solar`.                                                                                                                                                                                                                                                                                                                                                            |
| `year_built`                                     | integer, 1800 to 2100   | `2000`        | The year the home was built. Must not be later than the current year in UTC.                                                                                                                                                                                                                                                                                                                                                               |
| `pool`                                           | boolean                 | `false`       | Whether the home has a swimming pool.                                                                                                                                                                                                                                                                                                                                                                                                      |
| `square_feet`                                    | integer, greater than 0 | `1500`        | The home's floor area in square feet. Must be at least `100`.                                                                                                                                                                                                                                                                                                                                                                              |
| `garages`                                        | integer, 0 or more      | `2`           | The number of garage spaces. Use `0` for none.                                                                                                                                                                                                                                                                                                                                                                                             |
| `residents`                                      | integer, greater than 0 | `2`           | The number of people who live in the home.                                                                                                                                                                                                                                                                                                                                                                                                 |
| `dog_breed`                                      | string                  | `none`        | The breed of dog in the household. Values: `none`, `pit_bull`, `rottweiler`, `german_shepherd`, `doberman`, `chow`, `akita`, `wolf_hybrid`, `other`.                                                                                                                                                                                                                                                                                       |
| `prior_tenure_months`                            | integer, 0 or more      |               | The number of months the applicant has had their current policy. If `current_insurance.insured` is `true`, it must be at least `1` and defaults to `36`. Otherwise, Truvo doesn't send it to carriers, and no default applies.                                                                                                                                                                                                             |
| `number_of_past_losses`                          | integer, 0 or more      | `0`           | The number of renters losses the applicant has had.                                                                                                                                                                                                                                                                                                                                                                                        |
| `is_renters_insurance_required`                  | boolean                 | `false`       | Whether the applicant is required to have renters insurance.                                                                                                                                                                                                                                                                                                                                                                               |
| `is_lease_started_today`                         | boolean                 | `false`       | Whether the lease starts today.                                                                                                                                                                                                                                                                                                                                                                                                            |
| `owns_a_pet`                                     | boolean                 | `false`       | Whether the applicant owns a pet.                                                                                                                                                                                                                                                                                                                                                                                                          |
| `own_or_care_for_animal_that_has_harmed_someone` | boolean                 | `false`       | Whether the applicant owns or cares for an animal that has harmed someone.                                                                                                                                                                                                                                                                                                                                                                 |

## Responses

| Request                                                 | Response                                                                                                                                  |
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Has every required field                                | `202` with a quote request. Its `assumptions` lists each default that Truvo applied.                                                      |
| Is missing a required field of `application`            | `422` `needs_information`. `field_errors` lists each missing field with the code `required`.                                              |
| Is missing `line`, `application`, or a disclosure field | `422` `invalid_input`. `field_errors` identifies the field.                                                                               |
| Has an invalid value                                    | `422` `invalid_input`. `field_errors` lists each invalid field, with `allowed_values` when the API can list the values the field accepts. |

A request that fails with `422` isn't stored, so you can send the corrected request with the same `Idempotency-Key` or a new one.

After Truvo accepts a request, a carrier can still report `missing_information` in `market_outcomes` if it needs more information than the request included. See [Why did a request finish with no quotes?](/guides/why-did-a-request-finish-with-no-quotes).

### Default values

If you omit a field that has a default, such as `dwelling.dwelling_type` or `current_insurance.insured`, Truvo sends carriers the default and reports it in the quote request's `assumptions`:

```json
{
  "path": "application.dwelling.dwelling_type",
  "value": "apartment",
  "source": "renters_default",
  "label": "Truvo default. Send this fact to change it."
}
```

To send carriers the applicant's actual value, create a new quote request that includes the field.

`coverage_start_date` is the exception: each quote reports its start date in its own `evidence.assumptions`. To show the applicant the assumptions, combine the quote request's `assumptions` with each quote's `evidence.assumptions`.

### Missing required fields

The following response is for a request whose `application` is empty:

```json
{
  "error": {
    "code": "needs_information",
    "message": "The quote request needs more information.",
    "field_errors": [
      {
        "path": "application.applicant.name.first_name",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.applicant.name.last_name",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.applicant.date_of_birth",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.applicant.email",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.applicant.phone",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.rented_address.line1",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.rented_address.city",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.rented_address.state",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.rented_address.postal_code",
        "message": "This fact is required.",
        "code": "required"
      }
    ],
    "retry_action": {
      "type": "supply_facts",
      "summary": "Supply the missing facts and send the request again."
    },
    "doc_url": "https://docs.truvo.com/v1/errors/needs_information"
  },
  "request_id": "req_6b944c3af5c8d813"
}
```