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

Case spine

Relationships

Exchange, issuer, counsel, vendor, and counterparty relationships.

POST/v1/relationshipsCreate relationship
GET/v1/relationshipsList relationships
GET/v1/relationships/{relationship_id}Get relationship
PATCH/v1/relationships/{relationship_id}Update relationship
POST/v1/relationships/{relationship_id}/contact-logAdd contact log
GET/v1/relationships/counterparties/{counterparty_id}Get counterparty relationships
POST/v1/relationships

Create relationship

Creates an exchange, issuer, counsel, vendor, LE-only channel, receiver, special master, claimant, or counterparty relationship object.

scope · relationships:writeidempotent · Idempotency-Key
§ Body parameters
FieldType
counterparty_typestring
counterparty_namestring
channel_typestring
usable_by_meridianboolean
usable_by_counselboolean
usable_by_law_enforcementboolean
authorized_submitter_requiredboolean
packet_types_supportedarray
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/relationships \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "counterparty_type": "string",
  "counterparty_name": "string",
  "channel_type": "string",
  "usable_by_meridian": true,
  "usable_by_counsel": true,
  "usable_by_law_enforcement": true,
  "authorized_submitter_required": true,
  "packet_types_supported": [
    "string"
  ]
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/relationships",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "counterparty_type": "string",
        "counterparty_name": "string",
        "channel_type": "string",
        "usable_by_meridian": True,
        "usable_by_counsel": True,
        "usable_by_law_enforcement": True,
        "authorized_submitter_required": True,
        "packet_types_supported": [
            "string"
        ]
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/relationships", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "counterparty_type": "string",
    "counterparty_name": "string",
    "channel_type": "string",
    "usable_by_meridian": true,
    "usable_by_counsel": true,
    "usable_by_law_enforcement": true,
    "authorized_submitter_required": true,
    "packet_types_supported": [
      "string"
    ]
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "relationship_id": "string",
  "counterparty_type": "exchange",
  "counterparty_name": "string",
  "channel_type": "string",
  "usable_by_meridian": true,
  "usable_by_counsel": true,
  "usable_by_law_enforcement": true,
  "authorized_submitter_required": true
}
GET/v1/relationships

List relationships

Lists relationship registry objects.

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

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/relationships",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/relationships", {
  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": [
    {
      "relationship_id": "...",
      "counterparty_type": "...",
      "counterparty_name": "...",
      "channel_type": "...",
      "usable_by_meridian": "...",
      "usable_by_counsel": "...",
      "usable_by_law_enforcement": "...",
      "authorized_submitter_required": "..."
    }
  ],
  "has_more": false
}
GET/v1/relationships/{relationship_id}

Get relationship

Gets channel type, allowed users, packet support, and contact history.

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

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/relationships/rel_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/relationships/rel_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
{
  "relationship_id": "string",
  "counterparty_type": "exchange",
  "counterparty_name": "string",
  "channel_type": "string",
  "usable_by_meridian": true,
  "usable_by_counsel": true,
  "usable_by_law_enforcement": true,
  "authorized_submitter_required": true
}
PATCH/v1/relationships/{relationship_id}

Update relationship

Updates channel metadata, allowed use, and risk levels.

scope · relationships:writeidempotent · Idempotency-Key
§ Path parameters
ParameterType
relationship_id
required · path
string
§ Body parameters
FieldType
channel_typestring
packet_types_supportedarray
risk_levelstring
notesstring
# sandbox: full surface, no production data
curl -X PATCH https://sandbox.api.microndelta.com/v1/relationships/rel_91Lk \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "channel_type": "string",
  "packet_types_supported": [
    "string"
  ],
  "risk_level": "string",
  "notes": "string"
}'
import requests

resp = requests.patch(
    "https://sandbox.api.microndelta.com/v1/relationships/rel_91Lk",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "channel_type": "string",
        "packet_types_supported": [
            "string"
        ],
        "risk_level": "string",
        "notes": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/relationships/rel_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({
    "channel_type": "string",
    "packet_types_supported": [
      "string"
    ],
    "risk_level": "string",
    "notes": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "relationship_id": "string",
  "counterparty_type": "exchange",
  "counterparty_name": "string",
  "channel_type": "string",
  "usable_by_meridian": true,
  "usable_by_counsel": true,
  "usable_by_law_enforcement": true,
  "authorized_submitter_required": true
}
POST/v1/relationships/{relationship_id}/contact-log

Add contact log

Records a relationship contact attempt, authorized sender, packet ID, outcome, and response state.

scope · relationships:writeidempotent · Idempotency-Key
§ Path parameters
ParameterType
relationship_id
required · path
string
§ Body parameters
FieldType
matter_idstring
authorized_senderstring
contact_typestring
packet_idstring
outcomestring
notesstring
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/relationships/rel_91Lk/contact-log \
  -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",
  "authorized_sender": "string",
  "contact_type": "string",
  "packet_id": "string",
  "outcome": "string",
  "notes": "string"
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/relationships/rel_91Lk/contact-log",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "authorized_sender": "string",
        "contact_type": "string",
        "packet_id": "string",
        "outcome": "string",
        "notes": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/relationships/rel_91Lk/contact-log", {
  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",
    "authorized_sender": "string",
    "contact_type": "string",
    "packet_id": "string",
    "outcome": "string",
    "notes": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "contact_log_id": "string",
  "relationship_id": "string",
  "matter_id": "string",
  "authorized_sender": "string",
  "outcome": "string",
  "created_at": "2026-06-01T12:00:00Z"
}
GET/v1/relationships/counterparties/{counterparty_id}

Get counterparty relationships

Gets all relationships, packets, and response history for an exchange, issuer, vendor, or other counterparty.

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

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/relationships/counterparties/cou_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/relationships/counterparties/cou_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
{
  "object": "list",
  "data": [
    {
      "relationship_id": "...",
      "counterparty_type": "...",
      "counterparty_name": "...",
      "channel_type": "...",
      "usable_by_meridian": "...",
      "usable_by_counsel": "...",
      "usable_by_law_enforcement": "...",
      "authorized_submitter_required": "..."
    }
  ],
  "has_more": false
}