curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}', 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}/configuration/describe/{entityOrObjectKey}",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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}/configuration/describe/{entityOrObjectKey}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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}/configuration/describe/{entityOrObjectKey}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"key": "Exposure",
"kind": "entity",
"fields": [
{
"referenceId": "exposureName",
"typeInfo": {
"kind": "Text"
},
"cardinality": "Single",
"frameworkLocked": true
},
{
"referenceId": "exposureType",
"typeInfo": {
"kind": "OptionSet",
"args": {
"optionSetName": "Exposure Types"
}
},
"cardinality": "Single",
"frameworkLocked": true
}
]
}Describe Configuration Entity (fields of one entity or custom object)
Lists the fields of one entity (such as Exposure, Quote, or Policy) or one
custom object, with each field’s key (referenceId), its type, and whether
it holds one value or a list. Use it to answer “which fields does Quote
have?” or “what type is this field?”; for the full definition of a few
fields, such as a calculated value or description, pass their keys to
Describe Configuration Fields (describeFmv1ConfigurationFields). For the
JSON shape of the records you create or update, use Get Entity Configuration
(getEntityV1Configuration) instead.
Returns the fields of ONE top-level entity or custom object: each field’s
referenceId, structured typeInfo, cardinality, and a frameworkLocked
marker. Deliberately minimal: the full field rows (calculated / auto-set
expressions, descriptions) come from Describe Configuration Fields, and a
field’s placement on a card from Describe Configuration Card.
The {entityOrObjectKey} path segment is the natural key verbatim — a
top-level entity name (e.g. Exposure, Quote, Policy) or a custom-object
key (e.g. Coverage, FullTermPricingInfo) — never a configuration-row id.
It resolves either kind; an unknown key returns 404 naming the valid keys
(call the run-down describe endpoint to list them).
This is not the entity CRUD data-shape endpoint
(GET /entities/{type}/configuration, which returns a record’s JSON Schema) —
this is the config-authoring view of one entity’s fields. The request needs
no body — POST an empty object.
Required permission: configuration.view
This endpoint requires an API key that holds the configuration.view
permission — the Admin role does.
See Authentication for how to create API keys with specific roles.
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}', 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}/configuration/describe/{entityOrObjectKey}",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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}/configuration/describe/{entityOrObjectKey}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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}/configuration/describe/{entityOrObjectKey}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/configuration/describe/{entityOrObjectKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"key": "Exposure",
"kind": "entity",
"fields": [
{
"referenceId": "exposureName",
"typeInfo": {
"kind": "Text"
},
"cardinality": "Single",
"frameworkLocked": true
},
{
"referenceId": "exposureType",
"typeInfo": {
"kind": "OptionSet",
"args": {
"optionSetName": "Exposure Types"
}
},
"cardinality": "Single",
"frameworkLocked": true
}
]
}Authorizations
User-principal OAuth 2.0 Bearer authentication. Send a user-scoped Auth0 access token (audience = the app API audience) as Authorization: Bearer <jwt>. The request resolves to the user's identity and is authorized by their Role on the {companyId} in the path — the same role-based permissions the web app enforces. This is the path the MCP connector uses to act on a user's behalf; endpoints that accept it list both BearerAuth and ApiKeyAuth.
Path Parameters
Body
No input is required — an empty object (or no body) is accepted.
Response
The entity's or custom object's fields.
The fields of ONE top-level entity or custom object: each field's natural key, structured type, cardinality, and a framework-locked marker. Deliberately minimal — the full field rows (placements, expressions, descriptions) are a separate, richer read.
