programs[], prices each one, and returns the results.programs[] produces a bindable application (quoteRequestId). Poll GET /v1/quote/{quoteId} until each application's status transitions from pending to success (priced) or error (carrier declined).system_payload is the atomic rating block. Its shape varies by program type:class_code, business_name, mailing_zip, mailing_state, employee_count, annual_revenue, effective_datecountry_of_residence, destination_country, start_date, end_date, insureds[], coveragesystem_payload as-is and hashes it. Any change to a rating factor (e.g. different class code, different plan max) requires a re-quote (POST /v1/quote/{quoteId}), not an edit.groupId. All subsequent re-quotes for the same session reuse it (pass originalQuoteId). Use GET /v1/quote?groupId=… to retrieve all quotes in a session.curl --location '/v1/quote' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"program_type": "BOP",
"class_code": "restaurant_fullservice",
"business_name": "Acme Cafe LLC",
"mailing_zip": "43215",
"mailing_state": "OH",
"employee_count": 5,
"annual_revenue": 250000,
"effective_date": "2026-05-15",
"coverage": {
"glLimit": 1000000,
"bppLimit": 50000
}
}'{
"success": true,
"data": {
"quoteId": "075e8d7c-b648-4e0a-9f22-e3ac727c672d",
"groupId": "9a1b2c3d-4e5f-6789-abcd-ef0123456789",
"applications": [
{
"quoteRequestId": "0e7c2e9a-fa75-4f6c-9978-a112ad078d7e",
"programType": "TI",
"status": "success",
"pricingData": {
"currency": "USD",
"pricing": [
{
"programId": "c70f27d4-0f63-443c-b210-5dd3c0dd52d5",
"premium": 560.06,
"fees": 31.8,
"taxes": 0,
"total": 591.86
}
]
}
}
]
}
}