KINETIC
KINETIC ANVILProtocol · API reference
Anvil-Version 2026-07-05 Start in the sandbox

Case spine

Matters

The root object. Every judgment, party, packet, job, and ledger entry hangs off a matter.

POST/v1/mattersCreate matter
GET/v1/mattersList matters
GET/v1/matters/{matter_id}Get matter
PATCH/v1/matters/{matter_id}Update matter
GET/v1/matters/{matter_id}/dashboardGet matter dashboard
POST/v1/matters/{matter_id}/closeClose matter
POST/v1/matters

Create matter

Creates a recovery matter and establishes the primary authority object container.

scope · matters:write
§ Body
FieldType
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
ParameterType
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
ParameterType
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
ParameterType
matter_id
required · path
string
§ Body
FieldType
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
ParameterType
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
ParameterType
matter_id
required · path
string
§ Body
FieldType
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"
}