curl --request POST \
--url https://public.api.live.turrisfi.com/v2/downstream/compliance-configs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "P&C",
"lineOfBusiness": "P&C Personal",
"stateCodes": [
"PA"
],
"description": "Minimum authority for personal lines.",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'P&C',
lineOfBusiness: 'P&C Personal',
stateCodes: ['PA'],
description: 'Minimum authority for personal lines.',
downstreamEntityId: '6610b3d2c2e0a51b8c0d1f02'
})
};
fetch('https://public.api.live.turrisfi.com/v2/downstream/compliance-configs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/downstream/compliance-configs"
payload = {
"name": "P&C",
"lineOfBusiness": "P&C Personal",
"stateCodes": ["PA"],
"description": "Minimum authority for personal lines.",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"complianceConfigId": "65a1b2c3d4e5f6a7b8c9d0e9",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"name": "Personal Lines baseline",
"states": [
{
"stateCode": "PA",
"licenseComplianceRequirementId": "65a1b2c3d4e5f6a7b8c9d0e5",
"isTurrisDefault": true,
"entityRequirement": {
"anyOf": [
{
"allOf": [
{
"stateLicenseLoaMappingId": "65a1b2c3d4e5f6a7b8c9d0e1",
"licenseClassCode": "135",
"licenseClassName": "Insurance Producer",
"lineOfAuthorityCode": "16",
"lineOfAuthorityName": "Property",
"isDeprecated": false
}
]
}
]
},
"producerRequirement": {
"anyOf": [
{
"allOf": [
{
"stateLicenseLoaMappingId": "65a1b2c3d4e5f6a7b8c9d0e1",
"licenseClassCode": "135",
"licenseClassName": "Insurance Producer",
"lineOfAuthorityCode": "16",
"lineOfAuthorityName": "Property",
"isDeprecated": false
}
]
}
]
},
"requiresJointAgentLicenseCompliance": false
}
],
"description": "<string>",
"lineOfBusiness": "P&C Personal",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2026-02-12T09:00:00.000Z"
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}Add a Compliance Configuration
Create a configuration covering the states you name
curl --request POST \
--url https://public.api.live.turrisfi.com/v2/downstream/compliance-configs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "P&C",
"lineOfBusiness": "P&C Personal",
"stateCodes": [
"PA"
],
"description": "Minimum authority for personal lines.",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'P&C',
lineOfBusiness: 'P&C Personal',
stateCodes: ['PA'],
description: 'Minimum authority for personal lines.',
downstreamEntityId: '6610b3d2c2e0a51b8c0d1f02'
})
};
fetch('https://public.api.live.turrisfi.com/v2/downstream/compliance-configs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/downstream/compliance-configs"
payload = {
"name": "P&C",
"lineOfBusiness": "P&C Personal",
"stateCodes": ["PA"],
"description": "Minimum authority for personal lines.",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"complianceConfigId": "65a1b2c3d4e5f6a7b8c9d0e9",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"name": "Personal Lines baseline",
"states": [
{
"stateCode": "PA",
"licenseComplianceRequirementId": "65a1b2c3d4e5f6a7b8c9d0e5",
"isTurrisDefault": true,
"entityRequirement": {
"anyOf": [
{
"allOf": [
{
"stateLicenseLoaMappingId": "65a1b2c3d4e5f6a7b8c9d0e1",
"licenseClassCode": "135",
"licenseClassName": "Insurance Producer",
"lineOfAuthorityCode": "16",
"lineOfAuthorityName": "Property",
"isDeprecated": false
}
]
}
]
},
"producerRequirement": {
"anyOf": [
{
"allOf": [
{
"stateLicenseLoaMappingId": "65a1b2c3d4e5f6a7b8c9d0e1",
"licenseClassCode": "135",
"licenseClassName": "Insurance Producer",
"lineOfAuthorityCode": "16",
"lineOfAuthorityName": "Property",
"isDeprecated": false
}
]
}
]
},
"requiresJointAgentLicenseCompliance": false
}
],
"description": "<string>",
"lineOfBusiness": "P&C Personal",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2026-02-12T09:00:00.000Z"
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}You name states, not requirement ids
Send alineOfBusiness and a list of stateCodes. Together those select the Turris default compliance requirement for each state, so you never handle a requirement id.
{
"name": "P&C",
"description": "Minimum authority for personal lines.",
"lineOfBusiness": "P&C Personal",
"stateCodes": ["PA", "NJ"]
}
lineOfBusiness is required, and its allowed values are published in the schema below. It is what makes the requirement lookup unambiguous: a state can have one default per line of business, so without it there would be nothing to choose between them.
What can go wrong
| Response | When |
|---|---|
| 400 | A state appears more than once. A configuration holds at most one rule per state. |
| 404 | A state has no Turris default for the line of business you chose. Nothing is created β the whole request fails rather than covering fewer states than you asked for. |
| 409 | A configuration with this name already exists on that entity. Names are unique per entity. |
isTurrisDefault: false.Idempotency-Key header. See Idempotency.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
UUID to ensure idempotent request processing
"550e8400-e29b-41d4-a716-446655440000"
Alternative UUID header for idempotent request processing
"550e8400-e29b-41d4-a716-446655440000"
Body
Configuration name. Must be unique within the entity that owns it.
"P&C"
The line of business this configuration governs. Together with each state code it selects the Turris default compliance requirement to attach.
P&C Commercial, P&C Personal, Surplus Lines, Life & Health "P&C Personal"
The states this configuration covers. Each one attaches the Turris default requirement for that state and line of business. A state with no default for the chosen line of business returns 404, and a state listed twice returns 400.
AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY, GU, PR, VI, DC ["PA"]
Free-text description
"Minimum authority for personal lines."
Which of your entities owns this configuration. Defaults to your own organization.
"6610b3d2c2e0a51b8c0d1f02"
Was this page helpful?