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

Attribution

Attribution

Wallet, entity, source, confidence, and attribution graph workflows.

POST/v1/attribution/wallets/importImport wallets
POST/v1/attribution/graphCreate attribution graph
POST/v1/attribution/claimsCreate attribution claim
GET/v1/attribution/graphs/{graph_id}Get attribution graph
POST/v1/attribution/confidence-scoreScore attribution
POST/v1/attribution/wallets/import

Import wallets

Imports wallet addresses with matter, evidence, source, role, and confidence context.

scope · attribution:writeidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
walletsarray
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/attribution/wallets/import \
  -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",
  "wallets": [
    {
      "wallet_id": "...",
      "address": "...",
      "network": "...",
      "role": "...",
      "confidence": "...",
      "source_refs": "..."
    }
  ]
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/attribution/wallets/import",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "wallets": [
            {
                "wallet_id": "...",
                "address": "...",
                "network": "...",
                "role": "...",
                "confidence": "...",
                "source_refs": "..."
            }
        ]
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/attribution/wallets/import", {
  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",
    "wallets": [
      {
        "wallet_id": "...",
        "address": "...",
        "network": "...",
        "role": "...",
        "confidence": "...",
        "source_refs": "..."
      }
    ]
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "imported": 123,
  "wallets": [
    {
      "wallet_id": "...",
      "address": "...",
      "network": "...",
      "role": "...",
      "confidence": "...",
      "source_refs": "..."
    }
  ]
}
POST/v1/attribution/graph

Create attribution graph

Creates or refreshes a source-linked graph of wallets, entities, exchanges, claims, contradictions, and confidence scores.

scope · attribution:graphidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
wallet_idsarray
include_contradictionsboolean
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/attribution/graph \
  -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",
  "wallet_ids": [
    "string"
  ],
  "include_contradictions": true
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/attribution/graph",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "wallet_ids": [
            "string"
        ],
        "include_contradictions": True
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/attribution/graph", {
  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",
    "wallet_ids": [
      "string"
    ],
    "include_contradictions": true
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "graph_id": "string",
  "matter_id": "string",
  "nodes": [
    {}
  ],
  "edges": [
    {}
  ],
  "claims": [
    {
      "claim_id": "...",
      "matter_id": "...",
      "subject": "...",
      "predicate": "...",
      "object": "...",
      "source_type": "...",
      "source_refs": "...",
      "confidence": "..."
    }
  ],
  "confidence_matrix": [
    {
      "claim_id": "...",
      "score": "...",
      "label": "...",
      "basis": "..."
    }
  ]
}
POST/v1/attribution/claims

Create attribution claim

Creates a single attribution claim with subject, predicate, object, source basis, confidence, and review state.

scope · attribution:writeidempotent · Idempotency-Key
§ Body parameters
FieldType
matter_idstring
subjectstring
predicatestring
objectstring
source_typestring
source_refsarray
confidencenumber
basisarray
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/attribution/claims \
  -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",
  "subject": "string",
  "predicate": "string",
  "object": "string",
  ... }'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/attribution/claims",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "matter_id": "string",
        "subject": "string",
        "predicate": "string",
        "object": "string"
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/attribution/claims", {
  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",
    "subject": "string",
    "predicate": "string",
    "object": "string"
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
201 Response
{
  "claim_id": "string",
  "matter_id": "string",
  "subject": "string",
  "predicate": "string",
  "object": "string",
  "source_type": "string",
  "source_refs": [
    {
      "source_id": "...",
      "source_type": "...",
      "title": "...",
      "uri": "...",
      "hash": "...",
      "chain_of_custody_id": "...",
      "admissibility_notes": "..."
    }
  ],
  "confidence": 123.45
}
GET/v1/attribution/graphs/{graph_id}

Get attribution graph

Gets an attribution graph and source manifest.

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

resp = requests.get(
    "https://sandbox.api.microndelta.com/v1/attribution/graphs/gra_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/attribution/graphs/gra_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
{
  "graph_id": "string",
  "matter_id": "string",
  "nodes": [
    {}
  ],
  "edges": [
    {}
  ],
  "claims": [
    {
      "claim_id": "...",
      "matter_id": "...",
      "subject": "...",
      "predicate": "...",
      "object": "...",
      "source_type": "...",
      "source_refs": "...",
      "confidence": "..."
    }
  ],
  "confidence_matrix": [
    {
      "claim_id": "...",
      "score": "...",
      "label": "...",
      "basis": "..."
    }
  ]
}
POST/v1/attribution/confidence-score

Score attribution

Scores attribution claims based on evidence hierarchy, corroboration, contradictions, source type, and review status.

scope · attribution:scoreidempotent · Idempotency-Key
§ Body parameters
FieldType
claim_idstring
evidence_tierstring
corroborationarray
contradictionsarray
# sandbox: full surface, no production data
curl -X POST https://sandbox.api.microndelta.com/v1/attribution/confidence-score \
  -H "Authorization: Bearer md_test_xxxxxxxxxxxxxxxx" \
  -H "MD-Version: 2026-06-11" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f8a-bd31" \
  -d '{
  "claim_id": "string",
  "evidence_tier": "string",
  "corroboration": [
    "string"
  ],
  "contradictions": [
    "string"
  ]
}'
import requests

resp = requests.post(
    "https://sandbox.api.microndelta.com/v1/attribution/confidence-score",
    headers={
        "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
        "MD-Version": "2026-06-11",
        "Idempotency-Key": "4f8a-bd31",
    },
    json={
        "claim_id": "string",
        "evidence_tier": "string",
        "corroboration": [
            "string"
        ],
        "contradictions": [
            "string"
        ]
    },
)
print(resp.json())
const resp = await fetch("https://sandbox.api.microndelta.com/v1/attribution/confidence-score", {
  method: "POST",
  headers: {
    "Authorization": "Bearer md_test_xxxxxxxxxxxxxxxx",
    "MD-Version": "2026-06-11",
    "Content-Type": "application/json",
    "Idempotency-Key": "4f8a-bd31",
  },
  body: JSON.stringify({
    "claim_id": "string",
    "evidence_tier": "string",
    "corroboration": [
      "string"
    ],
    "contradictions": [
      "string"
    ]
  }),
});
console.log(await resp.json());
● 200MD-Request-Id: req_01J…
200 Response
{
  "claim_id": "string",
  "score": 123.45,
  "label": "weak_signal",
  "basis": [
    "string"
  ]
}