Canon

13 — API Reference

API reference for the triage system's intake, classification, and staging endpoints.

All triage-related endpoints across the platform.

Knowledge Service

GET /v1/knowledge/inbox

List triage items awaiting human review.

Headers: x-tenant-id (required)
Query: limit (default 50, max 100), offset
Response: Items with approval_status IN ('pending', 'deferred')

PATCH /v1/knowledge/triage/:id

Human decision boundary for triage items.

Headers: x-tenant-id (required), x-user-id (required)
Body:

{
  "action": "approve|discard|defer",
  "reason": "Optional reason string"
}

Response:

{
  "success": true,
  "data": {
    "id": "triage-item-id",
    "approval_status": "approved|discarded|deferred",
    "action": "approve",
    "approved_by": "user-id",
    "approved_at": "2026-08-24T..."
  }
}

POST /v1/triage/session

Classify and stage a session for triage. Called by MCP Connector.

Headers: x-tenant-id (required)
Body:

{
  "session_id": "uuid",
  "summary": "Session summary text",
  "memories": [{"text": "optional memory excerpt"}]
}

Response:

{
  "success": true,
  "data": {
    "session_id": "uuid",
    "priority": "medium",
    "category": "general",
    "sentiment": "neutral",
    "reasoning": "...",
    "approval_status": "pending"
  }
}

GET /v1/triage/approved

List approved triage items for Memory Consolidator.

Headers: x-tenant-id (required)
Query: start_time, end_time, limit (default 100, max 500)
Response: Items with approval_status = 'approved'

POST /v1/triage/run

Manually trigger a triage consolidation cycle.

Headers: x-tenant-id (required)
Body:

{
  "type": "hourly|daily|weekly"
}

Response:

{
  "success": true,
  "data": {
    "status": "completed",
    "type": "hourly",
    "input_items": 15,
    "categories": ["sales", "engineering"],
    "consolidated_memories": 3
  }
}

GET /v1/triage/status

Get triage pipeline status.

Headers: x-tenant-id (required)
Response:

{
  "success": true,
  "data": {
    "tenant_id": "...",
    "total_sessions": 150,
    "total_consolidated_memories": 25,
    "recent_promotions_24h": 5,
    "triage_pipeline": ["extract", "validate", "dedup", "score", "classify", "promote"]
  }
}

IQ Hub (Knowledge Service)

POST /conversations/:id/archive

Archive a conversation and trigger memory extraction.

Headers: x-tenant-id, x-user-id (both required)
Query: extract_memories (default true)
Response:

{
  "success": true,
  "memories_extracted": 3,
  "memory_ids": ["uuid1", "uuid2", "uuid3"]
}

GET /sessions

List sessions for Memory Consolidator.

Headers: x-tenant-id (required)
Query: start_time, end_time, limit
Response:

{
  "items": [{"id": "...", "tenant_id": "...", "content": "..."}]
}

Memory Consolidator

POST /trigger/:type

Manually trigger consolidation.

Path: type = hourly | daily | weekly
Response:

{
  "status": "queued",
  "task": {"type": "hourly", "start_time": "...", "end_time": "..."}
}

GET /status

Get consolidator status including last run times and locks.