Producer licensing summary
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/downstream/producer-license-summary \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/downstream/producer-license-summary', 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/producer-license-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"items": [
{
"holderType": "entity",
"holderId": "6610b3d2c2e0a51b8c0d1f02",
"holderName": "Philadelphia Branch",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"domicileStates": [
{
"stateCode": "PA",
"hasActiveLicense": true
}
],
"licensedStateCount": 12,
"complianceDataSynchronizationStatus": "success"
}
],
"total": 137,
"page": 1,
"limit": 50,
"totalPages": 3
},
"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": {}
}Licensing Overview
Producer Licensing Summary
One row per producer and entity: counts and sync state
GET
/
v2
/
downstream
/
producer-license-summary
Producer licensing summary
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/downstream/producer-license-summary \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/downstream/producer-license-summary', 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/producer-license-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"items": [
{
"holderType": "entity",
"holderId": "6610b3d2c2e0a51b8c0d1f02",
"holderName": "Philadelphia Branch",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"domicileStates": [
{
"stateCode": "PA",
"hasActiveLicense": true
}
],
"licensedStateCount": 12,
"complianceDataSynchronizationStatus": "success"
}
],
"total": 137,
"page": 1,
"limit": 50,
"totalPages": 3
},
"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": {}
}Returns licence counts and sync state for your producers.
One row per producer AND entity, not per producer. Each of your entities holds its own compliance data subscription for a producer it is associated with, so a producer working for two branches has two sync states and appears twice, once per entity. Merging them would mean publishing whichever sync happened to finish first as if it covered both.Group by
producerId in your client if you want one row per person.Authorizations
bearerrestricted-access-token
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
1-based page number
Required range:
x >= 1Example:
1
Page size (max 100)
Required range:
1 <= x <= 100Example:
50
Narrow the results to a single entity in your organization. Defaults to your whole subtree (your entity plus every branch beneath it). Returns 404 if the id is not in your subtree.
Example:
"6610b3d2c2e0a51b8c0d1f02"
Narrow to a single producer. Returns an empty page if the producer is not one of yours.
Example:
"6627f2b5c2e0a51b8c0d4e7c"
Was this page helpful?