curl --request POST \
--url https://public.api.live.turrisfi.com/v2/upstream/diligent-effort-requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"recipientEmail": "casey.rivera@example-agency.com",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
upstreamDownstreamAssociationId: '6610b3d2c2e0a51b8c0d1f02',
stateCode: 'CA',
quoteId: 'Q-10045',
quoteType: 'new quote',
recipientEmail: 'casey.rivera@example-agency.com',
recipientFirstName: 'Casey',
recipientLastName: 'Rivera'
})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/diligent-effort-requests', 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/diligent-effort-requests"
payload = {
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"recipientEmail": "casey.rivera@example-agency.com",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f03",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"status": "sent",
"recipientEmail": "casey.rivera@example-agency.com",
"createdAt": "2026-09-14T10:15:00.000Z",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera",
"docusignEnvelopeId": "3f2a1c9e-8b7d-4e5f-9a0b-1c2d3e4f5a6b"
},
"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": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {
"refusalCode": "STATE_FORM_NOT_PUBLISHED"
}
}Request a Diligent-Effort Signature
Send a state’s diligent-effort form to somebody at one of your agencies
curl --request POST \
--url https://public.api.live.turrisfi.com/v2/upstream/diligent-effort-requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"recipientEmail": "casey.rivera@example-agency.com",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
upstreamDownstreamAssociationId: '6610b3d2c2e0a51b8c0d1f02',
stateCode: 'CA',
quoteId: 'Q-10045',
quoteType: 'new quote',
recipientEmail: 'casey.rivera@example-agency.com',
recipientFirstName: 'Casey',
recipientLastName: 'Rivera'
})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/diligent-effort-requests', 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/diligent-effort-requests"
payload = {
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"recipientEmail": "casey.rivera@example-agency.com",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"upstreamDownstreamAssociationId": "6610b3d2c2e0a51b8c0d1f02",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f03",
"stateCode": "CA",
"quoteId": "Q-10045",
"quoteType": "new quote",
"status": "sent",
"recipientEmail": "casey.rivera@example-agency.com",
"createdAt": "2026-09-14T10:15:00.000Z",
"recipientFirstName": "Casey",
"recipientLastName": "Rivera",
"docusignEnvelopeId": "3f2a1c9e-8b7d-4e5f-9a0b-1c2d3e4f5a6b"
},
"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": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {
"refusalCode": "STATE_FORM_NOT_PUBLISHED"
}
}upstreamDownstreamAssociationId must name one of your own agency relationships. Anything else returns 404, the same answer you get for an id that does not exist at all.
Quote ID and Type
quoteId is your own identifier for the quote this form is being raised against — whatever your system calls it: control number, prospect number, or quote number. It must be unique within your organisation. Sending a quoteId you have already used on a previous request returns 409, naming the field.
quoteType says whether the quote is new business or a renewal.
Both fields are required and both are echoed back on the response, unchanged.
The document is ours, not yours
The form is Turris’s published diligent-effort form for the state you name, and its exact version is frozen onto the request the moment it is sent. Republishing the state’s form later never reshapes a request already in flight, so a signed document always matches what its signer saw. You cannot select a document, and there is no field to pass one.When a state’s form is not ready
A 422 means Turris cannot send that state’s form right now.details.refusalCode says which of four reasons applies and the message says what happens next:
STATE_FORM_NOT_FOUND
STATE_FORM_NOT_FOUND
STATE_FORM_FILE_MISSING
STATE_FORM_FILE_MISSING
STATE_FORM_NOT_PUBLISHED
STATE_FORM_NOT_PUBLISHED
STATE_FORM_BEING_EDITED
STATE_FORM_BEING_EDITED
How the recipient is identified
Name them by email. If Turris already holds a contact for that address at that agency, it is used. Otherwise sendrecipientFirstName and recipientLastName and a contact is created; omit either one in that case and you get a 400.
The address is checked before anything is created. One email is the only notification the signer ever gets, so an address whose mailbox does not exist is refused with a 400 carrying errorType: invalid_email rather than producing a request nobody will answer.
The name on the signed document may not be the name you sent
Where Turris already holds a name for an address, that stored name is what appears on the signed document, and the name in your response is an echo of what you sent. So a request naming “Bob Smith” for an address Turris holds as “Robert Smith” comes back saying “Bob Smith” while the signed form says “Robert Smith”. The response is authoritative for your own request, not a read of our records: we do not return names we hold for addresses you have not registered yourself.What the recipient receives
One email from Turris with a link to sign in and sign. Nothing is sent to them from DocuSign. The signature is taken inside Turris against their own authenticated session, which is what stops whoever opens their mailbox from signing on their behalf. If they are not a Turris user yet, the link enrols them. Send anIdempotency-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
The carrier-agency relationship to raise the request under. Must be one of your own associations; anything else is treated as not found.
"6610b3d2c2e0a51b8c0d1f02"
The state or territory whose diligent-effort form to send. Turris must have a published form for it.
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 "CA"
Your own identifier for the quote this form is being raised against. Whatever your system calls it: control number, prospect number, or quote number. Must be unique within your organisation.
100"Q-10045"
Whether the quote is new business or a renewal.
new quote, renewal quote "new quote"
Who at the agency should sign. If Turris already holds a contact for this address at that agency it is used; otherwise a contact is created, which is when the name fields below are required.
"casey.rivera@example-agency.com"
The recipient's first name. Required when Turris holds no contact for this address at the agency. When it does, the stored name is what appears on the signed document, and this value is echoed back to you unchanged.
"Casey"
The recipient's last name. Required when Turris holds no contact for this address at the agency. When it does, the stored name is what appears on the signed document, and this value is echoed back to you unchanged.
"Rivera"
Was this page helpful?