curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration', 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://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"fields": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"exposureName": {
"type": "string",
"title": "exposureName"
},
"exposureType": {
"type": "string",
"title": "exposureType"
},
"numberOfEmployees": {
"type": "number",
"title": "numberOfEmployees"
},
"riskLevel": {
"type": "string",
"title": "riskLevel",
"oneOf": [
{
"const": "low",
"title": "Low"
},
{
"const": "medium",
"title": "Medium"
},
{
"const": "high",
"title": "High"
}
]
},
"riskScore": {
"type": "number",
"title": "riskScore",
"readOnly": true,
"x-calculated": true,
"x-variant": "LIVE",
"x-repeatable": true,
"x-derived-from": [
"numberOfEmployees",
"riskLevel"
]
}
},
"required": [
"exposureName",
"exposureType"
]
}
}Get Entity Configuration
Lists the fields one record type takes, as JSON Schema: each field’s key
(referenceId), its type, its dropdown options, and which fields a create
must send. Call it before Create Entity (createEntity) or Update Entity
(updateEntity) to learn the field keys for claims (event), insureds
(exposure), submissions, quotes, people or organizations. Policies use
Get Policy Configuration (getPolicyV1Configuration).
Returns a JSON Schema describing the fields available for creating or
updating a Field Model V1 CRUD entity. The entityType path parameter is
the lowercase kebab-case entity slug (event, exposure, quote,
submission, person, or organization).
Policy is separately owned and has its own
Get Policy Configuration
endpoint (/policies/configuration); policy is not accepted here.
The fields schema is a standard JSON Schema (draft 2020-12) that can be
used directly with validation libraries like Ajv or Zod. The required
array is exactly the set of fields you must supply when CREATING the
entity — the platform’s structural requirements minus everything the write
path produces for you (join fields, calculated fields, server-seeded
defaults). Supply all of them and the create cannot be rejected for missing
input; omit any and the create is rejected with a single InvalidEntityShape
400 naming every field it missed. Requiredness does not apply to PATCH,
which merges only the fields you send. For entities that embed exposures
(Quote), the embedded exposure schema is nested under its join field
(e.g. exposures). Its create-mode required array uses the same
caller-required Exposure contract, and an incomplete item returns one
InvalidEntityShape 400 listing every missing field with the item’s path.
Every field is included and carries its write tier. Calculated and
platform-owned fields are readOnly: true with x-calculated or
x-system-owned, and a value you send for one is recalculated or ignored
rather than rejected, with two exceptions: a computed-default field
(x-variant: YIELDING_STAMPED, e.g. quoteNumber) is not readOnly and
keeps your value, and a calculated field marked x-create-input: true (an
event’s openedOn) is taken as input on create. A calculated field’s
x-derived-from lists the fields its value is calculated from, which are
the fields to send instead: a submission’s or quote’s primaryInsured is
derived from exposures. See
Field write tiers.
This annotation is applied uniformly across every entity type.
Required permission: <resource>.view for the entity’s resource (event.view,
exposure.view, quote.view, submission.view, person.view,
organization.view), derived from the path’s
{entityType} — reading a type’s configuration is a read of that type.
curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration', 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://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}/configuration")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"fields": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"exposureName": {
"type": "string",
"title": "exposureName"
},
"exposureType": {
"type": "string",
"title": "exposureType"
},
"numberOfEmployees": {
"type": "number",
"title": "numberOfEmployees"
},
"riskLevel": {
"type": "string",
"title": "riskLevel",
"oneOf": [
{
"const": "low",
"title": "Low"
},
{
"const": "medium",
"title": "Medium"
},
{
"const": "high",
"title": "High"
}
]
},
"riskScore": {
"type": "number",
"title": "riskScore",
"readOnly": true,
"x-calculated": true,
"x-variant": "LIVE",
"x-repeatable": true,
"x-derived-from": [
"numberOfEmployees",
"riskLevel"
]
}
},
"required": [
"exposureName",
"exposureType"
]
}
}Authorizations
Path Parameters
Response
Configuration for the entity's fields
Configuration response for a Field Model V1 entity (Event, Exposure, Quote,
Submission, Person, Organization, or read-only Policy). Returns a JSON Schema
describing the fields available for creating or updating that entity. For
entities that embed exposures (Quote),
the embedded exposure schema is nested under the corresponding join field
(e.g. exposures) rather than returned as a separate top-level key.
