Skip to main content
The /api/v1/quote-context endpoint is the primary entry point for building home-service quotes. Rather than stitching together five or six separate API calls, you send one GET request and receive finance options, equipment records, incentive eligibility, climate context, labor adders, permit requirements, and utility territory resolution in a single response. Every response also includes a coverage object that summarizes how many quote-safe records were returned and surfaces any data gaps or unresolved requirements so your quoting tool can decide whether it has enough information to present a price.

Request

Authentication

All requests must include your API key in the x-api-key header. This endpoint requires a production access tier.

Query Parameters

Trade & Geography

string
default:"solar"
The home-service vertical to scope the response. Defaults to solar when omitted.Allowed values: solar, hvac, roofing, plumbing, electrical.
string
Two-letter U.S. state code (e.g. GA, CA, TX). Used to filter finance products, incentives, permits, and climate records to the given state. Must be exactly two uppercase letters; otherwise a 400 is returned.
string
County name (e.g. Fulton, Los Angeles). The County suffix is stripped automatically before matching. Used alongside state for climate, permit, and finance-eligibility filtering.
string
Five-digit FIPS code for the county (e.g. 13121). Alternative to county when you have a FIPS code available. Used for climate context lookups.
string
City name. Used to filter permit records when state or county is also provided.
string
Full postal address (street, city, state, ZIP). Maximum 300 characters. When provided, the API resolves utility territory for the address and includes the result in context.utility_territory_resolution. The raw address is never stored — only the resolution result is retained. Triggering utility territory resolution consumes from a separate rate-limit budget; see the note below.

Finance Filters

string
Filter finance products to a specific lender by slug (e.g. goodleap, mosaic). The value is slugified before matching.
string
Filter finance products by payment type (e.g. loan, lease, ppa).
integer
Filter finance products by loan term in months. Must be a valid integer.
integer
default:"25"
Maximum number of finance records to return. Minimum 1, maximum 100.

Equipment Filters

string
Filter the equipment catalog to a specific category.Allowed values: module, inverter, roofing, hvac, product.
string
Filter equipment records by manufacturer name.
string
Filter equipment records by SKU.
string
HVAC equipment ID. When provided, the API fetches equipment-specific incentive context and uses the equipment’s measure_key to scope incentive and finance-eligibility lookups (unless measure is also explicitly supplied).
integer
default:"25"
Maximum number of equipment records to return. Minimum 1, maximum 100.

Context Filters

string
Utility name for incentive lookup (e.g. Georgia Power). Used to scope incentive records to a specific utility provider.
string
Measure key for incentive and finance-eligibility filtering (e.g. air_source_heat_pump, rooftop_solar). When omitted and equipment_id is provided, the measure is inferred from the equipment record. For trade=hvac with no equipment_id, defaults to air_source_heat_pump.
integer
default:"10"
Maximum number of records to return per context category (climate, incentives, labor adders, permits, finance eligibility). Minimum 1, maximum 50. Also caps utility territory matches at 10.

The address field is used only for utility territory resolution during the current request. It is never persisted, logged, or associated with your API key. The inputs.address_redacted field in the response is a boolean that confirms whether an address was supplied — the address itself is not echoed back.
Always inspect the coverage.warnings[] array in every response. Warnings indicate data gaps such as no finance rows matching the requested trade, missing climate context due to absent geography inputs, or a utility territory resolution that did not reach quote-safe status. A 200 status with an empty finance array and warnings present means the response is incomplete for quoting purposes.
For trade=hvac, always include at least state and county (or county_fips) to receive climate context records. Without geography, the climate array will be empty and a warning will be added to coverage.warnings.

Response

object
Top-level data envelope containing the full quote context bundle.

Examples

Response