> 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 an auto quote

To get auto quotes, send a `POST /v1/quote-requests` request with `line` set to `personal_auto`. Prefill what you already know about the applicant, such as their name or a VIN, 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": "personal_auto",
    "quote_disclosure_version": "2026-10-06.1",
    "quote_disclosure_accepted": true,
    "application": {
      "applicant": {
        "name": {
          "first_name": "Test",
          "last_name": "Applicant One"
        },
        "email": "alex@example.com",
        "phone": "512-555-0123"
      },
      "garaging_address": {
        "line1": "100 Example Way",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78701"
      },
      "drivers": [
        {
          "name": {
            "first_name": "Test",
            "last_name": "Applicant One"
          },
          "date_of_birth": "1990-04-12",
          "gender": "female"
        }
      ],
      "vehicles": [
        {
          "year": 2019,
          "make": "Toyota",
          "model": "Camry",
          "ownership": "owned",
          "use": "pleasure",
          "annual_mileage": 8000,
          "comprehensive_deductible_minor": 100000,
          "collision_deductible_minor": 100000
        }
      ],
      "protection": {
        "bodily_injury_per_person_minor": 10000000,
        "bodily_injury_per_accident_minor": 30000000,
        "property_damage_minor": 5000000
      }
    }
  }'
```

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) · [`garaging_address`](#applicationgaraging_address) · [`drivers[]`](#applicationdrivers) · [`vehicles[]`](#applicationvehicles) · [`protection`](#applicationprotection) · [`current_insurance`](#applicationcurrent_insurance)

### Top-level fields

| Field                                | Type    | Description                                                                                                                                                                                                         |
| ------------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `line` Required                      | string  | The insurance line. Value: `personal_auto`.                                                                                                                                                                         |
| `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, a credit check, and contact by phone, text, and email. If the value isn't `true`, the request fails with `422`. |
| `application` Required               | object  | The applicant, drivers, vehicles, and coverage to quote. `GET /v1/capabilities` returns its JSON Schema as the line's `required_facts_schema`.                                                                      |

### `application`

| Field                             | Type                     | Description                                                                                                                                                                                                                                                                                                                                          |
| --------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `applicant` Required              | object                   | The applicant's name and contact details. Truvo uses the first driver's `date_of_birth` as the applicant's date of birth.                                                                                                                                                                                                                            |
| `garaging_address` Required       | object                   | The address that carriers receive as both the mailing address and the garaging address. Use a street address, not a PO box.                                                                                                                                                                                                                          |
| `drivers` Required                | array of 1 to 10 objects | The drivers to include in the quote. The first driver is the named insured.                                                                                                                                                                                                                                                                          |
| `vehicles` Required               | array of 1 to 10 objects | The vehicles to insure. Each vehicle requires a `vin`, or a `year`, `make`, and `model`.                                                                                                                                                                                                                                                             |
| `protection` Required             | object                   | The policy's liability limits and coverage options.                                                                                                                                                                                                                                                                                                  |
| `residence_ownership` Recommended | string                   | Whether the household owns or rents its home. Use `not_owned` if you know only that the applicant doesn't own their home. If omitted or `not_owned`, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `owned`, `rented`, `not_owned`.                                                                           |
| `credit_rating` Recommended       | string                   | The applicant's self-reported credit score range: `excellent` is 720 or higher, `good` is 680 to 719, `average` is 580 to 679, and `poor` is below 580. Sending it doesn't give consent to a credit check. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `excellent`, `good`, `average`, `poor`. |
| `current_insurance`               | object                   | The household's current auto insurance.                                                                                                                                                                                                                                                                                                              |

### `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`.                                                                                                                                                                                                                                                                               |
| `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.garaging_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.drivers[]`

| Field                                                              | Type                        | Description                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` Required                                                    | object                      | The driver'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 driver's date of birth, in `YYYY-MM-DD` format.                                                                                                                                                                                                                                                 |
| `gender` Required                                                  | string                      | The driver's gender. Values: `female`, `male`, `non-binary`.                                                                                                                                                                                                                                        |
| `relationship` Required if the driver isn't the first in `drivers` | string                      | The driver's relationship to the first driver. Omit it for the first driver, or the request fails with `422`. Values: `spouse`, `child`, `parent`, `sibling`, `domestic_partner`, `other`.                                                                                                          |
| `marital_status` Recommended                                       | string                      | The driver's marital status. If `relationship` is `spouse`, defaults to `married`; sending `single` returns `422`. If omitted for any other driver, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `single`, `married`.                                      |
| `education` Recommended                                            | string                      | The highest level of education the driver completed. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `no_high_school_diploma`, `high_school_diploma`, `some_college`, `associate_degree`, `bachelor_degree`, `master_degree`, `doctorate_degree`. |
| `has_incidents_last_5_years` Recommended                           | boolean                     | Whether the driver has had any tickets, at-fault accidents, or claims in the last 5 years. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default.                                                                                                                |
| `age_first_licensed`                                               | integer, 1 to 100           | The driver's age in years when they first received a driver's license. Must not exceed the driver's current age.                                                                                                                                                                                    |

### `application.vehicles[]`

| Field                                                                                 | Type                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ownership` Required                                                                  | string                      | Whether the applicant owns, finances, or leases the vehicle. Values: `owned`, `financed`, `leased`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `use` Required                                                                        | string                      | The vehicle's primary use. `pleasure` is personal use, and `work_school` is commuting to work or school. Values: `pleasure`, `work_school`, `business`, `artisan`, `farm`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `annual_mileage` Required                                                             | integer, up to 100000       | The number of miles the vehicle is driven in a year. Must be greater than `0` and at most `100000`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `year` Required if `vin` is omitted                                                   | integer, 1900 to 2100       | The vehicle's model year.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `make` Required if `vin` is omitted                                                   | string, 1 to 100 characters | The vehicle's make, such as `Toyota`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `model` Required if `vin` is omitted                                                  | string, 1 to 100 characters | The vehicle's model, such as `Camry`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `comprehensive_deductible_minor` Required if `protection.coverage_package` is omitted | integer                     | The comprehensive deductible for this vehicle, in US cents: `50000` is \$500. The menu includes values from all states. The applicant's state may accept only some of them. Allowed values: `0` (\$0), `5000` (\$50), `10000` (\$100), `15000` (\$150), `20000` (\$200), `25000` (\$250), `30000` (\$300), `35000` (\$350), `40000` (\$400), `45000` (\$450), `47500` (\$475), `50000` (\$500), `55000` (\$550), `60000` (\$600), `70000` (\$700), `75000` (\$750), `80000` (\$800), `97500` (\$975), `100000` (\$1,000), `150000` (\$1,500), `200000` (\$2,000), `250000` (\$2,500), `300000` (\$3,000), `500000` (\$5,000).                               |
| `collision_deductible_minor` Required if `protection.coverage_package` is omitted     | integer                     | The collision deductible for this vehicle, in US cents: `50000` is \$500. The menu includes values from all states. The applicant's state may accept only some of them. Allowed values: `0` (\$0), `5000` (\$50), `10000` (\$100), `15000` (\$150), `20000` (\$200), `25000` (\$250), `30000` (\$300), `35000` (\$350), `40000` (\$400), `45000` (\$450), `47500` (\$475), `50000` (\$500), `55000` (\$550), `60000` (\$600), `70000` (\$700), `75000` (\$750), `80000` (\$800), `90000` (\$900), `95000` (\$950), `97500` (\$975), `100000` (\$1,000), `150000` (\$1,500), `200000` (\$2,000), `250000` (\$2,500), `300000` (\$3,000), `500000` (\$5,000). |
| `vin` Recommended                                                                     | string                      | The vehicle's full 17-character VIN. If you send it, `year`, `make`, and `model` are optional. If omitted, carriers rate the vehicle by its year, make, and model, and a carrier that requires the full VIN returns no quote.                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `trim`                                                                                | string, 1 to 100 characters | The vehicle's trim, such as `Premium`. If both `vin` and `trim` are omitted, Truvo uses the first trim listed for the year, make, and model, and reports it in `assumptions`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `driver_index`                                                                        | integer, 0 or more          | The assigned driver's zero-based index in `drivers`, such as `0` for the first driver. Must be less than the number of drivers. If omitted, Truvo assigns the vehicle to the first driver and reports it in `assumptions`.                                                                                                                                                                                                                                                                                                                                                                                                                                  |

### `application.protection`

| Field                                                                                                        | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodily_injury_per_person_minor` Required if `coverage_package` is omitted or the per-accident limit is sent | integer | The bodily injury limit per person, in US cents: `2500000` is \$25,000. Send both limits as one of the allowed pairs. The menu includes pairs from all states. The applicant's state may accept only some of them. Allowed pairs, per person / per accident: `1000000` / `2000000` (\$10,000 / \$20,000), `1500000` / `3000000` (\$15,000 / \$30,000), `2000000` / `4000000` (\$20,000 / \$40,000), `2500000` / `5000000` (\$25,000 / \$50,000), `2500000` / `6500000` (\$25,000 / \$65,000), `2500000` / `10000000` (\$25,000 / \$100,000), `3000000` / `6000000` (\$30,000 / \$60,000), `3000000` / `6500000` (\$30,000 / \$65,000), `3500000` / `7000000` (\$35,000 / \$70,000), `5000000` / `5000000` (\$50,000 / \$50,000), `5000000` / `10000000` (\$50,000 / \$100,000), `5000000` / `20000000` (\$50,000 / \$200,000), `6000000` / `12000000` (\$60,000 / \$120,000), `7500000` / `15000000` (\$75,000 / \$150,000), `10000000` / `10000000` (\$100,000 / \$100,000), `10000000` / `20000000` (\$100,000 / \$200,000), `10000000` / `30000000` (\$100,000 / \$300,000), `15000000` / `30000000` (\$150,000 / \$300,000), `25000000` / `30000000` (\$250,000 / \$300,000), `25000000` / `50000000` (\$250,000 / \$500,000), `30000000` / `30000000` (\$300,000 / \$300,000), `30000000` / `50000000` (\$300,000 / \$500,000), `30000000` / `60000000` (\$300,000 / \$600,000), `50000000` / `50000000` (\$500,000 / \$500,000), `50000000` / `100000000` (\$500,000 / \$1,000,000), `75000000` / `75000000` (\$750,000 / \$750,000), `100000000` / `100000000` (\$1,000,000 / \$1,000,000), `500000000` / `500000000` (\$5,000,000 / \$5,000,000).   |
| `bodily_injury_per_accident_minor` Required if `coverage_package` is omitted or the per-person limit is sent | integer | The bodily injury limit per accident, in US cents: `5000000` is \$50,000. Send both limits as one of the allowed pairs. The menu includes pairs from all states. The applicant's state may accept only some of them. Allowed pairs, per person / per accident: `1000000` / `2000000` (\$10,000 / \$20,000), `1500000` / `3000000` (\$15,000 / \$30,000), `2000000` / `4000000` (\$20,000 / \$40,000), `2500000` / `5000000` (\$25,000 / \$50,000), `2500000` / `6500000` (\$25,000 / \$65,000), `2500000` / `10000000` (\$25,000 / \$100,000), `3000000` / `6000000` (\$30,000 / \$60,000), `3000000` / `6500000` (\$30,000 / \$65,000), `3500000` / `7000000` (\$35,000 / \$70,000), `5000000` / `5000000` (\$50,000 / \$50,000), `5000000` / `10000000` (\$50,000 / \$100,000), `5000000` / `20000000` (\$50,000 / \$200,000), `6000000` / `12000000` (\$60,000 / \$120,000), `7500000` / `15000000` (\$75,000 / \$150,000), `10000000` / `10000000` (\$100,000 / \$100,000), `10000000` / `20000000` (\$100,000 / \$200,000), `10000000` / `30000000` (\$100,000 / \$300,000), `15000000` / `30000000` (\$150,000 / \$300,000), `25000000` / `30000000` (\$250,000 / \$300,000), `25000000` / `50000000` (\$250,000 / \$500,000), `30000000` / `30000000` (\$300,000 / \$300,000), `30000000` / `50000000` (\$300,000 / \$500,000), `30000000` / `60000000` (\$300,000 / \$600,000), `50000000` / `50000000` (\$500,000 / \$500,000), `50000000` / `100000000` (\$500,000 / \$1,000,000), `75000000` / `75000000` (\$750,000 / \$750,000), `100000000` / `100000000` (\$1,000,000 / \$1,000,000), `500000000` / `500000000` (\$5,000,000 / \$5,000,000). |
| `property_damage_minor` Required if `coverage_package` is omitted                                            | integer | The property damage limit, in US cents: `2500000` is \$25,000. The menu includes values from all states. The applicant's state may accept only some of them. Allowed values: `500000` (\$5,000), `1000000` (\$10,000), `1500000` (\$15,000), `2000000` (\$20,000), `2500000` (\$25,000), `3000000` (\$30,000), `3500000` (\$35,000), `4000000` (\$40,000), `5000000` (\$50,000), `6500000` (\$65,000), `7500000` (\$75,000), `10000000` (\$100,000), `20000000` (\$200,000), `25000000` (\$250,000), `30000000` (\$300,000), `50000000` (\$500,000), `75000000` (\$750,000), `100000000` (\$1,000,000).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `tort_type` Required if `garaging_address.state` is `PA`                                                     | string  | Whether the applicant keeps the full or a limited right to sue for injury. Values: `full`, `limited`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `stacked_uninsured_motorist` Required if `garaging_address.state` is `FL`, `NM`, `NV`, or `PA`               | boolean | Whether uninsured motorist limits stack across the applicant's vehicles.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `stacked_underinsured_motorist` Required if `garaging_address.state` is `PA`                                 | boolean | Whether underinsured motorist limits stack.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `coverage_package`                                                                                           | string  | The coverage package used for omitted liability limits and vehicle deductibles. `full` adds comprehensive and collision coverage, each with a \$1,000 deductible. `minimum`, `liability`, and `standard` are liability only. A limit or deductible in the request overrides the package. `assumptions` lists each field that the package set. If a vehicle sends only one of its two deductibles, Truvo sets the other to the same amount, or to the next lower amount that deductible allows, and `assumptions` lists it. Values: `minimum`, `liability`, `standard`, `full`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### `application.current_insurance`

| Field                                    | Type               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `insured` Recommended                    | boolean            | Whether the applicant has auto insurance now. If `false`, Truvo doesn't send carriers the other `current_insurance` fields. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `carrier` Recommended                    | string             | The current auto insurer. Use `other` if it isn't listed. Ignored if `insured` is `false`. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `state_farm`, `progressive`, `geico`, `allstate`, `usaa`, `liberty_mutual`, `farmers`, `nationwide`, `travelers`, `amfam`, `aaa`, `hartford`, `erie`, `safeco`, `other`.                                                                                                                                                                                                                                                                                                                                                                          |
| `continuous_coverage_months` Recommended | integer, 0 or more | The number of months of continuous auto coverage. Use `0` for none. Ignored if `insured` is `false`. If omitted, Truvo doesn't send carriers a value, and a carrier may apply its own default.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `liability_limit` Recommended            | string             | The current policy's liability limits, in thousands of dollars. `100/300/100` is \$100,000 bodily injury per person, \$300,000 bodily injury per accident, and \$100,000 property damage. `300_csl` is a \$300,000 combined single limit. Use `not_sure` if the applicant doesn't know them. Ignored if `insured` is `false`. If omitted or `not_sure`, Truvo doesn't send carriers a value, and a carrier may apply its own default. Values: `15/30/5`, `15/30/25`, `20/40/15`, `25/50/10`, `25/50/15`, `25/50/20`, `25/50/25`, `25/50/50`, `30/60/15`, `30/60/25`, `30/65/25`, `50/100/25`, `50/100/50`, `50/100/100`, `100/300/50`, `100/300/100`, `250/500/50`, `250/500/100`, `250/500/250`, `100_csl`, `300_csl`, `500_csl`, `not_sure`. |

## 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).

### Omitted recommended fields

If you omit a recommended field with no default, the quote request lists it in `assumptions` with `value` set to `null`, unless Truvo ignores the field. Truvo ignores `carrier`, `continuous_coverage_months`, and `liability_limit` if `current_insurance.insured` is `false`. The following entry is for a driver's omitted `education`:

```json
{
  "path": "application.drivers.0.education",
  "value": null,
  "source": "auto_rating_fact",
  "label": "Truvo does not send a value for this fact. A carrier may use its own default."
}
```

To have carriers rate on the applicant's actual value, create a new quote request that includes the field. Sandbox premiums are preset, so they don't change when you send or omit these fields.

### Default values

`assumptions` also reports each value that Truvo set for an optional field you omitted, such as the driver assigned to a vehicle:

```json
{
  "path": "application.vehicles.0.driver_index",
  "value": 0,
  "source": "single_driver",
  "label": "Truvo assigns this vehicle to the only driver on the request."
}
```

If a `coverage_package` sets a liability limit, the entry's `value` is `null`, because the request doesn't state the limit. Live quotes report carrier-provided limits and deductibles in `coverage.subjects`. If the carrier didn't return a limit or deductible, the corresponding field is `null`. A sandbox quote lists a liability limit only if the request sent it.

### Missing required fields

If `drivers` or `vehicles` is missing or empty, `field_errors` lists the array and the required fields of its first item. 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.email",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.applicant.phone",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.garaging_address.line1",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.garaging_address.city",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.garaging_address.state",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.garaging_address.postal_code",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.drivers",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.drivers.0.name.first_name",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.drivers.0.name.last_name",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.drivers.0.date_of_birth",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.drivers.0.gender",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.protection.bodily_injury_per_person_minor",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.protection.bodily_injury_per_accident_minor",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.protection.property_damage_minor",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.ownership",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.use",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.year",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.make",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.model",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.annual_mileage",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.comprehensive_deductible_minor",
        "message": "This fact is required.",
        "code": "required"
      },
      {
        "path": "application.vehicles.0.collision_deductible_minor",
        "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_0c20599c4a3269e0"
}
```