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

Operations & proof

Actions

Operator action queue and task state.

POST/v1/actionsCreate action
GET/v1/actionsList actions
GET/v1/actions/{action_id}Get action
PATCH/v1/actions/{action_id}Update action
POST/v1/actions/{action_id}/assignAssign action
POST/v1/actions/{action_id}/completeComplete action
GET/v1/actions/matters/{matter_id}List matter actions
POST/v1/actions

Create action

Creates operator/counsel/vendor/review action.

scope · actions:writeidempotent · Idempotency-Keygate · authority_requiredgate · sanctions_gate
§ Body parameters
FieldType
matter_idstring
typestring
titlestring
campaign_idstring
owner_idstring
prioritystring
due_atdate-time
linked_packet_idstring
Authority gate

This operation refuses to run without a granted authority model on the parent matter. A missing grant returns 403 authority_required. It never soft-passes.

# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/actions \
  -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",
  "type": "string",
  "title": "string",
  "campaign_id": "string",
  "owner_id": "string",
  "priority": "string",
  "due_at": "2026-06-01T12:00:00Z",
  "linked_packet_id": "string"
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/actions",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "type": "string",
        "title": "string",
        "campaign_id": "string",
        "owner_id": "string",
        "priority": "string",
        "due_at": "2026-06-01T12:00:00Z",
        "linked_packet_id": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions", {
  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",
    "type": "string",
    "title": "string",
    "campaign_id": "string",
    "owner_id": "string",
    "priority": "string",
    "due_at": "2026-06-01T12:00:00Z",
    "linked_packet_id": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "action_id": "string",
  "matter_id": "string",
  "campaign_id": "string",
  "type": "string",
  "title": "string",
  "owner_id": "string",
  "priority": "string",
  "status": "string"
}
GET/v1/actions

List actions

Lists actions filtered by owner, matter, campaign, status, and due date.

scope · actions:read
# sandbox: full surface, no production data
curl https://sandbox.api.microndelta.com/v1/actions \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11"
import requests

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/actions",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions", {
  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": [
    {
      "action_id": "...",
      "matter_id": "...",
      "campaign_id": "...",
      "type": "...",
      "title": "...",
      "owner_id": "...",
      "priority": "...",
      "status": "..."
    }
  ],
  "has_more": false
}
GET/v1/actions/{action_id}

Get action

Gets action details, requirements, status, and linked packet/evidence.

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

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/actions/act_91Lk",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions/act_91Lk", {
  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
{
  "action_id": "string",
  "matter_id": "string",
  "campaign_id": "string",
  "type": "string",
  "title": "string",
  "owner_id": "string",
  "priority": "string",
  "status": "string"
}
PATCH/v1/actions/{action_id}

Update action

Updates status, owner, priority, due date, and evidence requirements.

scope · actions:writeidempotent · Idempotency-Keygate · authority_requiredgate · sanctions_gate
§ Path parameters
ParameterType
action_id
required · path
string
§ Body parameters
FieldType
titlestring
statusstring
prioritystring
owner_idstring
due_atdate-time
Authority gate

This operation refuses to run without a granted authority model on the parent matter. A missing grant returns 403 authority_required. It never soft-passes.

# sandbox: full surface, no production data
curl -X PATCH https://sandbox.api.microndelta.com/v1/actions/act_91Lk \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "title": "string",
  "status": "string",
  "priority": "string",
  "owner_id": "string",
  "due_at": "2026-06-01T12:00:00Z"
}'
import requests

resp = requests.patch(
    "https://sandbox.api.microndelta.com/v1/actions/act_91Lk",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "title": "string",
        "status": "string",
        "priority": "string",
        "owner_id": "string",
        "due_at": "2026-06-01T12:00:00Z"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions/act_91Lk", {
  method: "PATCH",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "title": "string",
    "status": "string",
    "priority": "string",
    "owner_id": "string",
    "due_at": "2026-06-01T12:00:00Z"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "action_id": "string",
  "matter_id": "string",
  "campaign_id": "string",
  "type": "string",
  "title": "string",
  "owner_id": "string",
  "priority": "string",
  "status": "string"
}
POST/v1/actions/{action_id}/assign

Assign action

Assigns action to operator, counsel, analyst, vendor, or reviewer.

scope · actions:assignidempotent · Idempotency-Keygate · authority_requiredgate · sanctions_gate
§ Path parameters
ParameterType
action_id
required · path
string
§ Body parameters
FieldType
owner_idstring
notesstring
Authority gate

This operation refuses to run without a granted authority model on the parent matter. A missing grant returns 403 authority_required. It never soft-passes.

# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/actions/act_91Lk/assign \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "owner_id": "string",
  "notes": "string"
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/actions/act_91Lk/assign",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "owner_id": "string",
        "notes": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions/act_91Lk/assign", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "owner_id": "string",
    "notes": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "action_id": "string",
  "matter_id": "string",
  "campaign_id": "string",
  "type": "string",
  "title": "string",
  "owner_id": "string",
  "priority": "string",
  "status": "string"
}
POST/v1/actions/{action_id}/complete

Complete action

Completes action with completion evidence and audit event.

scope · actions:completeidempotent · Idempotency-Keygate · authority_requiredgate · sanctions_gate
§ Path parameters
ParameterType
action_id
required · path
string
§ Body parameters
FieldType
completion_notesstring
evidence_refsarray
Authority gate

This operation refuses to run without a granted authority model on the parent matter. A missing grant returns 403 authority_required. It never soft-passes.

# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/actions/act_91Lk/complete \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "completion_notes": "string",
  "evidence_refs": [
    {
      "source_id": "...",
      "source_type": "...",
      "title": "...",
      "uri": "...",
      "hash": "...",
      "chain_of_custody_id": "...",
      "admissibility_notes": "..."
    }
  ]
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/actions/act_91Lk/complete",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "completion_notes": "string",
        "evidence_refs": [
            {
                "source_id": "...",
                "source_type": "...",
                "title": "...",
                "uri": "...",
                "hash": "...",
                "chain_of_custody_id": "...",
                "admissibility_notes": "..."
            }
        ]
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/actions/act_91Lk/complete", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "completion_notes": "string",
    "evidence_refs": [
      {
        "source_id": "...",
        "source_type": "...",
        "title": "...",
        "uri": "...",
        "hash": "...",
        "chain_of_custody_id": "...",
        "admissibility_notes": "..."
      }
    ]
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "action_id": "string",
  "matter_id": "string",
  "campaign_id": "string",
  "type": "string",
  "title": "string",
  "owner_id": "string",
  "priority": "string",
  "status": "string"
}
GET/v1/actions/matters/{matter_id}

List matter actions

Lists actions for a matter.

scope · actions:read
§ Path parameters
ParameterType
matter_id
required · path
string
# sandbox: full surface, no production data
curl https://sandbox.api.microndelta.com/v1/actions/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/actions/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/actions/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
{
  "object": "list",
  "data": [
    {
      "action_id": "...",
      "matter_id": "...",
      "campaign_id": "...",
      "type": "...",
      "title": "...",
      "owner_id": "...",
      "priority": "...",
      "status": "..."
    }
  ],
  "has_more": false
}