curl --request POST \
--url https://www.presolve.com/api/v1/cases \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"dateOfBirth": "<string>",
"zipCode": "<string>",
"city": "<string>",
"state": "<string>",
"description": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"attorneyId": "<string>",
"matterStage": "<string>",
"matterStatus": "<string>",
"estimatedSettlementMin": 123,
"estimatedSettlementMax": 123,
"estimatedTimeToResolution": 123,
"dateOfIncident": "<string>",
"partnerId": "<string>",
"partnerName": "<string>",
"isCommercial": true,
"highValue": true,
"surveyDetails": {},
"targetOrganizationId": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
dateOfBirth: '<string>',
zipCode: '<string>',
city: '<string>',
state: '<string>',
description: '<string>',
caseType: '<string>',
subCaseType: '<string>',
attorneyId: '<string>',
matterStage: '<string>',
matterStatus: '<string>',
estimatedSettlementMin: 123,
estimatedSettlementMax: 123,
estimatedTimeToResolution: 123,
dateOfIncident: '<string>',
partnerId: '<string>',
partnerName: '<string>',
isCommercial: true,
highValue: true,
surveyDetails: {},
targetOrganizationId: '<string>'
})
};
fetch('https://www.presolve.com/api/v1/cases', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/cases"
payload = {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"dateOfBirth": "<string>",
"zipCode": "<string>",
"city": "<string>",
"state": "<string>",
"description": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"attorneyId": "<string>",
"matterStage": "<string>",
"matterStatus": "<string>",
"estimatedSettlementMin": 123,
"estimatedSettlementMax": 123,
"estimatedTimeToResolution": 123,
"dateOfIncident": "<string>",
"partnerId": "<string>",
"partnerName": "<string>",
"isCommercial": True,
"highValue": True,
"surveyDetails": {},
"targetOrganizationId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}Create a case
Creates a case (plus plaintiff and intake survey details) in the caller’s organization through the canonical write-once ownership command. Partner keys and OIDC bearers keep working unchanged; integration keys require cases:write and the standard X-Idempotency-Key contract.
Requires the cases:write scope. Legacy partner API keys and OIDC bearer tokens are also accepted on this endpoint (shipped behavior, unchanged); integration keys are scope-enforced. Mutations require an X-Idempotency-Key header (responses are stored for replay; reusing a key with a different request returns 409 IDEMPOTENCY_CONFLICT). Rate tier: write.
curl --request POST \
--url https://www.presolve.com/api/v1/cases \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"dateOfBirth": "<string>",
"zipCode": "<string>",
"city": "<string>",
"state": "<string>",
"description": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"attorneyId": "<string>",
"matterStage": "<string>",
"matterStatus": "<string>",
"estimatedSettlementMin": 123,
"estimatedSettlementMax": 123,
"estimatedTimeToResolution": 123,
"dateOfIncident": "<string>",
"partnerId": "<string>",
"partnerName": "<string>",
"isCommercial": true,
"highValue": true,
"surveyDetails": {},
"targetOrganizationId": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
dateOfBirth: '<string>',
zipCode: '<string>',
city: '<string>',
state: '<string>',
description: '<string>',
caseType: '<string>',
subCaseType: '<string>',
attorneyId: '<string>',
matterStage: '<string>',
matterStatus: '<string>',
estimatedSettlementMin: 123,
estimatedSettlementMax: 123,
estimatedTimeToResolution: 123,
dateOfIncident: '<string>',
partnerId: '<string>',
partnerName: '<string>',
isCommercial: true,
highValue: true,
surveyDetails: {},
targetOrganizationId: '<string>'
})
};
fetch('https://www.presolve.com/api/v1/cases', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/cases"
payload = {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"dateOfBirth": "<string>",
"zipCode": "<string>",
"city": "<string>",
"state": "<string>",
"description": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"attorneyId": "<string>",
"matterStage": "<string>",
"matterStatus": "<string>",
"estimatedSettlementMin": 123,
"estimatedSettlementMax": 123,
"estimatedTimeToResolution": 123,
"dateOfIncident": "<string>",
"partnerId": "<string>",
"partnerName": "<string>",
"isCommercial": True,
"highValue": True,
"surveyDetails": {},
"targetOrganizationId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}Authorizations
Org-issued integration API key (service account credential). The plaintext secret is shown once at creation.
Headers
Required for integration-key callers; optional for legacy partner-key/OIDC callers.
200Body
attorney, plaintiff Dollars (converted to cents server-side)
Dollars (converted to cents server-side)
Intake survey answers keyed by accessor (max 200 keys)
Show child attributes
Show child attributes
Partner keys with partner_multi_org only