Attach uploaded files to a checklist item
curl --request POST \
--url https://public.api.live.turrisfi.com/v2/upstream/surplus-lines-filings/{filingId}/checklist-item/file-documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileDocumentIds": [
"6650a1b2c3d4e5f6a7b8c9d2"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceCategoryId: '6650a1b2c3d4e5f6a7b8c9d0',
sourceTaskId: '6650a1b2c3d4e5f6a7b8c9d1',
fileDocumentIds: ['6650a1b2c3d4e5f6a7b8c9d2']
})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/surplus-lines-filings/{filingId}/checklist-item/file-documents', 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/surplus-lines-filings/{filingId}/checklist-item/file-documents"
payload = {
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileDocumentIds": ["6650a1b2c3d4e5f6a7b8c9d2"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"policyNumber": "POL-2025-001",
"stateCode": "CA",
"policyTransactionType": "bind",
"status": "in progress",
"actionRequired": true,
"updatedAt": "2025-06-15T12:00:00.000Z",
"namedInsured": "Example Corp",
"carrier": "Lloyds of London",
"carrierNaicCode": "12345",
"grossPremium": 5000,
"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": "EXT-REF-12345",
"effectiveDate": "2025-01-01T00:00:00.000Z",
"totalTaxDue": 123,
"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": {}
}Surplus Lines Filings
Attach Uploaded Files to a Checklist Item
Attach files you already uploaded to a public checklist item on a filing
POST
/
v2
/
upstream
/
surplus-lines-filings
/
{filingId}
/
checklist-item
/
file-documents
Attach uploaded files to a checklist item
curl --request POST \
--url https://public.api.live.turrisfi.com/v2/upstream/surplus-lines-filings/{filingId}/checklist-item/file-documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileDocumentIds": [
"6650a1b2c3d4e5f6a7b8c9d2"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceCategoryId: '6650a1b2c3d4e5f6a7b8c9d0',
sourceTaskId: '6650a1b2c3d4e5f6a7b8c9d1',
fileDocumentIds: ['6650a1b2c3d4e5f6a7b8c9d2']
})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/surplus-lines-filings/{filingId}/checklist-item/file-documents', 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/surplus-lines-filings/{filingId}/checklist-item/file-documents"
payload = {
"sourceCategoryId": "6650a1b2c3d4e5f6a7b8c9d0",
"sourceTaskId": "6650a1b2c3d4e5f6a7b8c9d1",
"fileDocumentIds": ["6650a1b2c3d4e5f6a7b8c9d2"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"policyNumber": "POL-2025-001",
"stateCode": "CA",
"policyTransactionType": "bind",
"status": "in progress",
"actionRequired": true,
"updatedAt": "2025-06-15T12:00:00.000Z",
"namedInsured": "Example Corp",
"carrier": "Lloyds of London",
"carrierNaicCode": "12345",
"grossPremium": 5000,
"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": "EXT-REF-12345",
"effectiveDate": "2025-01-01T00:00:00.000Z",
"totalTaxDue": 123,
"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": {}
}Attaches Surplus Lines files you already uploaded to a public checklist item on a filing belonging to the authenticated upstream entity, identified by
fileDocumentId. Returns the filing with the new attachments in place. It replaces Attach Files to a Checklist Item, which is deprecated.
Send a JSON body: sourceCategoryId and sourceTaskId, plus fileDocumentIds, an array of 1 to 10 distinct ids.
The flow
- Upload each file with Upload a Document, using the category Surplus Lines. Each file can be a PDF, DOC, DOCX, JPEG or PNG, up to 10 MB.
- Read the
_idof each document the uploads return. Those are thefileDocumentIds. - Call this endpoint with the filing’s id, the checklist item’s ids, and the
fileDocumentIds.
Identifying the checklist item
sourceCategoryId and sourceTaskId come from the filing’s own checklist, returned by Get a Surplus Lines Filing. That pair identifies an item within one filing only, so always resolve it against the checklist of the specific filingId you are posting to.
Checklist content Turris keeps internal is excluded from the checklist response entirely, so there is no id to obtain for it. Posting to a private or unknown item returns 404, the same response as an unrecognized filingId.
Which files are accepted
Every file must be a Surplus Lines upload of your own that is not on any filing yet. If any one of them is not, the whole call returns 404 and nothing is attached. That covers a file already on a filing, a file in another category, a file another organization uploaded, and a file that has been deleted. This endpoint supports idempotency. If you include anidempotency-key header, duplicate requests within 1 hour return the original response without reprocessing. See Idempotency.
Error Scenarios
Bad Request (400)
Returned whenfilingId, sourceCategoryId, sourceTaskId or a fileDocumentIds entry is not a valid MongoDB ObjectId, or fileDocumentIds is empty, has duplicates, or has more than 10 entries.
Filing, Checklist Item or File Not Found (404)
Returned whenfilingId does not exist or belongs to a different upstream entity, the checklist item is private or unknown, or a file is not an unattached Surplus Lines upload of yours.
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
sourceCategoryId of the checklist item, from the filing checklist response
Example:
"6650a1b2c3d4e5f6a7b8c9d0"
sourceTaskId of the checklist item, from the filing checklist response
Example:
"6650a1b2c3d4e5f6a7b8c9d1"
fileDocumentIds the upload returned for Surplus Lines files that are not yet on any filing. 1 to 10, no duplicates.
Example:
["6650a1b2c3d4e5f6a7b8c9d2"]
Was this page helpful?