curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"exposureName": "Acme Corp HQ",
"exposureType": "company"
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}"
payload = {
"exposureName": "Acme Corp HQ",
"exposureType": "company"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({exposureName: 'Acme Corp HQ', exposureType: 'company'})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'exposureName' => 'Acme Corp HQ',
'exposureType' => 'company'
]),
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://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}"
payload := strings.NewReader("{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}"
response = http.request(request)
puts response.read_bodyCreate Entity
Creates a top-level Field Model V1 entity of {entityType} via the unified
entity CRUD pipeline. One parametric endpoint serves all six CRUD entity
types — event, exposure, quote, submission, person,
organization.
The request body is a flat JSON object whose keys are field referenceIds
from the company’s field configuration. Use the
Get Entity Configuration
endpoint to discover the available fields for the type and which are
required.
The pipeline validates the data (option sets, types, join cardinality),
resolves calculated/auto-set values, enforces framework-required fields,
inserts, then syncs join relationships. Date fields are objects:
{ "date": "YYYY-MM-DD", "timezone": "America/New_York" }.
Required permission: <resource>.create for the entity’s resource (event.create,
exposure.create, quote.create, submission.create, person.create,
organization.create), derived from the path’s
{entityType}. See
Permissions.
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"exposureName": "Acme Corp HQ",
"exposureType": "company"
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}"
payload = {
"exposureName": "Acme Corp HQ",
"exposureType": "company"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({exposureName: 'Acme Corp HQ', exposureType: 'company'})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'exposureName' => 'Acme Corp HQ',
'exposureType' => 'company'
]),
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://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}"
payload := strings.NewReader("{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/entities/{entityType}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exposureName\": \"Acme Corp HQ\",\n \"exposureType\": \"company\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
API key authentication. Send your raw API key as the Authorization header value with NO scheme prefix — Authorization: YOUR-API-KEY. Do NOT prefix it with Bearer or ApiKey, and do not use an X-API-Key header; those are not accepted.
Headers
Optional caller-authored UUID that makes retries of this create safe.
Reuse the key only for the same entity type and request body. A retry
returns the original live entity ID; a key assigned to an unavailable
entity returns 409. UUID spelling is normalized to lowercase, so
uppercase and lowercase spellings replay the same create.
Optional opaque owner token for a keyed create. This header requires
Idempotency-Key. It grants no access or ownership by itself: on a
replay, idempotencyOwnerMatched is true only when the value exactly
matches the token recorded by the original successful create.
1 - 255Path Parameters
Company identifier
Field Model V1 entity type (lowercase kebab-case URL slug). One of the six
CRUD entity types: event, exposure, quote, submission, person,
organization. policy is NOT valid here — Policy has no generic CRUD (its
writes go through the policy transaction endpoints), though it does have a
read-only /configuration schema.
event, exposure, quote, submission, person, organization Body
Flat JSON object with field referenceIds as keys
