cURL
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/upstream/contract-container-templates \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/upstream/contract-container-templates', 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/upstream/contract-container-templates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"_id": "507f1f77bcf86cd799439011",
"name": "Standard Producer Agreement",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"producerAgreement": {
"fileDocumentId": "507f1f77bcf86cd799439011",
"customFields": [
{
"fieldName": "commissionNumber",
"fieldType": "string",
"value": "<string>",
"defaultValue": "<string>",
"isRequired": true,
"minValue": 123,
"maxValue": 123
}
]
},
"additionalDocuments": [
{
"fileDocumentId": "507f1f77bcf86cd799439012",
"name": "W-9 Tax Form"
}
]
}
],
"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": {}
}Contract Container Templates
List Contract Container Templates
Retrieve active ContractContainer templates for your organization
GET
/
v2
/
upstream
/
contract-container-templates
cURL
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/upstream/contract-container-templates \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/upstream/contract-container-templates', 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/upstream/contract-container-templates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"_id": "507f1f77bcf86cd799439011",
"name": "Standard Producer Agreement",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"producerAgreement": {
"fileDocumentId": "507f1f77bcf86cd799439011",
"customFields": [
{
"fieldName": "commissionNumber",
"fieldType": "string",
"value": "<string>",
"defaultValue": "<string>",
"isRequired": true,
"minValue": 123,
"maxValue": 123
}
]
},
"additionalDocuments": [
{
"fileDocumentId": "507f1f77bcf86cd799439012",
"name": "W-9 Tax Form"
}
]
}
],
"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": {}
}Returns active ContractContainer templates available to your organization. Each item describes one template, including its underlying producer-agreement PDF and any additional folder documents.
The invite call uses the top-level
Which ID do I send on invite?
Each template carries three different IDs. Use the top-level_id as contractContainerTemplateId when calling Invite Downstream Entity.
| Field in response | What it identifies | When to use it |
|---|---|---|
_id (top-level) | The ContractContainer template itself | contractContainerTemplateId on the invite endpoint |
producerAgreement.fileDocumentId | The PDF behind the producer-agreement document | Downloading the PDF via List File Documents |
additionalDocuments[].fileDocumentId | A PDF inside the templateβs folder set | Downloading that document via List File Documents |
_id is the only value the invite endpoint accepts as contractContainerTemplateId. Sending one of the fileDocumentId values instead will return 400 No active contract template found for that contractContainerTemplateId.Example
Given a response item like:{
"_id": "6a0dee5f72ffa31272c65a6c",
"name": "Producer Agreement",
"status": "active",
"producerAgreement": {
"fileDocumentId": "6847fed985e35f21c00bfd79",
"customFields": []
},
"additionalDocuments": [
{ "fileDocumentId": "6a0e01d5d4227d43c85af4cd", "name": "Compensation & Commission Schedules" }
]
}
_id:
POST /v2/upstream/downstream-entity-associations/invite
{
"contractContainerTemplateId": "6a0dee5f72ffa31272c65a6c",
...
}
Authorizations
bearerrestricted-access-token
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Active ContractContainer templates for your organization. Use the returned _id as contractContainerTemplateId on the Invite Downstream Entity endpoint.
Was this page helpful?