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

Control plane

Organizations

Organizations, users, roles, and API key scopes.

POST/v1/organizationsCreate organization
GET/v1/organizationsList organizations
GET/v1/organizations/{organization_id}Get organization
PATCH/v1/organizations/{organization_id}Update organization
POST/v1/organizations/{organization_id}/api-keysIssue API key
GET/v1/organizations/{organization_id}/api-keysList API keys
POST/v1/organizations/{organization_id}/usersInvite user
GET/v1/organizations/{organization_id}/usersList 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
FieldType
namestring
typestring
retention_policystring
# 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
ParameterType
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
ParameterType
organization_id
required · path
string
§ Body parameters
FieldType
namestring
retention_policystring
featuresarray
# 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
ParameterType
organization_id
required · path
string
§ Body parameters
FieldType
namestring
environmentstring
scopesarray
matter_idsarray
expires_atdate-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
ParameterType
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
ParameterType
organization_id
required · path
string
§ Body parameters
FieldType
emailstring
rolesarray
namestring
matter_idsarray
# 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
ParameterType
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
}