API Reference

REST API Reference

Ingest logs, verify data integrity, manage incidents, and review human authorization workflows through the HTTPS API.

Auth

X-API-Key header

Format

JSON request/response

Base pattern

/api/v1/...

POST/api/v1/logs

Ingest log

Submit a single audit event payload to the secure ledger. Returns the generated UUID.

Request

Headers:
X-API-Key: <your_api_key>

Body (JSON):
{
  "event_type": "string",
  "data": { ... },
  "source": "string (optional)",
  "trace_id": "string (UUID, optional)",
  "session_id": "string (UUID, optional)"
}

Response · 200 OK

{
  "log_id": "string (UUID)",
  "company_id": "string",
  "event_type": "string",
  "created_at": "string (ISO-8601)"
}
POST/api/v1/logs/batch

Ingest logs batch

Submit a batch of events in one API request.

Request

Body (JSON):
{
  "logs": [
    { "event_type": "transaction", "data": { ... } }
  ]
}

Response · 200 OK

{
  "ingested": 1,
  "log_ids": ["string (UUID)"]
}
GET/api/v1/logs/{log_id}/verify

Verify log chain

Check chain validation hashes and signature validity for a specific log ID.

Response · 200 OK

{
  "log_id": "string (UUID)",
  "hash": "string (hex)",
  "chain_valid": true,
  "signature_valid": true,
  "verified_at": "string (ISO-8601)"
}
POST/api/v1/forensics/replays

Create forensic replay

Create a forensic replay session for a given trace to build a timeline, causal graph, or staleness assessment.

Request

Body (JSON):
{
  "trace_id": "string (UUID)",
  "token_id": "string (optional)",
  "metadata": {}
}

Response · 200 OK

{
  "id": "string (UUID)",
  "company_id": "string",
  "trace_id": "string (UUID)",
  "created_at": "string (ISO-8601)"
}
GET/api/v1/forensics/replays/{replay_session_id}/root-cause

Get replay root cause

Run heuristics over the replay session timeline to identify anomalies such as stale context or policy denials.

Response · 200 OK

{
  "detected": true,
  "root_cause_type": "STALE_CONTEXT",
  "description": "Execution relied on stale data source at path 'market.feed'.",
  "confidence": 0.95,
  "remediation": "Refresh the stale resource before executing."
}
POST/api/v1/hitl/reject

Submit human review rejection

Audit human rejection overrides.

Request

Body (JSON):
{
  "reviewer": "reviewer@company.com",
  "rejection_reason": "Limit exceeded",
  "decision_id": "string (UUID, optional)"
}