All endpoints require X-HM8-Admin-Token header. Paths below are what you type into the browser at admin.hm8.biz; Caddy rewrites them to /api/v1/platform/... on the way to the API. No UI yet — JSON only.
GET /stats — workspaces / users / sources / jobs-by-status countsGET /workspaces — list all workspaces with member countsGET /workspaces/:id — single workspace: members, source count, rate limitsGET /jobs/failed?limit=50 — recent failed processing jobsGET /rag/inconsistency-report — sources with zero source_chunks rows, split by index_status. The readyButEmpty bucket is the canary: should always be 0 after prevention guards land.POST /rag/reingest-empty — re-queue every source in readyButEmpty. Safe to re-run.GET /rag/provider-stats — counters since api boot for synthesis (Vertex vs Cohere fallback) and rerank (Cohere vs skip vs fail).audit_log)PATCH /workspaces/:id/rate-limits — body: {rpmLimit, dailyRequestLimit, dailyTokenLimit}PATCH /workspaces/:id/timezone — body: {timezone} (IANA, e.g. Asia/Yerevan)POST /rag/reingest-all — fan out reingest jobs for every source with index_status='queued' across all workspaces. Used after the gemini-embedding-2 dim cutover migration.