● Case spine
Matters
The root object. Every judgment, party, packet, job, and ledger entry hangs off a matter.
| POST | /v1/matters | Create matter |
| GET | /v1/matters | List matters |
| GET | /v1/matters/{matter_id} | Get matter |
| PATCH | /v1/matters/{matter_id} | Update matter |
| GET | /v1/matters/{matter_id}/dashboard | Get matter dashboard |
| POST | /v1/matters/{matter_id}/close | Close matter |
POST/v1/matters
Create matter
Creates a recovery matter and establishes the primary authority object container.
scope · matters:write
§ Body
| Field | Type |
|---|---|
| name required | string |
| mode optional | string |
| lead_counsel optional | string |
| economics optional | object |
| notes optional | string |
# sandbox: full surface, no production data curl -X POST https://api.kineticanvil.com/v1/matters \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05" \ -H "Content-Type: application/json" \ -d '{"name":"string","mode":"string","lead_counsel":"string","economics":{},"notes":"string"}'
import requests
resp = requests.post(
"https://api.kineticanvil.com/v1/matters",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
json={"name":"string","mode":"string","lead_counsel":"string","economics":{},"notes":"string"},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters", { method: "POST", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", "Content-Type": "application/json", }, body: JSON.stringify({"name":"string","mode":"string","lead_counsel":"string","economics":{},"notes":"string"}), }); console.log(await resp.json());
● 201Anvil-Request-Id: req_01J…
201 Response
{
"matter_id": "string",
"name": "string",
"mode": "string",
"status": "string",
"organization_id": "string",
"lead_counsel": "string",
"economics": {},
"created_at": "2026-07-05T00:00:00Z"
}GET/v1/matters
List matters
Lists matters available to the caller, filtered by role and matter permission.
scope · matters:read
§ Query parameters
| Parameter | Type |
|---|---|
| limit optional · query | integer |
| starting_after optional · query | string |
| ending_before optional · query | string |
# sandbox: full surface, no production data curl https://api.kineticanvil.com/v1/matters \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.get(
"https://api.kineticanvil.com/v1/matters",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters", { method: "GET", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"object": "list",
"data": [
{
"matter_id": "string",
"name": "string",
"mode": "string",
"status": "string",
"organization_id": "string",
"lead_counsel": "string",
"economics": "string",
"created_at": "string"
}
],
"has_more": true
}GET/v1/matters/{matter_id}
Get matter
Gets a matter with summary status.
scope · matters:read
§ Path parameters
| Parameter | Type |
|---|---|
| matter_id required · path | string |
# sandbox: full surface, no production data curl https://api.kineticanvil.com/v1/matters/{matter_id} \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.get(
"https://api.kineticanvil.com/v1/matters/{matter_id}",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters/{matter_id}", { method: "GET", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"matter_id": "string",
"name": "string",
"mode": "string",
"status": "string",
"organization_id": "string",
"lead_counsel": "string",
"economics": {},
"created_at": "2026-07-05T00:00:00Z"
}PATCH/v1/matters/{matter_id}
Update matter
Updates matter metadata, mode, counsel, economics, and retention settings.
scope · matters:write
§ Path parameters
| Parameter | Type |
|---|---|
| matter_id required · path | string |
§ Body
| Field | Type |
|---|---|
| name optional | string |
| status optional | string |
| lead_counsel optional | string |
| economics optional | object |
| retention_policy optional | string |
# sandbox: full surface, no production data curl -X PATCH https://api.kineticanvil.com/v1/matters/{matter_id} \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05" \ -H "Content-Type: application/json" \ -d '{"name":"string","status":"string","lead_counsel":"string","economics":{},"retention_policy":"string"}'
import requests
resp = requests.patch(
"https://api.kineticanvil.com/v1/matters/{matter_id}",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
json={"name":"string","status":"string","lead_counsel":"string","economics":{},"retention_policy":"string"},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters/{matter_id}", { method: "PATCH", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", "Content-Type": "application/json", }, body: JSON.stringify({"name":"string","status":"string","lead_counsel":"string","economics":{},"retention_policy":"string"}), }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"matter_id": "string",
"name": "string",
"mode": "string",
"status": "string",
"organization_id": "string",
"lead_counsel": "string",
"economics": {},
"created_at": "2026-07-05T00:00:00Z"
}GET/v1/matters/{matter_id}/dashboard
Get matter dashboard
Returns command dashboard metrics for a matter.
scope · matters:read
§ Path parameters
| Parameter | Type |
|---|---|
| matter_id required · path | string |
# sandbox: full surface, no production data curl https://api.kineticanvil.com/v1/matters/{matter_id}/dashboard \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.get(
"https://api.kineticanvil.com/v1/matters/{matter_id}/dashboard",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters/{matter_id}/dashboard", { method: "GET", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"matter_id": "string",
"judgment_value": {
"amount": 0,
"currency": "string",
"valuation_time": "2026-07-05T00:00:00Z"
},
"known_crypto_exposure": {
"amount": 0,
"currency": "string",
"valuation_time": "2026-07-05T00:00:00Z"
},
"open_actions": 0,
"open_packets": 0,
"alerts": 0,
"recovery_events": 0,
"meridian_economics": {
"amount": 0,
"currency": "string",
"valuation_time": "2026-07-05T00:00:00Z"
}
}POST/v1/matters/{matter_id}/close
Close matter
Closes a matter as paid, settled, exhausted, stayed, or administratively closed.
scope · matters:write
§ Path parameters
| Parameter | Type |
|---|---|
| matter_id required · path | string |
§ Body
| Field | Type |
|---|---|
| reason optional | string |
| notes optional | string |
# sandbox: full surface, no production data curl -X POST https://api.kineticanvil.com/v1/matters/{matter_id}/close \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05" \ -H "Content-Type: application/json" \ -d '{"reason":"string","notes":"string"}'
import requests
resp = requests.post(
"https://api.kineticanvil.com/v1/matters/{matter_id}/close",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
json={"reason":"string","notes":"string"},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/matters/{matter_id}/close", { method: "POST", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", "Content-Type": "application/json", }, body: JSON.stringify({"reason":"string","notes":"string"}), }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"matter_id": "string",
"name": "string",
"mode": "string",
"status": "string",
"organization_id": "string",
"lead_counsel": "string",
"economics": {},
"created_at": "2026-07-05T00:00:00Z"
}