● Control plane
Organizations
Organizations, users, roles, and API key scopes.
| POST | /v1/organizations | Create organization |
| GET | /v1/organizations | List organizations |
| GET | /v1/organizations/{organization_id} | Get organization |
| PATCH | /v1/organizations/{organization_id} | Update organization |
| POST | /v1/organizations/{organization_id}/api-keys | Issue API key |
| GET | /v1/organizations/{organization_id}/api-keys | List API keys |
| POST | /v1/organizations/{organization_id}/users | Invite user |
| GET | /v1/organizations/{organization_id}/users | List users |
POST/v1/organizations
Create organization
Creates an organization tenant for internal, counsel, recovery operator, or partner use.
scope · org:writeidempotent · Idempotency-Key
§ Body parameters
| Field | Type |
|---|---|
| name | string |
| type | string |
| retention_policy | string |
# sandbox: full surface, no production data curl -X POST https://sandbox.api.microndelta.com/v1/organizations \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 4f8a-bd31" \ -d '{ "name": "string", "type": "string", "retention_policy": "string" }'
import requests
resp = requests.post(
"https://sandbox.api.microndelta.com/v1/organizations",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
},
json={
"name": "string",
"type": "string",
"retention_policy": "string"
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations", { method: "POST", headers: { "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx", "MD-Version": "2026-06-11", "Content-Type": "application/json", "Idempotency-Key": "4f8a-bd31", }, body: JSON.stringify({ "name": "string", "type": "string", "retention_policy": "string" }), }); console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
"organization_id": "string",
"name": "string",
"type": "meridian_internal",
"created_at": "2026-06-01T12:00:00Z",
"features": [
"string"
]
}GET/v1/organizations
List organizations
Lists organizations accessible to the caller.
scope · org:read
# sandbox: full surface, no production data curl https://sandbox.api.microndelta.com/v1/organizations \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11"
import requests
resp = requests.get(
"https://sandbox.api.microndelta.com/v1/organizations",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations", { 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
{
"object": "list",
"data": [
{
"organization_id": "...",
"name": "...",
"type": "...",
"created_at": "...",
"features": "..."
}
],
"has_more": false
}GET/v1/organizations/{organization_id}
Get organization
Gets an organization and feature flags.
scope · org:read
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
# sandbox: full surface, no production data curl https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9 \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11"
import requests
resp = requests.get(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9", { 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
{
"organization_id": "string",
"name": "string",
"type": "meridian_internal",
"created_at": "2026-06-01T12:00:00Z",
"features": [
"string"
]
}PATCH/v1/organizations/{organization_id}
Update organization
Updates organization settings and retention defaults.
scope · org:writeidempotent · Idempotency-Key
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
§ Body parameters
| Field | Type |
|---|---|
| name | string |
| retention_policy | string |
| features | array |
# sandbox: full surface, no production data curl -X PATCH https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9 \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 4f8a-bd31" \ -d '{ "name": "string", "retention_policy": "string", "features": [ "string" ] }'
import requests
resp = requests.patch(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
},
json={
"name": "string",
"retention_policy": "string",
"features": [
"string"
]
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9", { method: "PATCH", headers: { "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx", "MD-Version": "2026-06-11", "Content-Type": "application/json", "Idempotency-Key": "4f8a-bd31", }, body: JSON.stringify({ "name": "string", "retention_policy": "string", "features": [ "string" ] }), }); console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
"organization_id": "string",
"name": "string",
"type": "meridian_internal",
"created_at": "2026-06-01T12:00:00Z",
"features": [
"string"
]
}POST/v1/organizations/{organization_id}/api-keys
Issue API key
Issues a scoped API key for sandbox or approved production workflows.
scope · keys:writeidempotent · Idempotency-Key
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
§ Body parameters
| Field | Type |
|---|---|
| name | string |
| environment | string |
| scopes | array |
| matter_ids | array |
| expires_at | date-time |
# sandbox: full surface, no production data curl -X POST https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 4f8a-bd31" \ -d '{ "name": "string", "environment": "sandbox", "scopes": [ "string" ], "matter_ids": [ "string" ], "expires_at": "2026-06-01T12:00:00Z" }'
import requests
resp = requests.post(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
},
json={
"name": "string",
"environment": "sandbox",
"scopes": [
"string"
],
"matter_ids": [
"string"
],
"expires_at": "2026-06-01T12:00:00Z"
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys", { method: "POST", headers: { "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx", "MD-Version": "2026-06-11", "Content-Type": "application/json", "Idempotency-Key": "4f8a-bd31", }, body: JSON.stringify({ "name": "string", "environment": "sandbox", "scopes": [ "string" ], "matter_ids": [ "string" ], "expires_at": "2026-06-01T12:00:00Z" }), }); console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
"key_id": "string",
"secret_once": "string",
"environment": "string",
"scopes": [
"string"
],
"created_at": "2026-06-01T12:00:00Z"
}GET/v1/organizations/{organization_id}/api-keys
List API keys
Lists API keys and status metadata without revealing secret material.
scope · keys:read
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
# sandbox: full surface, no production data curl https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11"
import requests
resp = requests.get(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/api-keys", { 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
{
"object": "list",
"data": [
{
"key_id": "string",
"name": "string",
"environment": "string",
"scopes": [
"..."
],
"status": "string"
}
],
"has_more": false
}POST/v1/organizations/{organization_id}/users
Invite user
Invites a user and assigns role/matter permissions.
scope · users:writeidempotent · Idempotency-Key
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
§ Body parameters
| Field | Type |
|---|---|
| string | |
| roles | array |
| name | string |
| matter_ids | array |
# sandbox: full surface, no production data curl -X POST https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 4f8a-bd31" \ -d '{ "email": "string", "roles": [ "string" ], "name": "string", "matter_ids": [ "string" ] }'
import requests
resp = requests.post(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
"Idempotency-Key": "4f8a-bd31",
},
json={
"email": "string",
"roles": [
"string"
],
"name": "string",
"matter_ids": [
"string"
]
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users", { method: "POST", headers: { "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx", "MD-Version": "2026-06-11", "Content-Type": "application/json", "Idempotency-Key": "4f8a-bd31", }, body: JSON.stringify({ "email": "string", "roles": [ "string" ], "name": "string", "matter_ids": [ "string" ] }), }); console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
"user_id": "string",
"email": "string",
"name": "string",
"roles": [
"string"
],
"matter_ids": [
"string"
]
}GET/v1/organizations/{organization_id}/users
List users
Lists users in an organization.
scope · users:read
§ Path parameters
| Parameter | Type |
|---|---|
| organization_id required · path | string |
# sandbox: full surface, no production data curl https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users \ -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \ -H "MD-Version: 2026-06-11"
import requests
resp = requests.get(
"https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users",
headers={
"Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
"MD-Version": "2026-06-11",
},
)
print(resp.json())const resp = await fetch("https://sandbox.api.microndelta.com/v1/organizations/org_2Xc9/users", { 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
{
"object": "list",
"data": [
{
"user_id": "...",
"email": "...",
"name": "...",
"roles": "...",
"matter_ids": "..."
}
],
"has_more": false
}