curl --request PUT \
--url https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"quote": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
]
}
'import requests
url = "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}"
payload = {
"quote": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
quote: {
policyStartDate: '2025-01-01',
policyEndDate: '2026-01-01',
policyType: 'new_business',
policyTimeZone: 'America/New_York',
premium: 18000
},
exposures: [{exposureName: 'Acme Corp', employeeCount: 175}]
})
};
fetch('https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'quote' => [
'policyStartDate' => '2025-01-01',
'policyEndDate' => '2026-01-01',
'policyType' => 'new_business',
'policyTimeZone' => 'America/New_York',
'premium' => 18000
],
'exposures' => [
[
'exposureName' => 'Acme Corp',
'employeeCount' => 175
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}"
payload := strings.NewReader("{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440001",
"companyId": "550e8400-e29b-41d4-a716-446655440000",
"submissionId": "550e8400-e29b-41d4-a716-446655440010",
"policyId": null,
"data": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000,
"quoteType": "New Business",
"quoteStatus": "in_progress",
"quoteNumber": "Q-2025-001"
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
],
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-20T14:00:00.000Z",
"createdBy": "google-oauth2|123456789"
}Update Quote
Updates a Field Model V1 quote. This is a full replacement of the quote’s custom field data and exposures.
The quote object is merged with existing lifecycle fields (the system
preserves quoteType, quoteStatus, quoteNumber, quoteBindErrors,
quoteSubmissionId). The exposures array fully replaces the existing
exposures.
Lifecycle fields are rejected with a 400 error if included in the request body.
Required permission: company.quote:update
curl --request PUT \
--url https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"quote": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
]
}
'import requests
url = "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}"
payload = {
"quote": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
quote: {
policyStartDate: '2025-01-01',
policyEndDate: '2026-01-01',
policyType: 'new_business',
policyTimeZone: 'America/New_York',
premium: 18000
},
exposures: [{exposureName: 'Acme Corp', employeeCount: 175}]
})
};
fetch('https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'quote' => [
'policyStartDate' => '2025-01-01',
'policyEndDate' => '2026-01-01',
'policyType' => 'new_business',
'policyTimeZone' => 'America/New_York',
'premium' => 18000
],
'exposures' => [
[
'exposureName' => 'Acme Corp',
'employeeCount' => 175
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}"
payload := strings.NewReader("{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.aiinsurance.io/api/v1/external/companies/{companyId}/quotes/{quoteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"quote\": {\n \"policyStartDate\": \"2025-01-01\",\n \"policyEndDate\": \"2026-01-01\",\n \"policyType\": \"new_business\",\n \"policyTimeZone\": \"America/New_York\",\n \"premium\": 18000\n },\n \"exposures\": [\n {\n \"exposureName\": \"Acme Corp\",\n \"employeeCount\": 175\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440001",
"companyId": "550e8400-e29b-41d4-a716-446655440000",
"submissionId": "550e8400-e29b-41d4-a716-446655440010",
"policyId": null,
"data": {
"policyStartDate": "2025-01-01",
"policyEndDate": "2026-01-01",
"policyType": "new_business",
"policyTimeZone": "America/New_York",
"premium": 18000,
"quoteType": "New Business",
"quoteStatus": "in_progress",
"quoteNumber": "Q-2025-001"
},
"exposures": [
{
"exposureName": "Acme Corp",
"employeeCount": 175
}
],
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-20T14:00:00.000Z",
"createdBy": "google-oauth2|123456789"
}Authorizations
API key authentication. Include your API key in the Authorization header.
Path Parameters
Company identifier
Quote identifier
Body
Response
Quote updated successfully
A Field Model V1 quote with custom field data and exposures.
Quote identifier
Company identifier
Associated submission ID
Quote-level custom field data. Keys are field referenceIds
defined in the company's field configuration. Includes lifecycle
fields (quoteType, quoteStatus, quoteNumber, quoteBindErrors,
quoteSubmissionId) which are read-only and system-managed.
Array of exposure objects, each containing custom field data
with field referenceIds as keys.
When the quote was created
Associated policy ID (null until quote is bound)
When the quote was last updated
User ID who created the quote
Was this page helpful?
