curl --request PUT \
--url https://api.casexchange.com/api/public/v1/referrals/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"notes": "<string>",
"leadAttorneyName": "<string>",
"statuteOfLimitationsExpiration": "2023-12-25",
"clientFeeAgreementPercentage": 0.5,
"attorneyFees": 500000000,
"estimatedDateOfResolution": "2023-12-25",
"estimatedDistributionDate": "2023-12-25",
"projectedSettlementAmount": 500000000,
"phase": "<string>",
"sendingFirmPercentage": 50,
"settlementAmount": 500000000,
"isRetainerSigned": true,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
]
}
'import requests
url = "https://api.casexchange.com/api/public/v1/referrals/{id}"
payload = {
"notes": "<string>",
"leadAttorneyName": "<string>",
"statuteOfLimitationsExpiration": "2023-12-25",
"clientFeeAgreementPercentage": 0.5,
"attorneyFees": 500000000,
"estimatedDateOfResolution": "2023-12-25",
"estimatedDistributionDate": "2023-12-25",
"projectedSettlementAmount": 500000000,
"phase": "<string>",
"sendingFirmPercentage": 50,
"settlementAmount": 500000000,
"isRetainerSigned": True,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
notes: '<string>',
leadAttorneyName: '<string>',
statuteOfLimitationsExpiration: '2023-12-25',
clientFeeAgreementPercentage: 0.5,
attorneyFees: 500000000,
estimatedDateOfResolution: '2023-12-25',
estimatedDistributionDate: '2023-12-25',
projectedSettlementAmount: 500000000,
phase: '<string>',
sendingFirmPercentage: 50,
settlementAmount: 500000000,
isRetainerSigned: true,
customFields: [{fieldId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', value: '<string>'}]
})
};
fetch('https://api.casexchange.com/api/public/v1/referrals/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.casexchange.com/api/public/v1/referrals/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'notes' => '<string>',
'leadAttorneyName' => '<string>',
'statuteOfLimitationsExpiration' => '2023-12-25',
'clientFeeAgreementPercentage' => 0.5,
'attorneyFees' => 500000000,
'estimatedDateOfResolution' => '2023-12-25',
'estimatedDistributionDate' => '2023-12-25',
'projectedSettlementAmount' => 500000000,
'phase' => '<string>',
'sendingFirmPercentage' => 50,
'settlementAmount' => 500000000,
'isRetainerSigned' => true,
'customFields' => [
[
'fieldId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.casexchange.com/api/public/v1/referrals/{id}"
payload := strings.NewReader("{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.casexchange.com/api/public/v1/referrals/{id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casexchange.com/api/public/v1/referrals/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referenceNumber": "<string>",
"status": "draft",
"closingStatus": "won_settled",
"payoutType": "lump_sum",
"closureReason": "<string>",
"referringFirmId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referentFirmId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"settlementAmount": 500000000,
"attorneyFees": 500000000,
"projectedSettlementAmount": 500000000,
"estimatedDateOfResolution": "2023-11-07T05:31:56Z",
"estimatedDistributionDate": "2023-11-07T05:31:56Z",
"statuteOfLimitationsExpiration": "2023-11-07T05:31:56Z",
"clientFeeAgreementPercentage": 0.5,
"sendingFirmPercentage": 50,
"netFeeToSendingFirm": 123,
"netFeeToHandlingFirm": 123,
"resolutionDate": "2023-11-07T05:31:56Z",
"closedDate": "2023-11-07T05:31:56Z",
"leadAttorneyName": "<string>",
"warmTransferSuccessful": true,
"warmTransferUnsuccessfulReason": "<string>",
"warmTransferUnsuccessfulReasonType": "FIRM_UNABLE_TO_ANSWER",
"phase": "<string>",
"notes": "<string>",
"isRetainerSigned": true,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fieldName": "<string>",
"displayName": "<string>",
"fieldType": "<string>",
"value": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}Update a referral
Updates editable referral-level fields. Unknown fields are rejected and at least one field must be provided. Which fields a firm may edit depends on its role and the referral status (for example, the sending firm may only edit notes while the referral is DRAFT, SENT, REJECTED or WITHDRAWN; custom fields are receiver-only after signing); disallowed edits return 403. When both are supplied, attorneyFees must not exceed settlementAmount. Requires STANDARD tier.
curl --request PUT \
--url https://api.casexchange.com/api/public/v1/referrals/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"notes": "<string>",
"leadAttorneyName": "<string>",
"statuteOfLimitationsExpiration": "2023-12-25",
"clientFeeAgreementPercentage": 0.5,
"attorneyFees": 500000000,
"estimatedDateOfResolution": "2023-12-25",
"estimatedDistributionDate": "2023-12-25",
"projectedSettlementAmount": 500000000,
"phase": "<string>",
"sendingFirmPercentage": 50,
"settlementAmount": 500000000,
"isRetainerSigned": true,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
]
}
'import requests
url = "https://api.casexchange.com/api/public/v1/referrals/{id}"
payload = {
"notes": "<string>",
"leadAttorneyName": "<string>",
"statuteOfLimitationsExpiration": "2023-12-25",
"clientFeeAgreementPercentage": 0.5,
"attorneyFees": 500000000,
"estimatedDateOfResolution": "2023-12-25",
"estimatedDistributionDate": "2023-12-25",
"projectedSettlementAmount": 500000000,
"phase": "<string>",
"sendingFirmPercentage": 50,
"settlementAmount": 500000000,
"isRetainerSigned": True,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
notes: '<string>',
leadAttorneyName: '<string>',
statuteOfLimitationsExpiration: '2023-12-25',
clientFeeAgreementPercentage: 0.5,
attorneyFees: 500000000,
estimatedDateOfResolution: '2023-12-25',
estimatedDistributionDate: '2023-12-25',
projectedSettlementAmount: 500000000,
phase: '<string>',
sendingFirmPercentage: 50,
settlementAmount: 500000000,
isRetainerSigned: true,
customFields: [{fieldId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', value: '<string>'}]
})
};
fetch('https://api.casexchange.com/api/public/v1/referrals/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.casexchange.com/api/public/v1/referrals/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'notes' => '<string>',
'leadAttorneyName' => '<string>',
'statuteOfLimitationsExpiration' => '2023-12-25',
'clientFeeAgreementPercentage' => 0.5,
'attorneyFees' => 500000000,
'estimatedDateOfResolution' => '2023-12-25',
'estimatedDistributionDate' => '2023-12-25',
'projectedSettlementAmount' => 500000000,
'phase' => '<string>',
'sendingFirmPercentage' => 50,
'settlementAmount' => 500000000,
'isRetainerSigned' => true,
'customFields' => [
[
'fieldId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.casexchange.com/api/public/v1/referrals/{id}"
payload := strings.NewReader("{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.casexchange.com/api/public/v1/referrals/{id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casexchange.com/api/public/v1/referrals/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"<string>\",\n \"leadAttorneyName\": \"<string>\",\n \"statuteOfLimitationsExpiration\": \"2023-12-25\",\n \"clientFeeAgreementPercentage\": 0.5,\n \"attorneyFees\": 500000000,\n \"estimatedDateOfResolution\": \"2023-12-25\",\n \"estimatedDistributionDate\": \"2023-12-25\",\n \"projectedSettlementAmount\": 500000000,\n \"phase\": \"<string>\",\n \"sendingFirmPercentage\": 50,\n \"settlementAmount\": 500000000,\n \"isRetainerSigned\": true,\n \"customFields\": [\n {\n \"fieldId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referenceNumber": "<string>",
"status": "draft",
"closingStatus": "won_settled",
"payoutType": "lump_sum",
"closureReason": "<string>",
"referringFirmId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referentFirmId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"settlementAmount": 500000000,
"attorneyFees": 500000000,
"projectedSettlementAmount": 500000000,
"estimatedDateOfResolution": "2023-11-07T05:31:56Z",
"estimatedDistributionDate": "2023-11-07T05:31:56Z",
"statuteOfLimitationsExpiration": "2023-11-07T05:31:56Z",
"clientFeeAgreementPercentage": 0.5,
"sendingFirmPercentage": 50,
"netFeeToSendingFirm": 123,
"netFeeToHandlingFirm": 123,
"resolutionDate": "2023-11-07T05:31:56Z",
"closedDate": "2023-11-07T05:31:56Z",
"leadAttorneyName": "<string>",
"warmTransferSuccessful": true,
"warmTransferUnsuccessfulReason": "<string>",
"warmTransferUnsuccessfulReasonType": "FIRM_UNABLE_TO_ANSWER",
"phase": "<string>",
"notes": "<string>",
"isRetainerSigned": true,
"customFields": [
{
"fieldId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fieldName": "<string>",
"displayName": "<string>",
"fieldType": "<string>",
"value": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"meta": {
"requestId": "req_f2dbe1d3f6ad4a7bb5b4c9f2",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Public API key: cxp_<hex> (firm-scoped) or cxpp_<hex> (provider-scoped). Required on every request.
Path Parameters
Resource UUID
Body
10000500YYYY-MM-DD
Client fee agreement as a FRACTION of the settlement, 0–1 (0.3333 = 33.33%). Not a whole percent — contrast with sendingFirmPercentage.
0 <= x <= 1Attorney fees in dollars
0 <= x <= 1000000000YYYY-MM-DD
YYYY-MM-DD
Projected settlement amount in dollars
0 <= x <= 1000000000200Referral fee owed to the sending firm as a WHOLE-NUMBER percent of attorney fees (33.33 = 33.33%). Input values strictly between 0 and 1 are rejected as likely fractions; 0 means no fee.
0 <= x <= 100Final settlement amount in dollars
0 <= x <= 1000000000lump_sum, structured, hybrid, other Custom field values to set. Custom fields can only be updated by the receiving firm once the referral is SIGNED or later; otherwise the request is rejected with 403.
Show child attributes
Show child attributes
Response
Updated referral
A referral as seen by either party. Referral-level fields only (financials, resolution, workflow) — client and case details live on the parent case. When the caller is the receiving firm and the referral is still SENT (not yet acknowledged), leadAttorneyName, warmTransferUnsuccessfulReason, warmTransferUnsuccessfulReasonType and notes are null and customFields is empty.
Show child attributes
Show child attributes
Show child attributes
Show child attributes

