API Reference
Getting Started
Session Information
The Auto Insurance API requires basic
sessionInformation(the end user's IP address and user agent) with every offer search.Carriers use this information as part of underwriting, compliance, and fraud-prevention checks, so it must be collected from the live user session and passed through accurately.
Authentication & Environments
A representative from Engine by Gen will set up an account and provide an authorization token to access the Engine API.
An authorization token is required to authenticate every request. Include it in the request headers; otherwise the API returns an error.
Every request must also include an Api-Version header. The current supported version for the Auto Insurance API is
2026-02-25.Test and production tokens are separate. Requests made with a test token are not reflected in performance reporting or payable events. Switch to the production token once testing is complete.
For more information, see our API Reference page
Production
https://api.engine.tech
Bearer Token
Required Headers
Authorization
Bearer <AUTH_TOKEN>
Api-Version
Most recent API Version, e.g. 2026-02-25
Content-Type
application/json
Step 1: Retrieve Issuers
Before submitting an offer search, retrieve the list of supported insurance carriers:
Sample response:
Pass the issuer's id as the value of autoInsuranceInformation.currentIssuer in your offer search:
Step 2: Submit an Offer Search
Submit a POST request to /offerSearches with productTypes set to ["AutomobileInsurance"] and including relevant consumer data.
Required Fields
productTypes
array of strings
Types of products the user is interested in. Use ["AutomobileInsurance"].
sessionInformation.ipAddress
string
IP address of the end user's live session, used for underwriting and fraud checks.
sessionInformation.userAgent
string
User agent string of the end user's browser or device, captured from the live session.
Recommended Fields
Current Insurer
autoInsuranceInformation.currentIssuer
string
The lead's current or most recent auto insurance carrier. Use "notinsured" if the lead has no current coverage. Must be a valid issuer ID returned by GET /leads/autoInsurance/issuers.
Number of Vehicles
autoInsuranceInformation.numberOfVehicles
integer
Number of vehicles the lead wants to insure.
Date of Birth
personalInformation.dateOfBirth
string
Date of birth of the lead, in YYYY-MM-DD format. Used for age-based eligibility and rating.
Zipcode
personalInformation.zipCode
string
ZIP code of the lead's residence. Used to match the lead with carriers licensed in their state and to rate the offer.
Home Owner?
autoInsuranceInformation.policyHolderInformation.isHomeOwner
boolean
Whether the lead owns their home. Used by carriers as a rating factor and may unlock bundling discounts.
Military?
autoInsuranceInformation.policyHolderInformation.isMilitary
boolean
Whether the lead is active-duty military, an honorable veteran, or a military family member. Used to surface military discounts.
Optional Fields Used for Reporting
clientTags
array of strings
Client-defined tag(s) for tracking and attribution, such as a sub-affiliate or campaign ID. See Client Tags for Attribution below.
Sample Request and Response
Step 3: Poll the Rate Table
Capture the uuid returned in the Step 1 response and issue a GET request to the Offer Searches endpoint:
Polling Process
After the POST in Step 1, poll
GET /offerSearches/{uuid}once per second for up to 15 seconds.Check
pendingResponseson each response:Not empty: Engine is still waiting on one or more partners. Keep polling.
Empty: Every partner has finished. Stop polling;
offersis the final set.
As each partner responds, its offers are added to
offersand that partner is removed frompendingResponses.
Sample Responses
Immediately after submitting the offer search, the response may show no offers yet, with one or more partners listed under pendingResponses:
Once a partner has responded, its offer(s) appear in the offers array and pendingResponses no longer contains that partner:
Response Fields
uuid
string
Rate table UUID. Use this value to poll the rate table endpoint.
"6204740b-25ca-407a-9927-d229c2b3e315"
leadUuid
string
Unique identifier for the lead associated with the offer search.
"ad5cc266-b358-4c57-85f1-968f746ae0e4"
offers
array
Array of completed auto insurance offers returned so far. See Offer Fields below.
—
pendingResponses
array
Array of partners Engine is still waiting to hear back from. Keep polling while this array is non-empty.
—
pendingResponses[].partner
object
Metadata about a partner whose response is still pending. See Partner Fields below.
—
pendingResponses[].offerCatalogProductTypes
array of strings
Product type(s) the pending partner was queried for.
["AutomobileInsurance"]
createdAt
string (ISO 8601)
Timestamp the rate table was created.
"2026-07-30T17:58:31.957182Z"
Fields on pendingResponses[].partner. These describe a pending carrier/partner and supply the branding and disclosure content you may need to display.
uuid
string
Unique identifier for the partner.
"0ac9a64b-177f-4699-910b-7c301772331a"
name
string
Partner name.
"Sample Carrier Co."
brandName
string
Brand name shown to the consumer.
"Sample Carrier"
brandUuid
string
Unique identifier for the brand.
"871f6802-d27d-4092-8f82-d1d205c7a478"
imageUrl
string (url)
Partner/brand logo URL.
"https://images.engine.tech/logos/dev/sample-carrier-autoinsurance.svg"
description
string
Optional partner description. May be empty.
—
disclaimer
string
Partner-level disclaimer / license text. When populated, this must be displayed to the user. May be empty.
—
supportsPreSelect
boolean
Whether the partner supports pre-selection.
false
shouldDisplayPreSelect
boolean
Whether pre-selection should be displayed.
false
supportsPersonalizedOffers
boolean
Whether the partner supports personalized offers.
true
uuid
string
Unique identifier for the individual offer.
"88090bc3-dda6-445b-bb91-5a1e53dc18a5"
version
integer
Version number of the offer.
1
rank
integer
Engine's recommended display rank. Display offers in ascending order by rank (rank 1 first).
1
recommendationScore
number
Present in responses but not used for auto insurance ranking — use rank instead.
11
headline
string
Primary marketing headline to display on the offer card.
"Compare Auto Insurance Rates From Top-Rated Carriers"
descriptionPoints
array of strings
Marketing bullet points describing the offer. Display as checkmark bullets on the offer card.
["Free rate quote online — no sales calls", "..."]
productType
string
Product type of the offer.
"AutomobileInsurance"
productDisplayName
string
Display name for the product/offer type (e.g., internal labeling or subheadline).
"Compare-Discounts"
status
string
Status of the offer. Only display offers with status "active".
"active"
isMonetized
boolean
Whether the offer is monetized. Use with url / unmonetizedUrl.
true
url
string (url)
Click-through URL for the offer's monetized destination. Use as the "View Rate" CTA when isMonetized is true.
"https://offers.engine.tech/ref/..."
unmonetizedUrl
string (url)
Click-through URL for the offer's unmonetized destination. Use when the offer should not be tracked for monetization.
"https://offers.engine.tech/uref/..."
impressionTrackingPixelUrls
array of strings (url)
One or more tracking pixel URLs that must be fired when the offer is rendered/viewed. See Impression Tracking in Building Your UI.
["https://track.engine.tech/p/impr.gif?..."]
financialInstitutionUuid
string
Unique identifier for the carrier/financial institution offering the policy.
"8f04c171-85db-4753-bdc7-31bb11c59f4c"
financialInstitutionDisplayName
string
Display name of the carrier/financial institution.
"Sample Auto Insurance Provider"
financialInstitutionImageUrl
string (url)
URL of the carrier/financial institution's logo.
"https://images.engine.tech/logos/dev/sample-carrier-logo.png"
Response Codes & Error Handling
An empty offers array and empty pendingResponses array means no matches were found. This indicates that the request succeeded, but there are no offers to display. Common causes could include:
Missing FCRA consent.
State exclusions.
Missing required fields.
Automated risk screening.
Carrier unavailability.
Additional responses are defined below.
Successful Request (2xx)
Unsuccesful Request (4xx)
Retry Request (429 & 5xx)
500 / 503 Server Error
Endpoint: Any
Meaning: Engine encountered a temporary internal error or is briefly unavailable. These responses are transient and are not caused by malformed input.
Next Steps: Retry with exponential backoff within the polling window. Contact your Engine representative if the error persists.
Retry with exponential backoff, such as 1s, 2s, then 4s.
Do not treat a single 5xx response as a failed search. Keep polling within your timeout window.
If 5xx responses continue past the timeout, stop polling and show a graceful error.
Last updated
Was this helpful?

