Documentation Index
Fetch the complete documentation index at: https://docs.aiinsurance.io/llms.txt
Use this file to discover all available pages before exploring further.
This section provides complete reference documentation for all data structures used in the Submissions and Quotes API.
Submission Object
| Field | Type | Description |
|---|
id | string (UUID) | Unique submission identifier |
createdAt | string (ISO 8601) | Submission creation timestamp |
updatedAt | string (ISO 8601) | Last update timestamp |
status | string | Current submission status |
type | string | Type of submission |
number | string | Human-readable submission number |
primaryInsuredName | string | Name of the primary insured party |
applicationId | string (UUID) | Associated application identifier |
name | string | Submission name/description |
Quote Object (Lightweight)
Returned by the List Quote Info endpoint (GET /api/external/companies/{companyId}/quotes-info). This lightweight representation includes essential fields only for efficient listing and searching.
| Field | Type | Description |
|---|
id | string (UUID) | Unique quote identifier |
number | string | Human-readable quote number (format: Q########-##) |
status | enum | Current quote status |
createdAt | string (ISO 8601) | Quote creation timestamp |
updatedAt | string (ISO 8601, optional) | Last update timestamp |
description | string (optional) | Quote description from policy info |
policyId | string (UUID, optional) | Associated policy identifier (if bound) |
policyCurrency | string (optional) | Policy currency code (e.g., “USD”, “CAD”) |
grandTotal | number (optional) | Total premium amount including taxes and fees |
Quote Object (Full)
Returned by the List Quotes (GET /api/external/companies/{companyId}/quotes) and Get Quote (GET /api/external/companies/{companyId}/quotes/{quoteId}) endpoints. This complete representation includes all quote data, coverages, and billing information.
| Field | Type | Description |
|---|
id | string (UUID) | Unique quote identifier |
number | string | Human-readable quote number |
wizardType | enum | Quote workflow type: quote, endorsement, renewal, forms, cancellation |
status | enum | Current quote status |
submissionId | string (UUID) | Associated submission identifier |
applicationId | string (UUID, optional) | Associated application identifier |
policyId | string (UUID, optional) | Associated policy identifier (if bound) |
data | object | Complete quote data including policy info, coverages, insureds, and billing |
previewData | object (optional) | Rating preview data with premium breakdowns |
billingEmail | string (optional) | Email address for billing communications |
See the Get Quote endpoint for the complete QuoteDetail schema with all nested fields.
ImportPolicy Object
| Field | Type | Description |
|---|
policyNumber | string | Customer facing policy identifier |
policyStartDate | string (ISO 8601) | Date policy begins |
policyEndDate | string (ISO 8601) | Date policy ends |
policyType | enum | A single letter “C”, “O”, etc. (see below) |
ratingData | object | All policy-level rating data (see config tutorial) |
billingPeriod | enum | ”doNotSendBill”, “annual”, “quarterly”, “monthly” |
renewingPolicyNumber | string (optional) | If a renewal, the number of the policy being renewed |
policyCompanyEntityFields | object | All non-rating policy-level data (see config tutorial) |
brokerName | string (optional) | The name of the broker/agent |
brokerageName | string (optional) | The name of the brokerage/agency |
brokerCommission | number (optional) | A percentage (e.g. 12.3 means 12.3%) |
ImportPolicyCoverage Object
{
"coverageTypeId": enum,
"deductible": number (in dollars, optional),
"retroactibveDate": string (ISO 8601, optional),
"priorOrPendingLitigationDate": string (ISO 8601, optional),
"defenseInsideLimit": "inside" or "outside" (optional),
"presetId": enum (optional),
"limits": [{ "limitName": string, "amount": number | string }],
"endorsements": {
[insuredId]: {
"deductible": number, (in dollars, optional)
"retroactiveDate": string, // (ISO 8601, optional)
"priorOrPendingLitigationDate": string (ISO 8601, optional),
"limits": [{ "limitName": string, "amount": number | string }],
"presetId": enum (optional)
}
}
}
ImportInsured Object
| Field | Type | Description |
|---|
insuredName | string | The name of the insured, used to identify in the system |
joinDate | string (ISO 8601) | Date coverage begins for insured |
terminationDate | string (ISO 8601) | Date coverage ends for insured |
policyInsuredType | enum | ”primary”, “additional”, “named”, or “related” |
entityType | enum | The type of covered exposure |
applicationData | object | All insured-level rating data |
insuredCompanyEntityFields | object | All non-rating insured-level data (see config tutorial) |
Policy Type Options
| Value | Description |
|---|
C | Claims Made |
N | Claims Made “Nose” (Prior Acts) |
T | Claims Made “Tail” (Reporting Endorsement) |
O | Occurrence |
P | Claims Paid |
S | Slot Coverage - Claims Made |
Q | Slot Coverage “Tail” (Reporting Endorsement) |
R | Slot Coverage - Occurrence |
Submission Status Values
| Value | Description |
|---|
draft | Submission is being prepared |
submitted | Submission has been submitted for review |
under_review | Submission is being reviewed |
quoted | Quote has been generated |
bound | Policy has been bound |
declined | Submission was declined |
Submission Types
| Value | Description |
|---|
new_business | A submission that will create a new policy |
renewal | Submission that will create a new policy from an existing one. This new policy can contain updated information. |
endorsement | Submission that will update an existing policy |
Quote Status Values
| Value | Description |
|---|
in_progress | Quote is being created |
complete | Quote is complete and ready for review |
sent | Quote has been sent to the client |
accepted | Quote has been accepted by the client |
bound | Quote has been bound to a policy |
cancelled | Quote was cancelled |
archived | Quote has been archived |
applied_to_policy | Quote changes have been applied to a policy |
Field Types
| Type | Description | Usage in Submission |
|---|
InputField | A field that takes a value of type string or number, based on the fields.type value | "key" : "some string" or "key" : 555 |
DateField | A field that takes a value of type string in the format YYYY-MM-DD | "key" : "2025-10-03" |
SelectField or RadioSelect | A field that takes a value of type string or number, based on the value property of fields.options | "key" : "some option", where fields.options:[{"value":"some option"},...] |
MultiSelectField | A field that takes a value of type string, based on the value properties of fields.options. | "key" : "some option 1, some option 2", where fields.options:[{"value":"some option 1"}, {"value":"some option 2"},...] |
GroupField | A field that takes a value of type array. This array is made of objects, whose keys are found in fields.subFields. Each field in fields.subFields is a type of Field | "key" : [{"subKey": "value"},...] |
Configuration endpoints (like GET /quotes/configuration) return JSON Schema definitions for custom data fields. The format property indicates the semantic type of values:
| Format | Type | Description | Example Value |
|---|
date | string | ISO 8601 date (YYYY-MM-DD) | "2025-01-15" |
email | string | Email address | "user@example.com" |
phone | string | Phone number | "+1-555-123-4567" |
currency | number | Currency amount (simple) | 1500 |
currency | object | Currency amount with code | { "code": "USD", "value": 1500 } |
percent | string | Percentage value | "15.5" |
address | string | Physical address | "123 Main St, ..." |
Currency Fields
There are two types of currency fields:
-
Simple currency (
type: "number", format: "currency"): A plain numeric amount. The currency code is typically derived from the policy’s currency setting.
{ "annualPremium": 1500 }
-
Currency with code (
type: "object", format: "currency"): An object containing both the currency code and value. Used when the currency may differ from the policy default.
{ "foreignExpense": { "code": "EUR", "value": 2500 } }
These formats are used across all configuration endpoints (quotes, events, etc.) and follow JSON Schema format semantics.
Exposure-Level Rating
Exposure-level rating is a method of calculating insurance premiums where each individual item or entity covered under a policy (called an “exposure”) is rated independently based on its specific characteristics and risk factors.
How Exposure-Level Rating Works
In exposure-level rating, each exposure within a policy is evaluated separately:
-
Individual Assessment: Each exposure (e.g., a building, vehicle, healthcare provider, or other entity type) is assessed based on its own unique characteristics, such as:
- Physical attributes (size, construction type, location)
- Operational details (usage patterns, safety features)
- Risk factors specific to that exposure
-
Independent Premium Calculation: A premium is calculated for each exposure individually using exposure-specific rating questions and modifier factors.
-
Aggregation: The individual exposure premiums are then summed together to form the total exposure-level premium for the policy.
-
Policy-Level Adjustments: After exposure-level rating is complete, policy-level modification factors are applied to the aggregated total.
Exposure-Level vs. Policy-Level Rating
-
Exposure-Level Rating: Evaluates individual entities (exposures) within a policy. Each exposure has its own set of rating questions and modifier factors. Examples include rating a specific doctor’s malpractice risk or a particular building’s property risk.
-
Policy-Level Rating: Evaluates the policy as a whole, applying factors that affect the entire policy regardless of individual exposures. Examples include organizational risk factors, program-level discounts, or overall policy terms.
Example
Consider a medical malpractice policy covering a hospital with multiple doctors:
-
Exposure-Level Rating: Each doctor (exposure) is rated individually based on:
- Their medical specialty
- Geographic location
- Years of experience
- Malpractice history
-
Policy-Level Rating: The policy as a whole is evaluated based on:
- Hospital-wide risk management programs
- Overall claims history
- Negotiated risk agreements
The final premium combines both exposure-level and policy-level calculations.
For more information about how exposure-level rating fits into the overall data model, see Understanding the AI Insurance Model.