● Getting started
First call in five minutes
1. Get a sandbox key
Keys are issued per organization, scoped per operation family. Sandbox keys are prefixed md_test_ and run the full protocol surface against synthetic data on sandbox.api.microndelta.com. Production keys (md_live_) are issued after onboarding review. Request access → Your sandbox key arrives with your organization provisioning.
2. Create a matter
Every judgment lives on a matter (the case container that carries authority, economics, and the audit chain).
curl -X POST https://sandbox.api.microndelta.com/v1/matters \
-H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
-H "MD-Version: 2026-06-11" \
-H "Content-Type: application/json" \
-d '{
"name": "Atlas v. Halcyon",
"mode": "enforcement",
"lead_counsel": "Calloway & Marsh LLP"
}'
import requests
resp = requests.post(
"https://sandbox.api.microndelta.com/v1/matters",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
},
json={
"name": "Atlas v. Halcyon",
"mode": "enforcement",
"lead_counsel": "Calloway & Marsh LLP",
},
)
matter = resp.json()
print(matter["id"]) # mtr_...
const resp = await fetch("https://sandbox.api.microndelta.com/v1/matters", {
method: "POST",
headers: {
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Atlas v. Halcyon",
mode: "enforcement",
lead_counsel: "Calloway & Marsh LLP",
}),
});
const matter = await resp.json();
console.log(matter.id); // mtr_...
The response returns a matter_id (mtr_…). Use it in the next step.
3. Intake the judgment
curl -X POST https://sandbox.api.microndelta.com/v1/judgments/intake \
-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": "mtr_xxxxxxxx",
"court": "SDNY",
"case_number": "1:26-cv-04412",
"jurisdiction": "US-NY",
"creditor": "Atlas Recovery Fund LP",
"debtor": "Halcyon Digital Holdings Ltd",
"amount": { "amount": 12400000, "currency": "USD" },
"date_entered": "2026-05-28"
}'
import requests
resp = requests.post(
"https://sandbox.api.microndelta.com/v1/judgments/intake",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
},
json={
"matter_id": "mtr_xxxxxxxx",
"court": "SDNY",
"case_number": "1:26-cv-04412",
"jurisdiction": "US-NY",
"creditor": "Atlas Recovery Fund LP",
"debtor": "Halcyon Digital Holdings Ltd",
"amount": {"amount": 12400000, "currency": "USD"},
"date_entered": "2026-05-28",
},
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/judgments/intake", {
method: "POST",
headers: {
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
"Content-Type": "application/json",
},
body: JSON.stringify({
matter_id: "mtr_xxxxxxxx",
court: "SDNY",
case_number: "1:26-cv-04412",
jurisdiction: "US-NY",
creditor: "Atlas Recovery Fund LP",
debtor: "Halcyon Digital Holdings Ltd",
amount: { amount: 12400000, currency: "USD" },
date_entered: "2026-05-28",
}),
});
console.log(await resp.json());
4. Validate readiness
POST /v1/judgments/{judgment_id}/validate runs validation and returns ready true/false with every failing gate named. A pass emits judgment.validated to your webhook endpoint.
5. Walk the Spine
From there the case moves station to station: matters, graph, attribution, enforcement, gates, actions, ledger, reports, audit. Every response carries an audit_ref. The proof chain comes built in. See the Spine →
Tools
Prefer a client? Import the full protocol as a collection: Download the Postman collection ↓ (108 operations, 20 folders). Set {{api_key}} to your sandbox key and {{base_url}} defaults to the sandbox host. Or try calls in the browser with the live API explorer →.