KINETIC
KINETIC APIProtocol · API reference
MD-Version 2026-06-11 Request access

Operations & proof

Ledger

Recovery events, remittance events, waterfalI calculations.

POST/v1/ledger/recovery-eventsCreate recovery event
POST/v1/ledger/remittance-eventsCreate remittance event
GET/v1/ledger/matters/{matter_id}Get matter ledger
POST/v1/waterfall/calculateCalculate waterfall
GET/v1/waterfall/matters/{matter_id}Get matter waterfall
POST/v1/ledger/recovery-events

Create recovery event

Records frozen, blocked, seized, turned over, remitted, settled, or recovered value.

scope · ledger:writeidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
event_typestring
assetstring
gross_amountnumber
networkstring
usd_valuenumber
sourcestring
packet_idstring
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/ledger/recovery-events \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "matter_id": "string",
  "event_type": "frozen",
  "asset": "string",
  "gross_amount": 123.45,
  "network": "string",
  "usd_value": 123.45,
  "source": "string",
  "packet_id": "string"
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/ledger/recovery-events",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "event_type": "frozen",
        "asset": "string",
        "gross_amount": 123.45,
        "network": "string",
        "usd_value": 123.45,
        "source": "string",
        "packet_id": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/ledger/recovery-events", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "matter_id": "string",
    "event_type": "frozen",
    "asset": "string",
    "gross_amount": 123.45,
    "network": "string",
    "usd_value": 123.45,
    "source": "string",
    "packet_id": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "recovery_event_id": "string",
  "matter_id": "string",
  "event_type": "string",
  "asset": "string",
  "gross_amount": 123.45,
  "status": "string",
  "audit": {
    "request_id": "string",
    "actor_id": "string",
    "organization_id": "string",
    "matter_id": "string",
    "timestamp": "2026-06-01T12:00:00Z"
  }
}
POST/v1/ledger/remittance-events

Create remittance event

Records remittance to receiver, court registry, custodian, claimant, or waterfall account.

scope · ledger:writeidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
destinationstring
amountnumber
assetstring
waterfall_idstring
source_recovery_event_idstring
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/ledger/remittance-events \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "matter_id": "string",
  "destination": "string",
  "amount": 123.45,
  "asset": "string",
  "waterfall_id": "string",
  "source_recovery_event_id": "string"
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/ledger/remittance-events",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "destination": "string",
        "amount": 123.45,
        "asset": "string",
        "waterfall_id": "string",
        "source_recovery_event_id": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/ledger/remittance-events", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "matter_id": "string",
    "destination": "string",
    "amount": 123.45,
    "asset": "string",
    "waterfall_id": "string",
    "source_recovery_event_id": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "remittance_event_id": "string",
  "matter_id": "string",
  "destination": "string",
  "asset": "string",
  "amount": 123.45,
  "status": "string",
  "audit": {
    "request_id": "string",
    "actor_id": "string",
    "organization_id": "string",
    "matter_id": "string",
    "timestamp": "2026-06-01T12:00:00Z"
  }
}
GET/v1/ledger/matters/{matter_id}

Get matter ledger

Gets recovery/remittance/collection ledger for a matter.

scope · ledger:read
§ Path parameters
ParameterType
matter_id
required · path
string
# sandbox: full surface, no production data
curl https://sandbox.api.microndelta.com/v1/ledger/matters/mtr_4Fa1 \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11"
import requests

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/ledger/matters/mtr_4Fa1",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/ledger/matters/mtr_4Fa1", {
  method: "GET",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
  },
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "matter_id": "string",
  "recovery_events": [
    {
      "recovery_event_id": "...",
      "matter_id": "...",
      "event_type": "...",
      "asset": "...",
      "gross_amount": "...",
      "status": "...",
      "audit": "..."
    }
  ],
  "remittance_events": [
    {
      "remittance_event_id": "...",
      "matter_id": "...",
      "destination": "...",
      "asset": "...",
      "amount": "...",
      "status": "...",
      "audit": "..."
    }
  ],
  "total_recovered": {
    "amount": 123.45,
    "currency": "string",
    "valuation_time": "2026-06-01T12:00:00Z"
  }
}
POST/v1/waterfall/calculate

Calculate waterfall

Calculates costs, counsel fees, Meridian economics, claimant distributions, holdbacks, and remittance constraints.

scope · waterfall:calculateidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
recovery_event_idsarray
costsobject
meridian_percentagenumber
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/waterfall/calculate \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "matter_id": "string",
  "recovery_event_ids": [
    "string"
  ],
  "costs": {},
  "meridian_percentage": 123.45
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/waterfall/calculate",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "recovery_event_ids": [
            "string"
        ],
        "costs": {},
        "meridian_percentage": 123.45
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/waterfall/calculate", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "matter_id": "string",
    "recovery_event_ids": [
      "string"
    ],
    "costs": {},
    "meridian_percentage": 123.45
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "waterfall_id": "string",
  "matter_id": "string",
  "gross_recovered": {
    "amount": 123.45,
    "currency": "string",
    "valuation_time": "2026-06-01T12:00:00Z"
  },
  "costs": {},
  "meridian_economics": {
    "amount": 123.45,
    "currency": "string",
    "valuation_time": "2026-06-01T12:00:00Z"
  },
  "claimant_distributions": [
    {
      "claimant_id": "string",
      "amount": 123.45
    }
  ],
  "holdbacks": [
    {}
  ],
  "review_state": {
    "review_required": true,
    "review_status": "not_required",
    "review_owner": "string",
    "review_notes": "string"
  }
}
GET/v1/waterfall/matters/{matter_id}

Get matter waterfall

Gets current matter economics and distribution waterfall.

scope · waterfall:read
§ Path parameters
ParameterType
matter_id
required · path
string
# sandbox: full surface, no production data
curl https://sandbox.api.microndelta.com/v1/waterfall/matters/mtr_4Fa1 \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11"
import requests

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/waterfall/matters/mtr_4Fa1",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/waterfall/matters/mtr_4Fa1", {
  method: "GET",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
  },
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "waterfall_id": "string",
  "matter_id": "string",
  "gross_recovered": {
    "amount": 123.45,
    "currency": "string",
    "valuation_time": "2026-06-01T12:00:00Z"
  },
  "costs": {},
  "meridian_economics": {
    "amount": 123.45,
    "currency": "string",
    "valuation_time": "2026-06-01T12:00:00Z"
  },
  "claimant_distributions": [
    {
      "claimant_id": "string",
      "amount": 123.45
    }
  ],
  "holdbacks": [
    {}
  ],
  "review_state": {
    "review_required": true,
    "review_status": "not_required",
    "review_owner": "string",
    "review_notes": "string"
  }
}