For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

  • A test token only works against the test environment, and a production token only works against production. Using a token against the wrong environment returns 401 Unauthorized.

  • For more information, see our API Reference page

Environment
Base URL
Token Type

Test / Dev

https://dev-api.engine.tech

Test authorization token

Production

https://api.engine.tech

Production authorization token

Required Headers

Header
Value

Authorization

Bearer <AUTH_TOKEN>

Api-Version

Most recent API Version, e.g. 2026-02-25

Content-Type

application/json


Step 1: Retrieve Supported Issuers

Before submitting an offer search, retrieve the list of supported insurance carriers:

Example response:

Pass the issuer's id as the value of autoInsuranceInformation.currentIssuer in your offer search:


  • Set productTypes to ["AutomobileInsurance"]

  • Submit a POST request to /offerSearches/

Sample Request/Response

Request Fields

Fields marked Recommended for POST /offerSearches/ are technically optional, but providing them meaningfully improves quote accuracy and offer matching.

Omitting an optional field implies "no information" for that attribute.

Required fields
Field
Type
Purpose

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.

Optional tracking fields
Field
Type
Purpose

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.

chart-line-up

Client Tags for Attribution


Step 3: Poll for the Rate Table

Capture the uuid returned in the Step 1 response and issue a GET request to the Offer Searches endpoint:

Polling Process

  1. After the POST in Step 1, poll GET /offerSearches/{uuid} once per second for up to 15 seconds.

  2. Check pendingResponses on each response:

    • Not empty: Engine is still waiting on one or more partners. Keep polling.

    • Empty: Every partner has finished. Stop polling; offers is the final set.

  3. As each partner responds, its offers are added to offers and that partner is removed from pendingResponses.

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

Field
Type
Description
Example

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.

Field
Type
Description
Example

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

Field
Type
Description
Example

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

Successful Request (2xx)

201 Created

200 OK

Completed searches with no offers

An empty offers array and empty pendingResponses array means no matches were found. This is a silent failure. The request succeeded, but there are no offers to display.

Common causes include:

  • Missing FCRA consent.

  • State exclusions.

  • Missing required fields.

  • Automated risk screening.

  • Carrier unavailability.

Unsuccesful Request (4xx)

400 Bad Request

401 Unauthorized

404 Not Found

422 Unprocessable Entity

Retry Request (429 & 5xx)

429 Too Many Requests

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 action: 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?