Skip to navigation

Request a renters quote

View as Markdown

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 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 lists each rule and its error.

Minimal request

Generate one Idempotency-Key for each new quote request, and reuse it when you retry. 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 and replace quote_disclosure_version with the version the applicant agreed to:

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 to get its quotes.

Request fields

LabelMeaning
RequiredThe request fails with 422 without the field.
Required ifThe request fails with 422 without the field when the condition after the label is true.
RecommendedOptional. 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 labelOptional. If Truvo applies a default, the table lists it.

Top-level fields · application · applicant · rented_address · dwelling · current_insurance · protection · facts

Top-level fields

FieldTypeDescription
line
Required
stringThe insurance line.
Value: renters.
quote_disclosure_version
Required
stringThe version of the quote disclosure that the applicant agreed to. GET /v1/capabilities returns it as quote_disclosure.version.
quote_disclosure_accepted
Required
booleanSet 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
objectThe applicant, rented home, and coverage to quote. GET /v1/capabilities returns its JSON Schema as the line’s required_facts_schema.

application

FieldTypeDefaultDescription
applicant
Required
objectThe applicant’s name, contact details, and date of birth.
rented_address
Required
objectThe address of the rented home.
dwellingobjectThe rented home’s dwelling type.
current_insuranceobjectThe applicant’s current policy: whether they have one, and its carrier.
protectionobjectThe coverage limits and the deductible. Truvo applies a default for each one you omit.
billing_cyclestringmonthlyThe billing plan to price.
Values: pay_in_full, monthly.
factsobjectDetails 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_datestring (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

FieldTypeDescription
name
Required
objectThe applicant’s name.
name.first_name
Required
string, 1 to 100 charactersThe first name, such as Alex.
name.last_name
Required
string, 1 to 100 charactersThe 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 charactersThe applicant’s email address.
phone
Required
string, 1 to 32 charactersThe 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

FieldTypeDescription
line1
Required
string, 1 to 200 charactersThe street address, such as 100 Example Way.
city
Required
string, 1 to 100 charactersThe city, such as Austin.
state
Required
stringThe two-letter state code, such as TX.
postal_code
Required
stringThe ZIP code, such as 78701 or 78701-1234.
line2string or null, 1 to 200 charactersA second address line, such as a unit number.

application.dwelling

FieldTypeDefaultDescription
dwelling_type
Recommended
stringapartmentThe 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

FieldTypeDefaultDescription
insured
Recommended
booleanfalseWhether the applicant currently has renters insurance.
carrierstring, 1 to 120 charactersThe current insurer’s name, such as State Farm. Send it only if insured is true; otherwise, the request fails with 422.

application.protection

FieldTypeDefaultDescription
personal_property_minorinteger, greater than 01500000 ($15,000)The personal property limit, in US cents: 1500000 is $15,000.
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_minorinteger, greater than 010000000 ($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_minorinteger, 0 or more25000 ($250)The deductible, in US cents: 25000 is $250.
Allowed values: 10000 ($100), 25000 ($250), 50000 ($500).

application.facts

FieldTypeDefaultDescription
roof_typestringcompositionThe roof material.
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_shapestringgableThe shape of the roof.
Values: gable, hip, flat, gambrel, mansard, shed.
foundationstringslabThe type of foundation.
Values: slab, basement, crawl_space, pier, stilts.
constructionstringframeThe home’s construction type. frame is wood frame, and masonry is brick or stone.
Values: frame, masonry, masonry_veneer, fire_resistive, superior.
heating_typestringcentralThe home’s heating type.
Values: central, baseboard, space_heater, wood_stove, none.
heating_fuelstringelectricThe heating fuel.
Values: electric, gas, oil, propane, wood, solar.
year_builtinteger, 1800 to 21002000The year the home was built. Must not be later than the current year in UTC.
poolbooleanfalseWhether the home has a swimming pool.
square_feetinteger, greater than 01500The home’s floor area in square feet. Must be at least 100.
garagesinteger, 0 or more2The number of garage spaces. Use 0 for none.
residentsinteger, greater than 02The number of people who live in the home.
dog_breedstringnoneThe breed of dog in the household.
Values: none, pit_bull, rottweiler, german_shepherd, doberman, chow, akita, wolf_hybrid, other.
prior_tenure_monthsinteger, 0 or moreThe 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_lossesinteger, 0 or more0The number of renters losses the applicant has had.
is_renters_insurance_requiredbooleanfalseWhether the applicant is required to have renters insurance.
is_lease_started_todaybooleanfalseWhether the lease starts today.
owns_a_petbooleanfalseWhether the applicant owns a pet.
own_or_care_for_animal_that_has_harmed_someonebooleanfalseWhether the applicant owns or cares for an animal that has harmed someone.

Responses

RequestResponse
Has every required field202 with a quote request. Its assumptions lists each default that Truvo applied.
Is missing a required field of application422 needs_information. field_errors lists each missing field with the code required.
Is missing line, application, or a disclosure field422 invalid_input. field_errors identifies the field.
Has an invalid value422 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?.

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:

{
"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:

{
"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"
}