Set the policy document
curl --request PUT \
--url https://public.api.live.turrisfi.com/v2/downstream/surplus-lines-filings/{filingId}/policy-document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d2"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({fileDocumentId: '6650a1b2c3d4e5f6a7b8c9d2'})
};
fetch('https://public.api.live.turrisfi.com/v2/downstream/surplus-lines-filings/{filingId}/policy-document', 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/surplus-lines-filings/{filingId}/policy-document"
payload = { "fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d2" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"data": {
"filingId": "6650a1b2c3d4e5f6a7b8c9d0",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"policyNumber": "POL-123456",
"stateCode": "PA",
"policyTransactionType": "bind",
"status": "not started",
"actionRequired": false,
"updatedAt": "2026-06-01T12:00:00.000Z",
"namedInsured": "Example Corp",
"carrier": "Example Mutual Insurance Company",
"carrierNaicCode": "12345",
"grossPremium": 25000,
"escalations": [
{
"checklistItemLabel": "<string>",
"status": "waiting customer input",
"messages": [
{
"authorLabel": "Turris",
"body": "<string>",
"createdAt": "2025-06-01T12:00:00.000Z"
}
],
"openedAt": "<string>",
"resolvedAt": "<string>"
}
],
"completionArtifacts": [
{
"type": "accepted stamped",
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "stamped-filing.pdf",
"uploadedAt": "2025-06-15T09:00:00.000Z",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"checklist": [
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "Documents we need from you",
"tone": "primary",
"order": 0,
"items": [
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"label": "Signed diligent search affidavit",
"required": true,
"order": 0,
"checked": false,
"referenceFields": [
{
"label": "Policy limit",
"value": "<string>"
}
],
"templateFiles": [
{
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"fileName": "diligent-search-form.pdf",
"mimeType": "application/pdf",
"fileSize": 248310,
"description": "<string>",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"attachments": [
{
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "signed-form.pdf",
"uploadedByType": "customer",
"uploadedAt": "2026-06-01T12:00:00.000Z",
"authorLabel": "Turris",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"checkedAt": "2026-06-01T12:00:00.000Z",
"escalation": {
"checklistItemLabel": "<string>",
"status": "waiting customer input",
"messages": [
{
"authorLabel": "Turris",
"body": "<string>",
"createdAt": "2025-06-01T12:00:00.000Z"
}
],
"openedAt": "<string>",
"resolvedAt": "<string>"
}
}
]
}
],
"checklistProgress": {
"checked": 3,
"total": 5
},
"externalReference": "REF-2026-0001",
"effectiveDate": "2026-01-01T00:00:00.000Z",
"totalTaxDue": 875.5,
"policyDocument": {
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "policy-12345.pdf",
"uploadedByType": "customer",
"uploadedAt": "2025-06-15T09:00:00.000Z",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
},
"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": {}
}Surplus Lines
Set the Policy Document
Set or replace the policy document on a filing from an uploaded file
PUT
/
v2
/
downstream
/
surplus-lines-filings
/
{filingId}
/
policy-document
Set the policy document
curl --request PUT \
--url https://public.api.live.turrisfi.com/v2/downstream/surplus-lines-filings/{filingId}/policy-document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d2"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({fileDocumentId: '6650a1b2c3d4e5f6a7b8c9d2'})
};
fetch('https://public.api.live.turrisfi.com/v2/downstream/surplus-lines-filings/{filingId}/policy-document', 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/surplus-lines-filings/{filingId}/policy-document"
payload = { "fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d2" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"data": {
"filingId": "6650a1b2c3d4e5f6a7b8c9d0",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"policyNumber": "POL-123456",
"stateCode": "PA",
"policyTransactionType": "bind",
"status": "not started",
"actionRequired": false,
"updatedAt": "2026-06-01T12:00:00.000Z",
"namedInsured": "Example Corp",
"carrier": "Example Mutual Insurance Company",
"carrierNaicCode": "12345",
"grossPremium": 25000,
"escalations": [
{
"checklistItemLabel": "<string>",
"status": "waiting customer input",
"messages": [
{
"authorLabel": "Turris",
"body": "<string>",
"createdAt": "2025-06-01T12:00:00.000Z"
}
],
"openedAt": "<string>",
"resolvedAt": "<string>"
}
],
"completionArtifacts": [
{
"type": "accepted stamped",
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "stamped-filing.pdf",
"uploadedAt": "2025-06-15T09:00:00.000Z",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"checklist": [
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "Documents we need from you",
"tone": "primary",
"order": 0,
"items": [
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"label": "Signed diligent search affidavit",
"required": true,
"order": 0,
"checked": false,
"referenceFields": [
{
"label": "Policy limit",
"value": "<string>"
}
],
"templateFiles": [
{
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"fileName": "diligent-search-form.pdf",
"mimeType": "application/pdf",
"fileSize": 248310,
"description": "<string>",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"attachments": [
{
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "signed-form.pdf",
"uploadedByType": "customer",
"uploadedAt": "2026-06-01T12:00:00.000Z",
"authorLabel": "Turris",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
],
"checkedAt": "2026-06-01T12:00:00.000Z",
"escalation": {
"checklistItemLabel": "<string>",
"status": "waiting customer input",
"messages": [
{
"authorLabel": "Turris",
"body": "<string>",
"createdAt": "2025-06-01T12:00:00.000Z"
}
],
"openedAt": "<string>",
"resolvedAt": "<string>"
}
}
]
}
],
"checklistProgress": {
"checked": 3,
"total": 5
},
"externalReference": "REF-2026-0001",
"effectiveDate": "2026-01-01T00:00:00.000Z",
"totalTaxDue": 875.5,
"policyDocument": {
"fileDocumentId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileName": "policy-12345.pdf",
"uploadedByType": "customer",
"uploadedAt": "2025-06-15T09:00:00.000Z",
"downloadUrl": "<string>",
"viewUrl": "<string>"
}
},
"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": {}
}Sets the policy document for a filing filed by your subtree to a Surplus Lines file you already uploaded, identified by
fileDocumentId. Returns the filing with the policy document in place. It replaces Upload the Policy Document, which is deprecated.
Send a JSON body with one field: fileDocumentId.
The flow
- Upload the file with Upload a Document, using the category Surplus Lines. The file can be a PDF, DOC, DOCX, JPEG or PNG, up to 10 MB.
- Read the
fileDocumentIdin the response to the upload. - Call this endpoint with the filing’s id and that
fileDocumentId.
Replacing a policy document
Setting the policy document again replaces the existing one. The previous file is soft-deleted at the moment the new one is set, and a filing never holds two policy documents. Retrying the same request with the samefileDocumentId is safe.
Which files are accepted
The file must be a Surplus Lines upload made by your own entity or by any branch beneath it, and it must not be on any filing yet. It is re-pointed to the entity that filed. Anything else returns 404, the same response as afilingId your subtree did not file, so a caller cannot tell “does not exist” from “not yours to use”. That covers a file already on a filing, a file in another category, a file from outside your subtree, and a file that has been deleted.
This endpoint supports idempotency. If you include an idempotency-key header, duplicate requests within 1 hour return the original response without reprocessing. See Idempotency.
Error Scenarios
Bad Request (400)
Returned whenfilingId or fileDocumentId is not a valid MongoDB ObjectId.
Filing or File Not Found (404)
Returned whenfilingId does not exist or was not filed by your subtree, or the file is not an unattached Surplus Lines upload of your subtree.
Unauthorized (401)
Missing or invalid authentication token. See Authentication.Authorizations
bearerrestricted-access-token
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
UUID to ensure idempotent request processing
Example:
"550e8400-e29b-41d4-a716-446655440000"
Alternative UUID header for idempotent request processing
Example:
"550e8400-e29b-41d4-a716-446655440000"
Path Parameters
Unique identifier of the surplus-lines filing
Example:
"6650a1b2c3d4e5f6a7b8c9d0"
Body
application/json
The fileDocumentId the upload returned for a Surplus Lines file that is not yet on any filing
Example:
"6650a1b2c3d4e5f6a7b8c9d2"
Was this page helpful?