POST /v1/signup
Govern ingress and egressInspect capture channels, egress policy, opaque payload posture, compile targets, and exports.GET /v1/account/api-control-center
Export the machine contractUse the generated OpenAPI and route manifest as CI inputs instead of trusting hand-written docs.GET /openapi.json
Verify claim limitsRead the readiness ledger before making benchmark, package, certification, or adoption claims.GET /product-readiness-closeout.json
Need the guided path? Start at /docs#quickstart. Need the tenant console? Open /account/api-control-center. This page is the exhaustive endpoint catalog generated from source.
929 wired routes · 604 reference-ready · 325 source-indexed · 214 groups · generated 2026-05-20 · source src/router.js
Source-to-proof API runbook
Use this sequence when checking whether the backend and public site describe the same product. It starts with a tenant, moves live traffic through the gateway, applies enterprise controls, compiles behavior, then exports verifiable proof.
POST /v1/signupReturns the first workspace envelope, selected plan, API key once, and control-center destination.
POST /v1/route/chat/completionsOpenAI-compatible traffic enters the capture and confidence-aware routing path.
GET /v1/account/api-control-centerOperators declare sources, policy, egress, redaction, routing, eval gates, targets, and exports.
POST /v1/compileStable behavior turns into artifacts, manifests, hashes, receipts, and runtime target metadata.
GET /v1/evidence/readinessRead receipts and readiness gates before promoting production-final claims.
Base URL & auth
Start with the guided setup at /docs#quickstart, then keep this API reference open for exact endpoints and payloads. Runtime behavior and acceptance gates are covered from /docs and /platform.
Local proxy: http://localhost:8787. Hosted: https://kolm.ai. Self-hosted enterprise: your domain.
Public routes (such as /health, /v1/loop/try, /v1/anon/bootstrap) need no auth header. Every other /v1/* route accepts either:
Authorization: Bearer <key>x-api-key: <key>(the alias used by Anthropic-style clients)
export KOLM_BASE=https://kolm.ai
export KOLM_KEY=kolm-demo-key
curl -s "$KOLM_BASE/health" | jq .
curl -s "$KOLM_BASE/v1/lake/stats" -H "Authorization: Bearer $KOLM_KEY"
Groups
- Ab 5
- Ab Tests 7
- Account 43
- Active Learning 1
- Admin 12
- Agents 6
- Airgap 9
- Anonymous bootstrap 2
- Approvals 6
- Artifact 3
- Artifacts 7
- Assistant 3
- Assurance 2
- Audio 8
- Audit 29
- Auth 4
- Automations 6
- Autopilot 10
- Bakeoff 1
- Bakeoffs 2
- Bench 5
- Billing 6
- Bridges 6
- Build 4
- Builder 3
- Builds 1
- Bundle 1
- Buyer 2
- Bring-your-own-cloud 7
- Capability 2
- Capture 19
- Captures 8
- Carbon 1
- Cc 3
- Changelog 1
- Chargeback 2
- OpenAI-compatible chat 1
- Cid 1
- Client Error 1
- Cloud 10
- Compile 10
- Compliance 8
- Compose 1
- Concepts 5
- Connectors 2
- Conversations 4
- Copyright 2
- Credential 1
- Datasets 4
- Deploy 6
- Device 4
- Devices 18
- Diagnose 2
- Distill 11
- Draft 1
- Drift 8
- Drift Alert 4
- Embed 1
- Embeddings 1
- Evaluation 11
- Evidence 5
- Experts 1
- Export 1
- Exports 3
- Failure Modes 3
- Federated 13
- Fit 1
- Fl 4
- Fleet 5
- Free 3
- Gateway 7
- Gemini 2
- Govern 18
- Groups 5
- Hardware 1
- Health 1
- Hub 4
- Import 2
- Inspect 1
- Integrations 4
- Intent 2
- Ir 4
- Jobs 1
- Keys 5
- Kolmbench 4
- Kscore 1
- Label Queue 4
- Labels 5
- Lake 9
- Lang 3
- Lead 2
- Library 1
- Lineage 2
- Lingual 5
- Long Context 2
- Value-loop 1
- Marketplace 20
- Mcp 3
- Me 1
- Media 3
- Memory 1
- Merge 2
- Anthropic-compatible messages 1
- Meta 3
- Metrics 2
- Migrate 2
- Mit 2
- Model Card 3
- Models 11
- Moderations 1
- Multimodal 9
- Namespaces 8
- Nl 1
- Notifications 12
- Numeric 3
- OAuth 3
- Openrouter 2
- Opportunities 5
- Orgs 9
- Packages 3
- Passport 1
- Pextract 3
- Pipeline 7
- Pipelines 6
- Plans 1
- Playground 1
- Plugins 3
- Poisoning 4
- Pricing 3
- Privacy 7
- Procurement 2
- Product 3
- Public 5
- Publish 1
- Quality 1
- Quantization 3
- Quantize 1
- Ready 1
- Recall 3
- Receipts 4
- Recipes 10
- Redact 1
- Redteam 4
- Reg 8
- Region 3
- Registry 6
- Replay 2
- Residency 4
- OpenAI Responses 1
- Route 2
- Routing 1
- Run 1
- Runtime 9
- Sales 1
- Savings 6
- Sbom 3
- Scim 13
- Search 1
- Seasonal 3
- Security 4
- Seeds 2
- Serve 2
- Session 2
- Sign in 1
- Sign out 1
- Sign up 1
- Sigstore 3
- Simulation 3
- Simulations 4
- Sla 3
- Sneakernet 2
- Spec 4
- Spec Decode 2
- Specialists 7
- Speculative 3
- Sso 1
- Staleness 3
- Stat Sig 2
- Status 4
- Storage 4
- Streaming 2
- Stripe 1
- Sync 6
- Synthesis 3
- Synthetic 6
- System 9
- Target Profiles 2
- Teacher 2
- Teacher Versions 2
- Team 13
- Teams 20
- Telemetry 1
- Test Device 1
- Test Quants 1
- Trace 10
- Training 2
- Transparency Log 6
- Trust 6
- Tunnel 3
- Tunnels 2
- Usage 1
- Verified inference 1
- Verify 3
- Verticals 4
- Video 5
- Vision 3
- Vlm 2
- Vlm Distill 2
- Webhooks 6
- Whoami 1
- Workflows 1
- Wrap 1
- Xlang 4
- Yaml 1
Legacy anchor compatibility
The previous hand-written /docs/api used short anchor names. They are preserved as anchor aliases below so external links keep working:
#chat → OpenAI-compatible chat group.
#messages → Anthropic-compatible messages group.
#capture, #lake, #optimize, #datasets, #labels, #synth, #sim, #bakeoff, #training, #runtime, #devices, #sync, #team jump to the matching group below.
Ab (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/ab/configure reference-ready
Body: { namespace, version_a, version_b, split?, idempotency_key? }
curl -X POST "https://kolm.ai/v1/ab/configure" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab/feedback reference-ready
thumb:'up'|'down'?, comment?, ab_test_id? }
Full comment
thumb:'up'|'down'?, comment?, ab_test_id? } Persists a row to the event-store under workflow_id=AB_FEEDBACK_WORKFLOW so ab-metrics.aggregate() can read it. Also fans the row to the W720 self-improvement queue when deps.selfImprovement.enqueue is wired.
curl -X POST "https://kolm.ai/v1/ab/feedback" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/ab/metrics source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/ab/metrics" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab/promote reference-ready
Body: { namespace, force?:boolean, thresholds?:{...} }
Full comment
Body: { namespace, force?:boolean, thresholds?:{...} } When `force=true` we bypass the decide() gate and promote variant_b immediately. Otherwise we run the full evaluate() pipeline and only promote when decide() returns 'promote'.
curl -X POST "https://kolm.ai/v1/ab/promote" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/ab/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/ab/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Ab Tests (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/ab-tests source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/ab-tests" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/ab-tests/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/ab-tests/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/ab-tests/:id/assignments source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/ab-tests/<id>/assignments" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab-tests/:id/promote source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/ab-tests/<id>/promote" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab-tests/:id/rollback source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/ab-tests/<id>/rollback" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab-tests/:id/stop source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/ab-tests/<id>/stop" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ab-tests/create reference-ready
Returns: {ok, ab_test_id, request_hash, arm, frozen, reason, version}
Full comment
Returns: {ok, ab_test_id, request_hash, arm, frozen, reason, version} Auth-gated via req.tenant_record. Tenant fence forced from session, never from request body. Distinct prefix /v1/ab-tests/* so parallel agents on cannot collide on these route paths.
curl -X POST "https://kolm.ai/v1/ab-tests/create" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Account (43)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/account reference-ready
Account
curl -X GET "https://kolm.ai/v1/account" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/api-control-center source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/account/api-control-center" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/api-control-center/adapter-manifests/validate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/api-control-center/adapter-manifests/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/api-control-center/events reference-ready
Enterprise control-center intake alias. This exposes the advertised
Full comment
Enterprise control-center intake alias. This exposes the advertised canonical event envelope directly from the account surface.
curl -X POST "https://kolm.ai/v1/account/api-control-center/events" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/api-control-center/exports source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/account/api-control-center/exports" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/api-control-center/exports source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/api-control-center/exports" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/api-control-center/exports/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/account/api-control-center/exports/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/audit-log reference-ready
/v1/account/audit-log surfaces the audit ledger for the calling
Full comment
/v1/account/audit-log surfaces the audit ledger for the calling tenant. The audit-log.html page renders {entries:[{at,actor,op,payload}]}. added ?format=csv (defaults to json) so the page's export button and `kolm audit --format csv` CLI verb hit the same route. Also added ?since=<iso|epoch> filter so the CLI can scope to a recent window.
curl -X GET "https://kolm.ai/v1/account/audit-log" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/audit-log/verify reference-ready
tenant's audit ledger (no body). Returns { ok, verified, chain_length,
Full comment
tenant's audit ledger (no body). Returns { ok, verified, chain_length, broken_at? } so the audit-log page can render a green/red state.
curl -X GET "https://kolm.ai/v1/account/audit-log/verify" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/audit/retention source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/account/audit/retention" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/billing reference-ready
Billing summary the account-billing page reads: plan, status, period, credit
Full comment
Billing summary the account-billing page reads: plan, status, period, credit balance, tax fields, Full Readiness entitlements, continuous subscription, recent invoices, dunning state, and whether the portal can be opened.
curl -X GET "https://kolm.ai/v1/account/billing" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/account/billing reference-ready
M13 - capture VAT number / tax id (+ optional company + country) for the
Full comment
M13 - capture VAT number / tax id (+ optional company + country) for the invoice header and Stripe automatic_tax. Tenant-fenced + audited.
curl -X PATCH "https://kolm.ai/v1/account/billing" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/billing/portal reference-ready
M9 - open a Stripe Billing Portal session so the customer can self-serve
Full comment
M9 - open a Stripe Billing Portal session so the customer can self-serve payment-method updates, cancellation/downgrade, and receipt downloads. 503 when no Stripe secret key is configured; 409 when the tenant has no Stripe customer yet (no paid subscription has ever been created for them).
curl -X POST "https://kolm.ai/v1/account/billing/portal" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/cancel reference-ready
Self-serve cancel / downgrade-to-free. Any paid tenant can drop to the
Full comment
Self-serve cancel / downgrade-to-free. Any paid tenant can drop to the free tier without contacting anyone.
curl -X POST "https://kolm.ai/v1/account/cancel" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/change-plan reference-ready
Self-serve plan changes. Free is applied instantly (this is also the
Full comment
Self-serve plan changes. Free is applied instantly (this is also the downgrade / cancel path). Paid plans return a Stripe Payment Link with `client_reference_id=<tenant_id>`; the plan is flipped only when the webhook receives `checkout.session.completed`. This guarantees the tenant cannot get paid features without paying.
curl -X POST "https://kolm.ai/v1/account/change-plan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/compiler-overview reference-ready
Compiler overview - a backend-owned application contract for the main
Full comment
Compiler overview - a backend-owned application contract for the main product surface. The UI can render this instead of hard-coding an audit dashboard as the first-run experience.
curl -X GET "https://kolm.ai/v1/account/compiler-overview" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/compliance-package reference-ready
can read end-to-end. Tenant metadata + signed receipts + audit log +
Full comment
can read end-to-end. Tenant metadata + signed receipts + audit log + BAA-ready org details + control mapping snapshot. JSON only (no PHI ever transits this endpoint - receipts are payload-free by design). Auditors who want a literal ZIP can pipe `curl ... | jq -r .b64_zip | base64 -d`, but the JSON shape is the canonical artifact.
curl -X GET "https://kolm.ai/v1/account/compliance-package" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/delete reference-ready
Self-serve account delete. Soft-delete the tenant; receipts and artifacts
Full comment
Self-serve account delete. Soft-delete the tenant; receipts and artifacts already shipped to users keep verifying since the cloud signing key is unchanged. The tenant can no longer authenticate. If they had an active Stripe subscription we ask Stripe to cancel it so they aren't charged again - best-effort, never blocks deletion.
curl -X POST "https://kolm.ai/v1/account/delete" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/export reference-ready
Self-serve data export (/privacy promises this). Returns a JSON bundle
Full comment
Self-serve data export (/privacy promises this). Returns a JSON bundle of the tenant's row plus every concept, compile job, observation, and invocation we have on file for them. We strip secrets (api_key_hash, stripe_customer_id keeps existing for portability, billing tokens drop). Content-Disposition nudges browsers to save the file.
curl -X GET "https://kolm.ai/v1/account/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/invoices reference-ready
M11 - list the tenant's invoices / receipts (newest first). Reads the local
Full comment
M11 - list the tenant's invoices / receipts (newest first). Reads the local ledger populated by the invoice.payment_succeeded webhook.
curl -X GET "https://kolm.ai/v1/account/invoices" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/keys reference-ready
Account API key list - returns the tenant primary key metadata without the raw secret.
curl -X GET "https://kolm.ai/v1/account/keys" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/keys reference-ready
Account API key create - rotates the tenant primary key and audits the requested label.
curl -X POST "https://kolm.ai/v1/account/keys" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/account/keys/:prefix reference-ready
Account API key revoke - rotates away a key prefix and returns the replacement secret.
curl -X DELETE "https://kolm.ai/v1/account/keys/<prefix>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/account/next-actions reference-ready
Next-actions list - returns the top-5 ranked proactive actions for the tenant.
curl -X GET "https://kolm.ai/v1/account/next-actions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/next-actions/snooze reference-ready
Next-actions snooze - silences the matching dismiss_key for N days (default 14).
curl -X POST "https://kolm.ai/v1/account/next-actions/snooze" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/provider-keys reference-ready
Provider-key vault: per-employee / per-team upstream provider keys
Full comment
Provider-key vault: per-employee / per-team upstream provider keys The core of "every employee's AI use, in one place you control": a member stores their OpenAI/Anthropic/etc. key here; the gateway routes their traffic under it (see dispatch) and the call lands in the team lake attributed to them. Responses are always redacted (never the raw secret).
curl -X GET "https://kolm.ai/v1/account/provider-keys" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/provider-keys source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/provider-keys" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/account/provider-keys/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/account/provider-keys/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
POST /v1/account/receipt-secret/prune reference-ready
Drop a specific previous key from the verification ring. Receipts signed
Full comment
Drop a specific previous key from the verification ring. Receipts signed with that key will no longer verify against this tenant after this call. The current key cannot be pruned - rotate first to retire it.
curl -X POST "https://kolm.ai/v1/account/receipt-secret/prune" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/receipt-secrets reference-ready
List receipt-signing key metadata for the calling tenant. Secrets are
Full comment
List receipt-signing key metadata for the calling tenant. Secrets are never returned - only the key_id, status, and rotation timestamps.
curl -X GET "https://kolm.ai/v1/account/receipt-secrets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/rotate-key reference-ready
Account API key rotation - rotates the tenant's primary API key and returns the new secret.
curl -X POST "https://kolm.ai/v1/account/rotate-key" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/rotate-receipt-secret reference-ready
Rotate the per-tenant receipt-signing secret. Previous secret is
Full comment
Rotate the per-tenant receipt-signing secret. Previous secret is preserved so older signed artifacts and audit rows still verify.
curl -X POST "https://kolm.ai/v1/account/rotate-receipt-secret" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/saml/acs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/saml/acs" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/saml/metadata reference-ready
SP metadata is a static document an IdP fetches at federation-config
Full comment
SP metadata is a static document an IdP fetches at federation-config time. It does NOT depend on entitlement (publishing the SP entity ID is fine even for tenants who can't yet bind to it).
curl -X GET "https://kolm.ai/v1/account/saml/metadata" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/scoped-keys reference-ready
Scoped member API keys (multi-key, least-privilege)
Full comment
Scoped member API keys (multi-key, least-privilege) Mint keys with a subset of scopes (e.g. capture:read, lake:export, namespace:<slug>, or *) so a teammate or a CI job gets only what it needs. Non-breaking: the tenant-primary key (rotate via /v1/account/keys) is full.
curl -X GET "https://kolm.ai/v1/account/scoped-keys" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/scoped-keys source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/scoped-keys" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/account/scoped-keys/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/account/scoped-keys/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/account/settings reference-ready
Account settings read - returns tenant settings merged with current defaults.
curl -X GET "https://kolm.ai/v1/account/settings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/account/settings reference-ready
Account settings update - persists whitelisted tenant settings and audits changed fields.
curl -X PUT "https://kolm.ai/v1/account/settings" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/sso/configure source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/account/sso/configure" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/account/sso/scim-token reference-ready
Generate (or rotate) the per-tenant SCIM bearer token an IdP uses to drive
Full comment
Generate (or rotate) the per-tenant SCIM bearer token an IdP uses to drive SCIM 2.0 provisioning. Returned in plaintext exactly ONCE (on generation); only the hash is persisted. Rotating invalidates the previous token. The token is never written to logs or the audit payload.
curl -X POST "https://kolm.ai/v1/account/sso/scim-token" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/sso/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/account/sso/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/account/state reference-ready
/account/overview "What's next" engine reads. Returns artifact + capture
Full comment
/account/overview "What's next" engine reads. Returns artifact + capture + namespace counts, the age of the last artifact, age of the primary api key, plus a flat `signals` array each rule in whats-next.js matches on. Auth-gated (NOT in PUBLIC_API) - cross-tenant state leaks were what made /v1/intent/next add tenant_id scoping in W432.
curl -X GET "https://kolm.ai/v1/account/state" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Active Learning (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/active-learning/summary reference-ready
Plain empty-state: if active-learning-queue.js isn't on disk yet
Full comment
Plain empty-state: if active-learning-queue.js isn't on disk yet (sibling agent still building, or this is a fresh deploy), return ok:true with module_missing:true so the dashboard can render a useful empty state instead of a 500.
curl -X GET "https://kolm.ai/v1/active-learning/summary" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Admin (12)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/admin/audit reference-ready
Admin audit feed - newest audit events with tenant and operation metadata.
curl -X GET "https://kolm.ai/v1/admin/audit" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/compile-jobs reference-ready
Admin compile job feed - newest compile jobs with tenant, task, status, and score.
curl -X GET "https://kolm.ai/v1/admin/compile-jobs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/control-files source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/admin/control-files" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/control-files/:key source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/admin/control-files/<key>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/diagnostics reference-ready
Admin diagnostics - checks data/artifact directories and selected runtime env flags.
curl -X GET "https://kolm.ai/v1/admin/diagnostics" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/health reference-ready
Admin health snapshot - process, store, memory, region, and integration flags.
curl -X GET "https://kolm.ai/v1/admin/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
POST /v1/admin/refund reference-ready
M13 - admin-issued refund. Owner/admin only (req.is_admin). Issues a Stripe
Full comment
M13 - admin-issued refund. Owner/admin only (req.is_admin). Issues a Stripe refund against a charge, records a credit-memo in the tenant ledger, audits the action, and notifies the tenant. 503 when Stripe is not configured.
curl -X POST "https://kolm.ai/v1/admin/refund" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/stats reference-ready
Admin stats - aggregate tenants, usage, compile jobs, and audit-event counts.
curl -X GET "https://kolm.ai/v1/admin/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/submissions reference-ready
Admin submissions list - returns all submitted project/contact records.
curl -X GET "https://kolm.ai/v1/admin/submissions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/admin/tenant reference-ready
Admin tenant provision - creates a tenant with quota and returns its API key.
curl -X POST "https://kolm.ai/v1/admin/tenant" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/tenants reference-ready
Admin tenant list - scrubbed cross-tenant view with q/limit filters.
curl -X GET "https://kolm.ai/v1/admin/tenants" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/admin/waitlist reference-ready
Admin waitlist list - returns all waitlist rows for admin triage.
curl -X GET "https://kolm.ai/v1/admin/waitlist" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Agents (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/agents reference-ready
agent telemetry routes fence on req.tenant_record and forward
Full comment
agent telemetry routes fence on req.tenant_record and forward req.tenant_record.id as tenant_id into the helper so cross-tenant rows never appear in the rollup. _tenantScope() returns null for admin (cross-tenant reads allowed) and the canonical tenant_id otherwise.
curl -X GET "https://kolm.ai/v1/agents" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/agents/failing reference-ready
Top failing agent sessions for the caller's tenant.
curl -X GET "https://kolm.ai/v1/agents/failing" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/agents/recommend reference-ready
Agent model recommendation for a tenant-scoped application and task hint.
curl -X GET "https://kolm.ai/v1/agents/recommend" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/agents/sessions reference-ready
Agent sessions list for the caller's tenant.
curl -X GET "https://kolm.ai/v1/agents/sessions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/agents/sessions/:id reference-ready
Agent session detail scoped to the caller's tenant.
curl -X GET "https://kolm.ai/v1/agents/sessions/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/agents/stats reference-ready
Agent telemetry aggregate stats for the caller's tenant.
curl -X GET "https://kolm.ai/v1/agents/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Airgap (9)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/airgap/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/airgap/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/airgap/distill/run source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/airgap/distill/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/airgap/distill/status/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/airgap/distill/status/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/airgap/doctor source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/airgap/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/airgap/jobs reference-ready
/v1/airgap/jobs - bare collection GET that lists tenant air-gapped
Full comment
/v1/airgap/jobs - bare collection GET that lists tenant air-gapped distill + sneakernet jobs. Each W831 job is keyed by run_id; the actual status route is /v1/airgap/distill/status/:id. This bare GET returns an empty envelope until a wave wires the per-tenant job index.
curl -X GET "https://kolm.ai/v1/airgap/jobs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/airgap/sneakernet/bundle source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/airgap/sneakernet/bundle" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/airgap/sneakernet/verify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/airgap/sneakernet/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/airgap/status reference-ready
All four auth-gate on req.tenant_record. W411 defense-in-depth: every
Full comment
All four auth-gate on req.tenant_record. W411 defense-in-depth: every route binds tenant into the args so a future schema change cannot leak across tenants.
curl -X GET "https://kolm.ai/v1/airgap/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/airgap/test source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/airgap/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Anonymous bootstrap (2)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/anon/bootstrap reference-ready
Anonymous CLI auth (robots / agents)
Full comment
Anonymous CLI auth (robots / agents) Bootstrap: returns an anon_token that the CLI stores locally. 30-day TTL. No email, no signup. Designed for agents that need to start working in <1 second.
curl -X POST "https://kolm.ai/v1/anon/bootstrap" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/anon/claim reference-ready
Claim: convert an anonymous workspace into a permanent account.
Full comment
Claim: convert an anonymous workspace into a permanent account. if email matches an existing real tenant: merge the anon's recipes into it, return existing key else: upgrade the anon tenant in-place to a real tenant, rotate to ks_*, return new key WC14 - share the bootstrap limiter (50/24h/ip) so brute-forcing kao_ tokens through this endpoint is bounded.
curl -X POST "https://kolm.ai/v1/anon/claim" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Approvals (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/approvals source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/approvals" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/approvals/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/approvals/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/approvals/:id/approve source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/approvals/<id>/approve" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/approvals/:id/notify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/approvals/<id>/notify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/approvals/:id/reject source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/approvals/<id>/reject" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/approvals/request reference-ready
Tenant fence: tenant_id forced from req.tenant_record.id. Status
Full comment
Tenant fence: tenant_id forced from req.tenant_record.id. Status transitions return plain invalid_transition envelopes - never silently re-write state. version stamp matches /^w782-/.
curl -X POST "https://kolm.ai/v1/approvals/request" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Artifact (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/artifact/diff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/artifact/diff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/artifact/lineage source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/artifact/lineage" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/artifact/verify-manifest reference-ready
for callers that have the manifest hashes block in hand (e.g. a CLI
Full comment
for callers that have the manifest hashes block in hand (e.g. a CLI that just downloaded the artifact and parsed its manifest.json). No auth required - the check is pure: recompute CID from hashes, compare to the claimed CID. Returns `manifest_hash_mismatch` envelope on disagreement, `verified:true` + recomputed cid on match.
curl -X POST "https://kolm.ai/v1/artifact/verify-manifest" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Artifacts (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/artifacts reference-ready
Artifact list - exposes completed compile jobs as artifact records with hashes and downloads.
curl -X GET "https://kolm.ai/v1/artifacts" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/artifacts/:id reference-ready
Artifact detail - returns one tenant-scoped compile artifact by job id.
curl -X GET "https://kolm.ai/v1/artifacts/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/artifacts/:id/download reference-ready
Artifact download - streams the completed artifact zip by id with readiness/expiry errors.
curl -X GET "https://kolm.ai/v1/artifacts/<id>/download" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/artifacts/:id/evidence-trace reference-ready
for an artifact. Returns 404 when the artifact has no evidence DAG on
Full comment
for an artifact. Returns 404 when the artifact has no evidence DAG on disk. The shape is { ok, artifact_id, dag: {nodes, edges} } so the caller can re-build the DAG client-side and walk it.
curl -X GET "https://kolm.ai/v1/artifacts/<id>/evidence-trace" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/artifacts/:id/lifecycle reference-ready
R-2 - artifact lifecycle introspection.
curl -X GET "https://kolm.ai/v1/artifacts/<id>/lifecycle" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/artifacts/:id/lifecycle/transition reference-ready
Body: {to_state, reason, evidence_id?, successor_id?}.
curl -X POST "https://kolm.ai/v1/artifacts/<id>/lifecycle/transition" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/artifacts/dependency-graph source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/artifacts/dependency-graph" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Assistant (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/assistant reference-ready
Natural-language assistant
Full comment
Natural-language assistant Scoped to req.tenant_record; never calls an external LLM; deterministic.
curl -X POST "https://kolm.ai/v1/assistant" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/assistant/chat reference-ready
chat widget on every authed /account page. Routes through the W888-P
Full comment
chat widget on every authed /account page. Routes through the W888-P AssistantClient three-layer fallback (local GGUF -> kolm.ai -> gateway frontier). Tier-gated to paid plans; rate-limited to 60 calls/hour/tenant. Returns the W888-P envelope verbatim plus the canonical aliases (provider_used / latency_ms) the widget consumes.
curl -X POST "https://kolm.ai/v1/assistant/chat" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/assistant/chat-docs reference-ready
(formatted as a docs-anchored system prompt). The response surfaces the
Full comment
(formatted as a docs-anchored system prompt). The response surfaces the sources back to the client so the UI renders the same URLs it sent in. KOLM_ASSISTANT_TEST_SHIM=1 wires deterministic shims for tests; this same env var is used by tests/wave888p-cli-nl-routing.test.js.
curl -X POST "https://kolm.ai/v1/assistant/chat-docs" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Assurance (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/assurance/artifact/:id reference-ready
Same shape, workspace-level - the artifact-derived claims are omitted
Full comment
Same shape, workspace-level - the artifact-derived claims are omitted and only the vault-derived jurisdiction claim + the 8 required control rows remain.
curl -X GET "https://kolm.ai/v1/assurance/artifact/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/assurance/workspace/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/assurance/workspace/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Audio (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/audio/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/audio/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audio/capture-detect reference-ready
stamped by captureAudioMessage (NEVER the raw audio bytes).
Full comment
stamped by captureAudioMessage (NEVER the raw audio bytes). All three are tenant-fenced via req.tenant_record.id (W411). Plain envelopes on bad input - no silent passthrough.
curl -X POST "https://kolm.ai/v1/audio/capture-detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audio/captures source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audio/captures" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audio/speech reference-ready array-literal expansion
audio routes. Real proxy when configured; fixture returns deterministic
Full comment
audio routes. Real proxy when configured; fixture returns deterministic bodies; otherwise plain 501 with a structured "not yet supported" envelope so SDKs see something better than 404. These concrete audio endpoints use the OpenAI connector when a key is present.
curl -X POST "https://kolm.ai/v1/audio/speech" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audio/tokenize reference-ready
Auth-gated. Returns the worker doctor envelope - reports python3
Full comment
Auth-gated. Returns the worker doctor envelope - reports python3 presence + transformers/torch/librosa/soundfile availability + which tokenizer command is wired.
curl -X POST "https://kolm.ai/v1/audio/tokenize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audio/tokenize/doctor source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audio/tokenize/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audio/transcriptions reference-ready array-literal expansion
audio routes. Real proxy when configured; fixture returns deterministic
Full comment
audio routes. Real proxy when configured; fixture returns deterministic bodies; otherwise plain 501 with a structured "not yet supported" envelope so SDKs see something better than 404. These concrete audio endpoints use the OpenAI connector when a key is present.
curl -X POST "https://kolm.ai/v1/audio/transcriptions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audio/translations reference-ready array-literal expansion
audio routes. Real proxy when configured; fixture returns deterministic
Full comment
audio routes. Real proxy when configured; fixture returns deterministic bodies; otherwise plain 501 with a structured "not yet supported" envelope so SDKs see something better than 404. These concrete audio endpoints use the OpenAI connector when a key is present.
curl -X POST "https://kolm.ai/v1/audio/translations" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Audit (29)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/audit/* source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audit/*" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/:id/oscal reference-ready
OSCAL assessment-results JSON; ?format=poam returns the POA&M-style
Full comment
OSCAL assessment-results JSON; ?format=poam returns the POA&M-style remediation table. kolm MAPS to standards; this is an assessment-results export, never a certification. Read-only view over the SAME signed report. Tiers: Full Readiness ($15,000) and Continuous-Plus ($3,500/mo).
curl -X GET "https://kolm.ai/v1/audit/<id>/oscal" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/:id/retest reference-ready
foreign / unknown id is 404, never another tenant's data. No re-sign here;
Full comment
foreign / unknown id is 404, never another tenant's data. No re-sign here; runFixRetest is pure + never throws (the diff is computeAuditDelta). Tier: a Continuous ($299/$999 per month) on-demand tick, or a follow-on $750 Signed Readiness Report that embeds result.delta.
curl -X POST "https://kolm.ai/v1/audit/<id>/retest" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/continuous/checkout reference-ready
body: { plan: "starter" | "growth" }.
curl -X POST "https://kolm.ai/v1/audit/continuous/checkout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/continuous/deploy-hook reference-ready
immediate re-attestation for the caller's active subscription(s). Auth-gated
Full comment
immediate re-attestation for the caller's active subscription(s). Auth-gated by the tenant's own API key (call it from CI after a deploy).
curl -X POST "https://kolm.ai/v1/audit/continuous/deploy-hook" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/continuous/tick reference-ready
every Continuous subscription whose re-attestation is due. Driven by an
Full comment
every Continuous subscription whose re-attestation is due. Driven by an EXTERNAL scheduler hitting this with x-kolm-cron-secret (containers restart, so no in-process timer). Idempotent: claim-then-run, never double-signs.
curl -X POST "https://kolm.ai/v1/audit/continuous/tick" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/export reference-ready
preview without offering a backdoor full dump.
Full comment
preview without offering a backdoor full dump. All three routes auth-gate on req.tenant_record. Plain envelope on bad format / missing tenant - no silent passthrough.
curl -X GET "https://kolm.ai/v1/audit/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/export/formats source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audit/export/formats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/export/preview source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audit/export/preview" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/import reference-ready
Tier-A bridge: source 'kolm-capture' skips the inline/url transport and
Full comment
Tier-A bridge: source 'kolm-capture' skips the inline/url transport and audits the CALLING tenant's own stored gateway captures (grade A). The label is reserved - source_label may never claim it for vendor logs.
curl -X POST "https://kolm.ai/v1/audit/import" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/issuer-key reference-ready
server signs evidence reports with, so a buyer (or the /verify page's
Full comment
server signs evidence reports with, so a buyer (or the /verify page's trusted-issuer keyring) can pin against the authoritative source instead of trusting whatever key a report embeds. Returns ONLY the public half; the private key never leaves the signer. Never throws.
curl -X GET "https://kolm.ai/v1/audit/issuer-key" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/issuer-key/:fp/revoke reference-ready
reason:'issuer_key_revoked' for any report signed by that key, and the
Full comment
reason:'issuer_key_revoked' for any report signed by that key, and the public status endpoint reports valid:false. Gated by ADMIN_KEY (Bearer ADMIN_KEY via authMiddleware -> req.is_admin, or an x-admin-key header). body: { reason? }
curl -X POST "https://kolm.ai/v1/audit/issuer-key/<fp>/revoke" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/issuer-key/:fp/status reference-ready
issuer key fingerprint: 'live' | 'rotated' | 'revoked' + valid flag, so a
Full comment
issuer key fingerprint: 'live' | 'rotated' | 'revoked' + valid flag, so a buyer's verifier can confirm the key that signed a report is still trusted RIGHT NOW (a signature that verifies against a REVOKED key must be refused). Pure read over the persisted key-revocation store; never throws.
curl -X GET "https://kolm.ai/v1/audit/issuer-key/<fp>/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/log reference-ready
write path with HMAC-chained signatures); this implementation gives the
Full comment
write path with HMAC-chained signatures); this implementation gives the dashboard real entries from day one without that wiring. Probe-safe: when unauth'd, returns the same 200 envelope with entries=[] rather than 401/503 so frontend probes don't fall over.
curl -X GET "https://kolm.ai/v1/audit/log" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/package/checkout reference-ready
plus -> $3,500/mo Continuous-Plus (flows through the existing subscription
Full comment
plus -> $3,500/mo Continuous-Plus (flows through the existing subscription path; activated by activateSubscription with product_key 'plus'). Env-gated 503 degrade: when the product is not wired, createAsrCheckout throws BillingNotConfiguredError (statusCode 503) listing the exact env vars.
curl -X POST "https://kolm.ai/v1/audit/package/checkout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/report/checkout reference-ready
Signed Readiness Report for a specific audit. body: { audit_id }.
Full comment
Signed Readiness Report for a specific audit. body: { audit_id }. The audit must belong to the caller and already have a (watermarked) report.
curl -X POST "https://kolm.ai/v1/audit/report/checkout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/report/verify reference-ready
issuer.recognized - tier 2: that key is one this product publishes (the
Full comment
issuer.recognized - tier 2: that key is one this product publishes (the live signer or a key in public/keys/kolm-issuers.json). trusted - verify.ok AND issuer.recognized. A consumer that only checks verify.ok would accept a rogue-signed forgery; check trusted.
curl -X POST "https://kolm.ai/v1/audit/report/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/reports reference-ready
audit/report this tenant owns (scan previews + paid reports) plus which ASR
Full comment
audit/report this tenant owns (scan previews + paid reports) plus which ASR products are currently purchasable. Powers public/dashboard.html.
curl -X GET "https://kolm.ai/v1/audit/reports" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/scan reference-ready
tenant's own stored gateway captures/receipts instead of a vendor export.
Full comment
tenant's own stored gateway captures/receipts instead of a vendor export. The resulting report carries evidence grade A (first-party capture). The source value is reserved: supplying it WITH logs is a clean 400, so vendor logs can never masquerade as gateway captures.
curl -X POST "https://kolm.ai/v1/audit/scan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/sessions reference-ready
body: { subject?, source?, retention_days? }
curl -X POST "https://kolm.ai/v1/audit/sessions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/sessions/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/audit/sessions/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/sessions/:id/delta reference-ready
by session id (audses_*) OR report id (asrr_*). BOTH ids must resolve to a
Full comment
by session id (audses_*) OR report id (asrr_*). BOTH ids must resolve to a report owned by this tenant - a foreign / unknown id is {ok:false} (404/403), never another tenant's data. No re-sign; computeAuditDelta is pure + never throws. The :id is "current"; ?against=<id> is the prior baseline.
curl -X POST "https://kolm.ai/v1/audit/sessions/<id>/delta" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/sessions/:id/export reference-ready
The signed report reshaped into a procurement-ingestible artifact. Auth
Full comment
The signed report reshaped into a procurement-ingestible artifact. Auth gated + tenant-fenced exactly like the sibling /report route (the export is a view over the SAME signed envelope - it carries the key fingerprint + verify URL so an importer can always trace it back to the signed source).
curl -X GET "https://kolm.ai/v1/audit/sessions/<id>/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/sessions/:id/ingest reference-ready
body: { logs } (JSONL text, JSON array, or array of records)
curl -X POST "https://kolm.ai/v1/audit/sessions/<id>/ingest" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/sessions/:id/questionnaire reference-ready
(AUTH, tenant-fenced) - the openable GET alias of the POST above, so a
Full comment
(AUTH, tenant-fenced) - the openable GET alias of the POST above, so a seller can pull their session's autofilled questionnaire from a browser / a simple link. Identical auth + tenant fence + pure-view semantics; query-only (no body). The POST form stays for callers that prefer to send { template }.
curl -X GET "https://kolm.ai/v1/audit/sessions/<id>/questionnaire" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/sessions/:id/questionnaire reference-ready
(AUTH, tenant-fenced) - the SELLER pre-fills a questionnaire from their own
Full comment
(AUTH, tenant-fenced) - the SELLER pre-fills a questionnaire from their own session's signed report (e.g. to attach to an RFP response before sharing). Tenant-fenced exactly like the sibling /report + /export routes. body may carry { template, format } as an alternative to the query string.
curl -X POST "https://kolm.ai/v1/audit/sessions/<id>/questionnaire" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/sessions/:id/report reference-ready
Returns the bare signed envelope (json), rendered HTML, or a PDF stream
Full comment
Returns the bare signed envelope (json), rendered HTML, or a PDF stream each is a downloadable deliverable, not an {ok}-wrapped API envelope.
curl -X GET "https://kolm.ai/v1/audit/sessions/<id>/report" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/audit/sessions/:id/run reference-ready
body: { subject?, source?, retention_days?, sign? }
curl -X POST "https://kolm.ai/v1/audit/sessions/<id>/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/audit/verify reference-ready
Verify the HMAC chain over this tenant's audit_events rows. Returns
Full comment
Verify the HMAC chain over this tenant's audit_events rows. Returns ok=true when every row hashes to its declared event_hash given the previous row's hash, ok=false with the list of breaks otherwise.
curl -X GET "https://kolm.ai/v1/audit/verify" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Auth (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/auth/github reference-ready
4 - short OAuth aliases: GET /v1/auth/github redirects to the
Full comment
4 - short OAuth aliases: GET /v1/auth/github redirects to the canonical /v1/oauth/github/start (preserving any ?redirect= query). Same for /v1/auth/github/callback (forwards code+state to the canonical callback). When env vars are missing, the canonical route returns the operator-facing 503 oauth_not_configured envelope.
curl -X GET "https://kolm.ai/v1/auth/github" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/auth/github/callback source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/auth/github/callback" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/auth/login reference-ready
API key (ks_*/kao_*) + OAuth; there is no password endpoint. We add live
Full comment
API key (ks_*/kao_*) + OAuth; there is no password endpoint. We add live deprecation aliases that 410 Gone with redirect hints so the routes are not "dead" - the deprecated-endpoint lock-in in W890-9 expects every routed path to have a handler. Both alias handlers carry the canonical {ok:false, error:'<id>'} envelope so W890-9 lock-in 9 stays green.
curl -X POST "https://kolm.ai/v1/auth/login" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/auth/signup source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/auth/signup" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Automations (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/automations source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/automations" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/automations source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/automations" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/automations/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/automations/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
PATCH /v1/automations/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/automations/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/automations/:id/run source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/automations/<id>/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/automations/tick source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/automations/tick" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Autopilot (10)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/autopilot/analyze source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/autopilot/analyze" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/autopilot/disable source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/autopilot/disable" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/autopilot/enable reference-ready
All five are tenant-fenced via req.tenant_record.id (W411 law). The
Full comment
All five are tenant-fenced via req.tenant_record.id (W411 law). The route layer ALWAYS forces tenant_id from auth - body.tenant_id is ignored even if the client tries to pass one.
curl -X POST "https://kolm.ai/v1/autopilot/enable" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/autopilot/plan source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/autopilot/plan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/autopilot/savings source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/autopilot/savings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/autopilot/simulate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/autopilot/simulate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/autopilot/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/autopilot/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/autopilot/temporal source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/autopilot/temporal" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/autopilot/tick source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/autopilot/tick" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/autopilot/tick reference-ready
NEW full-lifecycle tick. The GET /v1/autopilot/tick route above stays
Full comment
NEW full-lifecycle tick. The GET /v1/autopilot/tick route above stays the heartbeat (tests/wave775-autopilot.test.js asserts action:'disabled'); this POST handler runs the full lifecycle via tickAutopilotFull.
curl -X POST "https://kolm.ai/v1/autopilot/tick" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Bakeoff (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/bakeoff/run reference-ready
Bakeoff run - evaluates a set of contestant models against a dataset and
Full comment
Bakeoff run - evaluates a set of contestant models against a dataset and returns ranked rows + winner. Body: { dataset_id (required), contestants, opts }. Used by /account/bakeoffs and `kolm bakeoff run`.
curl -X POST "https://kolm.ai/v1/bakeoff/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Bakeoffs (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/bakeoffs reference-ready
/v1/bakeoffs - list + run alias for /v1/bakeoff/run. The bakeoff module
Full comment
/v1/bakeoffs - list + run alias for /v1/bakeoff/run. The bakeoff module does not persist runs to a registry (each call returns a fresh result), so GET returns an empty array; the page already handles that shape via `{bakeoffs: []}` in its .catch fallback.
curl -X GET "https://kolm.ai/v1/bakeoffs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bakeoffs reference-ready
Bakeoffs run alias - SDK-friendly synonym for /v1/bakeoff/run with the
Full comment
Bakeoffs run alias - SDK-friendly synonym for /v1/bakeoff/run with the added W411 tenant fence at the dataset boundary (cross-tenant dataset_id returns 404). Same body: { dataset_id, contestants, opts }.
curl -X POST "https://kolm.ai/v1/bakeoffs" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Bench (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/bench/humaneval source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/bench/humaneval" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/bench/inference reference-ready
W-INTEG-3: signed inference-economics benchmark
curl -X GET "https://kolm.ai/v1/bench/inference" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bench/inference/run source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/bench/inference/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bench/mmlu reference-ready
envelope when called without a tester-supplied DI seam.
Full comment
envelope when called without a tester-supplied DI seam. The routes import lazily so the bench modules don't pay startup cost on cold daemons that never call them.
curl -X POST "https://kolm.ai/v1/bench/mmlu" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bench/mtbench source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/bench/mtbench" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Billing (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/billing/breakdown reference-ready
it walks the team's member tenants and rolls up.
Full comment
it walks the team's member tenants and rolls up. Tenant fence: tenant_id is forced from req.tenant_record.id - never read from the request body or query string. Team caller is forced to be a member of the named team (non-members get 403 forbidden).
curl -X GET "https://kolm.ai/v1/billing/breakdown" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/billing/checkout source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/billing/checkout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/billing/meters reference-ready
Returns the static catalog of legacy W384 meters merged with the W409y
Full comment
Returns the static catalog of legacy W384 meters merged with the W409y billing-unit catalog (10 units the auditor signed off on). The W409y entries carry tier_soft + tier_hard limits resolved from the caller's tenant plan when an authenticated key is present.
curl -X GET "https://kolm.ai/v1/billing/meters" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/billing/ready reference-ready
W-INTEG-3: Stripe billing activation (operator sets price-id env vars)
curl -X GET "https://kolm.ai/v1/billing/ready" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/billing/tiers reference-ready
P0-3 closure: /v1/billing/tiers as a public alias of /v1/plans so the
Full comment
P0-3 closure: /v1/billing/tiers as a public alias of /v1/plans so the CLI `kolm billing tiers` (+ alias `plans`) returns useful data without requiring auth. Includes a billing_configured flag tied to the actual STRIPE_PAYMENT_LINK_* env presence so the UI can demote when unwired.
curl -X GET "https://kolm.ai/v1/billing/tiers" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/billing/usage reference-ready
Returns the current-period usage map for the caller's tenant. The
Full comment
Returns the current-period usage map for the caller's tenant. The dashboard at /account/billing reads this endpoint; the CLI `kolm billing usage [--period]` hits it directly.
curl -X GET "https://kolm.ai/v1/billing/usage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Bridges (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/bridges/auto-synthesize source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/bridges/auto-synthesize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/bridges/observations reference-ready
Filters: ?namespace=<ns> (optional), ?limit=<n> (default 50, max 200), ?include_discarded=1.
curl -X GET "https://kolm.ai/v1/bridges/observations" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bridges/observations/:id reference-ready
Body: { discarded: true } | { kept: true } | { discarded: false }. Tenant-scoped.
curl -X POST "https://kolm.ai/v1/bridges/observations/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/bridges/observe reference-ready
After ≥4 calls with the same template signature we surface a synthesis suggestion.
Full comment
After ≥4 calls with the same template signature we surface a synthesis suggestion. 1: persists via insertCapture (durable contract). 503 on store failure - same envelope as the capture proxy handlers.
curl -X POST "https://kolm.ai/v1/bridges/observe" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/bridges/specialist-candidates source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/bridges/specialist-candidates" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/bridges/suggestions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/bridges/suggestions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Build (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/build/preview reference-ready
builder UI's results pane: returns k_score, first 3 train rows, first 3
Full comment
builder UI's results pane: returns k_score, first 3 train rows, first 3 holdout rows, production_ready verdict + gate reasons, and the synth metadata. Public + rate-limited; no artifact write, no charge. Accepts {spec, seeds_jsonl_text}. Errors map to 400 (validation) or 500.
curl -X POST "https://kolm.ai/v1/build/preview" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/build/strategy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/build/strategy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/build/strategy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/build/strategy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/build/strategy/catalog reference-ready
Build strategy brain - shared planner for capture, prompt/RAG/routing,
Full comment
Build strategy brain - shared planner for capture, prompt/RAG/routing, training, distillation, cloud compute, compilation, quantization, and local runtime. It never launches work and never returns secret values.
curl -X GET "https://kolm.ai/v1/build/strategy/catalog" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Builder (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/builder/compile reference-ready
{task, examples} payload into a real compile job. Validation matches
Full comment
{task, examples} payload into a real compile job. Validation matches /v1/builder/preview so a Preview→Compile flow that passes preview also passes here; the only added requirement is the API key (handled by authMiddleware mounted above this line). Recipe class and namespace are forced so builder-originated artifacts are distinguishable in audits.
curl -X POST "https://kolm.ai/v1/builder/compile" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/builder/preview reference-ready
Rate-limited; no auth. Inputs are validated tightly so this cannot be
Full comment
Rate-limited; no auth. Inputs are validated tightly so this cannot be used as a generic compute oracle. The 10 KB per-example cap matches the body limit on /v1/compile and keeps the synthesis cost bounded.
curl -X POST "https://kolm.ai/v1/builder/preview" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/builder/templates source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/builder/templates" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Builds (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/builds reference-ready
/v1/builds - aliases the compile-job list for /account/builds.html.
Full comment
/v1/builds - aliases the compile-job list for /account/builds.html. builds.html expects {builds:[{job_id, status, ...}]}; the canonical /v1/compile/jobs returns {jobs:[...]}, so we adapt the shape here.
curl -X GET "https://kolm.ai/v1/builds" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Bundle (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/bundle/airgap reference-ready
an HTTP response would balloon memory, leak the server's checkout layout,
Full comment
an HTTP response would balloon memory, leak the server's checkout layout, and lock the route into one host's filesystem. The CLI is the supported path - `kolm bundle airgap --out <path>`. The route still exists so surface discovery + docs can link to it and so a future CDN-backed implementation has a stable URL.
curl -X POST "https://kolm.ai/v1/bundle/airgap" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Buyer (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/buyer/portfolio source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/buyer/portfolio" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/buyer/watchlist reference-ready
owning tenant via req.tenant_record.id. A buyer seat lives under the EXISTING
Full comment
owning tenant via req.tenant_record.id. A buyer seat lives under the EXISTING Continuous $999/mo shape - no new price or tier. body: { slug, label? }
curl -X POST "https://kolm.ai/v1/buyer/watchlist" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Bring-your-own-cloud (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/byoc/attestation reference-ready
Attestation callback - UNAUTH (no API key). Identifies via enroll_token,
Full comment
Attestation callback - UNAUTH (no API key). Identifies via enroll_token, which was minted by the deploy endpoint and embedded in the deploy script. The token is single-use-equivalent: if an attacker has the token they could spoof the public_url, but the deployment row is owned by a specific tenant_id and the URL is visible in their dashboard - they'll notice.
curl -X POST "https://kolm.ai/v1/byoc/attestation" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/byoc/deploy reference-ready
Customer deploys a .kolm artifact to their own Fly / AWS Nitro / GCP CVM
Full comment
Customer deploys a .kolm artifact to their own Fly / AWS Nitro / GCP CVM / Azure CVM / Docker host. We issue a signed deploy manifest + a deploy script the customer runs. The deployed instance POSTs an attestation (image SHA, plus TEE measurement on confidential targets) back to /v1/byoc/attestation. kolm.ai never runs the artifact.
curl -X POST "https://kolm.ai/v1/byoc/deploy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/byoc/deployments reference-ready
BYOC deployments list - returns tenant deployments, optionally team-scoped after membership check.
curl -X GET "https://kolm.ai/v1/byoc/deployments" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/byoc/deployments/:id reference-ready
BYOC deployment teardown - marks an owned deployment torn down and hides it from listings.
curl -X DELETE "https://kolm.ai/v1/byoc/deployments/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/byoc/deployments/:id reference-ready
BYOC deployment detail - returns one deployment owned by the tenant or one of their teams.
curl -X GET "https://kolm.ai/v1/byoc/deployments/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/byoc/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/byoc/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/byoc/targets reference-ready
BYOC targets - lists supported deploy targets for the public form and CLI.
curl -X GET "https://kolm.ai/v1/byoc/targets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Capability (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/capability/build reference-ready
Capability build - constructs a capability descriptor block from an
Full comment
Capability build - constructs a capability descriptor block from an artifact manifest, declaring what the artifact can do (modalities, budgets, K-floor, attestation requirements). Pairs with /v1/lineage/build.
curl -X POST "https://kolm.ai/v1/capability/build" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capability/validate reference-ready
Capability validate - checks a capability descriptor block for structural
Full comment
Capability validate - checks a capability descriptor block for structural consistency and that declared budgets/K-floor are internally coherent. Returns {ok:true, block} on success, {ok:false, error} otherwise.
curl -X POST "https://kolm.ai/v1/capability/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Capture (19)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/capture/anthropic reference-ready regex route
OPENAI_BASE_URL=https://kolm.ai/v1/capture/openai → POST .../v1/chat/completions
Full comment
OPENAI_BASE_URL=https://kolm.ai/v1/capture/openai → POST .../v1/chat/completions The suffix is discarded; the flat provider-specific capture endpoints use the same handler. Express's `?` makes the suffix optional, and the wildcard absorbs any depth. The body is the upstream Anthropic Messages payload, unmodified.
curl -X POST "https://kolm.ai/v1/capture/anthropic" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/browse reference-ready
/v1/capture/browse / /v1/capture/bulk / /v1/capture/export - page
Full comment
/v1/capture/browse / /v1/capture/bulk / /v1/capture/export - page surface for the captures.html admin view. Browse paginates, bulk acts on a set of capture ids, export streams JSONL/CSV. Empty-tenant safe.
curl -X GET "https://kolm.ai/v1/capture/browse" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/bulk source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/capture/bulk" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/capture/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/export reference-ready
POST shim so account/captures.html bulk-export button (sends
Full comment
POST shim so account/captures.html bulk-export button (sends {capture_ids:[...]} in body) doesn't 404. Filters to the listed ids and returns the rows inline as JSON so the page can blob-download client-side.
curl -X POST "https://kolm.ai/v1/capture/export" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/gemini reference-ready
base_url=https://kolm.ai/v1/capture/gemini and keep using chat.completions.
Full comment
Gemini capture and OpenAI-compatible aliases. These route to Google's /v1beta/openai compatibility surface so OpenAI SDK clients can set base_url=https://kolm.ai/v1/capture/gemini and keep using chat.completions.
curl -X POST "https://kolm.ai/v1/capture/gemini" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/gemini/chat/completions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/capture/gemini/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/gemini/v1/chat/completions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/capture/gemini/v1/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/health reference-ready
the next insertCapture call will persist beyond a single lambda. Used
Full comment
the next insertCapture call will persist beyond a single lambda. Used by the /captures + /security pages and the `kolm doctor` flow.
curl -X GET "https://kolm.ai/v1/capture/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
POST /v1/capture/log reference-ready
capture_store_unavailable when every item failed to persist (no swallow).
curl -X POST "https://kolm.ai/v1/capture/log" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/media reference-ready
Capture media - multipart upload endpoint for image/audio/video/blob
Full comment
Capture media - multipart upload endpoint for image/audio/video/blob captures. Streams parts through mediaStoreBlob and appends one event per blob to the tenant-scoped lake. Requires Content-Type: multipart/form-data.
curl -X POST "https://kolm.ai/v1/capture/media" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/openai source-indexed regex route
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/capture/openai" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/openrouter reference-ready
OpenRouter capture and base-URL aliases. The direct base-URL forms support
Full comment
OpenRouter capture and base-URL aliases. The direct base-URL forms support SDKs that point BASE_URL at https://kolm.ai/v1/openrouter.
curl -X POST "https://kolm.ai/v1/capture/openrouter" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/openrouter/chat/completions reference-ready
OpenRouter capture chat completions alias for clients whose base URL is
Full comment
OpenRouter capture chat completions alias for clients whose base URL is https://kolm.ai/v1/capture/openrouter and which append /chat/completions.
curl -X POST "https://kolm.ai/v1/capture/openrouter/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/openrouter/v1/chat/completions reference-ready
OpenRouter capture alias for SDKs that append the OpenAI chat-completions path.
curl -X POST "https://kolm.ai/v1/capture/openrouter/v1/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/capture/rbac/evaluate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/capture/rbac/evaluate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/rbac/policy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/capture/rbac/policy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/snippet reference-ready
Fills tenant key when authed, placeholder otherwise.
curl -X GET "https://kolm.ai/v1/capture/snippet" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/capture/stream reference-ready
Payload shape is the CLI/UI contract (W258-BE-6): capture_id /
Full comment
Payload shape is the CLI/UI contract (W258-BE-6): capture_id / captured_at / namespace / model / provider / latency_us / status / prompt_head / response_head / x_kolm_capture_durable. The raw store row is shimmed here so the dashboard and `kolm tail captures` see the same shape without one of them having to translate.
curl -X GET "https://kolm.ai/v1/capture/stream" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Captures (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/captures/:id/inspect reference-ready
W-G wrapper-completion - GET /v1/captures/:id/inspect
Full comment
W-G wrapper-completion - GET /v1/captures/:id/inspect Single-row inspection (full prompt + response + receipt + chain hash).
curl -X GET "https://kolm.ai/v1/captures/<id>/inspect" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/captures/:id/review reference-ready
W-G wrapper-completion - POST /v1/captures/:id/review
Full comment
W-G wrapper-completion - POST /v1/captures/:id/review Approve / reject / quarantine a capture. Body: {action: 'approve'|'reject'|'quarantine', reason?}. Bulk variant: POST /v1/captures/review-bulk {ids:[...], action, reason?}.
curl -X POST "https://kolm.ai/v1/captures/<id>/review" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/captures/forget source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/captures/forget" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/captures/forgotten source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/captures/forgotten" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/captures/list reference-ready
W-G wrapper-completion - GET /v1/captures/list
Full comment
W-G wrapper-completion - GET /v1/captures/list Paginated capture browser feed for /account/captures.html. Filters: ?namespace, ?status (pending|approved|rejected|quarantined, multi-comma), ?risk_min, ?risk_max (0..1), ?pii (multi-comma), ?from, ?to (ISO), ?q (substring), ?limit (1-200), ?offset.
curl -X GET "https://kolm.ai/v1/captures/list" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/captures/multi-turn reference-ready
Body shape:
Full comment
Body shape: { namespace, conversation_id, conversation:[{role,content,tool_calls?,timestamp}], parent_message_id? }
curl -X POST "https://kolm.ai/v1/captures/multi-turn" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/captures/multimodal reference-ready
Body shape:
Full comment
Body shape: { namespace, kind, payload, hash?, redaction_receipt? } If hash is omitted we compute one from the canonical payload so the caller can be lazy. kind MUST be in MULTIMODAL_KINDS.
curl -X POST "https://kolm.ai/v1/captures/multimodal" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/captures/review-bulk source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/captures/review-bulk" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Carbon (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/carbon/estimate reference-ready
→ savingsReport envelope comparing local run vs frontier baseline.
Full comment
→ savingsReport envelope comparing local run vs frontier baseline. Auth required (same pattern as billing/breakdown). Every envelope carries methodology='public-research-estimate' so a downstream consumer cannot mistake the estimate for a measured value. W786 candor contract.
curl -X GET "https://kolm.ai/v1/carbon/estimate" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Cc (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/cc/kinds reference-ready
confidential compute
curl -X GET "https://kolm.ai/v1/cc/kinds" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cc/shape/:kind reference-ready
Confidential-compute shape - returns the expected JSON shape for an
Full comment
Confidential-compute shape - returns the expected JSON shape for an attestation report of the given kind (pccs, snp-report, nitro-attestation, nras). 404 if the kind is unknown. Lets callers validate before /v1/cc/verify.
curl -X GET "https://kolm.ai/v1/cc/shape/<kind>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/cc/verify reference-ready
Confidential-compute verify - validates an attestation report against its
Full comment
Confidential-compute verify - validates an attestation report against its declared kind. Returns {state:'shape_ok'|...,verified:false} until a tenant registers a real crypto verifier via registerAttestationVerifier. Body: { kind, report, opts }.
curl -X POST "https://kolm.ai/v1/cc/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Changelog (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/changelog reference-ready
public changelog - marketing surface, no auth, no tenant scoping.
Full comment
public changelog - marketing surface, no auth, no tenant scoping. Source of truth lives in src/changelog.js (a single static WAVES array).
curl -X GET "https://kolm.ai/v1/changelog" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Chargeback (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/chargeback reference-ready
-> stream body w/ per-format Content-Type
Full comment
-> stream body w/ per-format Content-Type Tenant fence: tenant_id forced from req.tenant_record.id; query/body never override. version stamp matches /^w783-/.
curl -X GET "https://kolm.ai/v1/chargeback" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/chargeback/export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/chargeback/export" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
OpenAI-compatible chat (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/chat/completions reference-ready
the standard hosted-inference path with accelerated:false on the body
Full comment
the standard hosted-inference path with accelerated:false on the body so the caller can still get a real chat completion. Defense-in-depth tenant fence: any accelerated call without req.tenant_record is hard 401-rejected - we never run the accelerated path anonymously, even on the local daemon, because the bench dashboard keys on tenant_id.
curl -X POST "https://kolm.ai/v1/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Cid (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/cid/:cid reference-ready
CID lookup - content-addressed resolution within the caller's tenant
Full comment
CID lookup - content-addressed resolution within the caller's tenant scope. Two compiles that produce the same bytes (same task spec, same recipes, same evals, same base model pointer) yield the same CID; this route is how downstream tools dedupe by content rather than job_id. CID format is strictly validated to keep the path safe from injection.
curl -X GET "https://kolm.ai/v1/cid/<cid>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Client Error (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/client-error source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/client-error" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Cloud (10)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/cloud/broker source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/cloud/broker" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cloud/broker/catalog reference-ready
Constraint-first compute planner for local, SSH, rented GPU, managed
Full comment
Constraint-first compute planner for local, SSH, rented GPU, managed training, customer cloud, and edge runtime. This is a planning endpoint only: it never launches infrastructure and never returns secret values.
curl -X GET "https://kolm.ai/v1/cloud/broker/catalog" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/cloud/deploy-plan source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/cloud/deploy-plan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cloud/deploy-targets reference-ready
Secret-safe deploy catalog for account UI, CLI, CI, and unauthenticated
Full comment
Secret-safe deploy catalog for account UI, CLI, CI, and unauthenticated evaluators. This does not create infrastructure and never returns secret values; it returns the concrete commands and env-secret references needed for BYOC, edge, GPU, and self-hosted deployments.
curl -X GET "https://kolm.ai/v1/cloud/deploy-targets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cloud/distill source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/cloud/distill" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/cloud/distill/:job_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/cloud/distill/<job_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/cloud/distill/:job_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/cloud/distill/<job_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cloud/distill/meter/:job_id reference-ready
NOTE: meter route registered BEFORE the ':job_id' route so the router
Full comment
NOTE: meter route registered BEFORE the ':job_id' route so the router matches /meter/:job_id literally and does not interpret 'meter' as a job_id.
curl -X GET "https://kolm.ai/v1/cloud/distill/meter/<job_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/cloud/distill/submit reference-ready
Tenant fence: tenant_id forced from req.tenant_record.id; body/path never
Full comment
Tenant fence: tenant_id forced from req.tenant_record.id; body/path never override. Backend candor: when KOLM_CLOUD_DISTILL_ENDPOINT is unset, the submit response carries cloud_backend_status='no_pool_configured' so the caller knows the work is queued but not yet executing. version stamp /^w785-/.
curl -X POST "https://kolm.ai/v1/cloud/distill/submit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/cloud/readiness reference-ready
Cloud readiness is exposed directly for account UI, CI, and self-hosted
Full comment
Cloud readiness is exposed directly for account UI, CI, and self-hosted operators. It reports configured categories and missing variable names, but never returns secret values.
curl -X GET "https://kolm.ai/v1/cloud/readiness" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Compile (10)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/compile reference-ready
Compile job list - returns the caller's recent tenant-scoped compile jobs.
curl -X GET "https://kolm.ai/v1/compile" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compile reference-ready
Compile job creation - queues a tenant-scoped build and returns job_id, status, and poll URL.
Full comment
Compile job creation - queues a tenant-scoped build and returns job_id, status, and poll URL. Validates task/model/output options, bills usage, and writes the compile audit record.
curl -X POST "https://kolm.ai/v1/compile" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compile/:id reference-ready
Compile job status - returns a safe tenant-scoped snapshot plus artifact_url when complete.
curl -X GET "https://kolm.ai/v1/compile/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compile/:id/.kolm reference-ready
Compile artifact download - streams the completed .kolm zip or reports readiness/expiry.
curl -X GET "https://kolm.ai/v1/compile/<id>/.kolm" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compile/cloud reference-ready
Dispatches a compile to a partner GPU (modal/runpod/vast/lambda) using
Full comment
Dispatches a compile to a partner GPU (modal/runpod/vast/lambda) using server-side credentials (KOLM_RUNPOD_TOKEN / KOLM_MODAL_TOKEN in env). Body: { backend, namespace, spec?, confirm, budget_usd, base_model? }. Without confirm:true we return a quote so the caller sees the cost first.
curl -X POST "https://kolm.ai/v1/compile/cloud" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compile/estimate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/compile/estimate" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compile/estimate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/compile/estimate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compile/preview reference-ready
would call the LLM bridge; this returns a deterministic sample so the
Full comment
would call the LLM bridge; this returns a deterministic sample so the Describe-tab "Generate preview" button works without any keys.
curl -X POST "https://kolm.ai/v1/compile/preview" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compile/start reference-ready
overlay opens an SSE stream against. Stubbed for the no-code path.
curl -X POST "https://kolm.ai/v1/compile/start" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compile/stream/:job reference-ready
overlay. Reload-safe via ?cursor. See src/compile-stream.js for the
Full comment
overlay. Reload-safe via ?cursor. See src/compile-stream.js for the event contract.
curl -X GET "https://kolm.ai/v1/compile/stream/<job>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Compliance (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/compliance/ai-act/export reference-ready
* /governance-report runs the loop body with a per-row tenant re-check
Full comment
* /governance-report runs the loop body with a per-row tenant re-check so a future schema bug cannot leak across tenants. Distinct from sibling W767-cert / W768-modelcard / W769-residency / audit-export routes - no path collision possible.
curl -X POST "https://kolm.ai/v1/compliance/ai-act/export" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compliance/ai-act/governance-report source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/compliance/ai-act/governance-report" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compliance/ai-act/human-in-loop source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/compliance/ai-act/human-in-loop" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compliance/ai-act/risk-score source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/compliance/ai-act/risk-score" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compliance/certification-packet reference-ready
Compliance certification packet - local evidence exists, external auditor
Full comment
Compliance certification packet - local evidence exists, external auditor and legal certifications remain explicitly gated.
curl -X GET "https://kolm.ai/v1/compliance/certification-packet" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compliance/certification-packet/template reference-ready
Compliance certification manifest template - the exact evidence bundle a
Full comment
Compliance certification manifest template - the exact evidence bundle a live auditor/legal/certification claim must provide before Kolm can call compliance certifications complete.
curl -X GET "https://kolm.ai/v1/compliance/certification-packet/template" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/compliance/certification-packet/validate reference-ready
Compliance certification manifest validation - fails closed on missing
Full comment
Compliance certification manifest validation - fails closed on missing auditor/legal evidence, unsigned proof hashes, non-HTTPS evidence URLs, placeholder fields, and secret-looking values.
curl -X POST "https://kolm.ai/v1/compliance/certification-packet/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/compliance/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/compliance/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Compose (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/compose reference-ready
Compose - dispatches one query across the top-k matching kolm artifacts and
Full comment
Compose - dispatches one query across the top-k matching kolm artifacts and returns each artifact's output. Billable per non-cache, non-error dispatch. Body: { query, input, k=5, strategy='attention', tag }.
curl -X POST "https://kolm.ai/v1/compose" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Concepts (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/concepts reference-ready
Layer 2: Registry
curl -X GET "https://kolm.ai/v1/concepts" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/concepts/:id reference-ready
Concept delete - removes an owned concept and its versions; forbidden tenants receive 403.
curl -X DELETE "https://kolm.ai/v1/concepts/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/concepts/:id reference-ready
Concept detail - returns a readable concept with versions after tenant, team, or public visibility checks.
curl -X GET "https://kolm.ai/v1/concepts/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/concepts/:id/lineage reference-ready
Concept lineage - returns upstream and downstream head-version lineage after visibility checks.
curl -X GET "https://kolm.ai/v1/concepts/<id>/lineage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/concepts/:id/stats reference-ready
Per-concept usage stats: invocation count, latency percentiles, cache hit rate.
curl -X GET "https://kolm.ai/v1/concepts/<id>/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Connectors (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/connectors reference-ready
Connectors - lists upstream provider connectors (openai, anthropic,
Full comment
Connectors - lists upstream provider connectors (openai, anthropic, openrouter, etc.) with per-provider config status (key present, base URL, last reachable check). Read by /docs/connectors and `kolm connectors`.
curl -X GET "https://kolm.ai/v1/connectors" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/connectors/notify reference-ready
connector tile on the Connect tab. Appends to
Full comment
connector tile on the Connect tab. Appends to data/connector-waitlist.jsonl. Best-effort: never breaks the UI.
curl -X POST "https://kolm.ai/v1/connectors/notify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Conversations (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/conversations source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/conversations" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/conversations source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/conversations" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/conversations/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/conversations/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/conversations/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/conversations/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Copyright (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/copyright/queue/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/copyright/queue/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/copyright/scan reference-ready
heuristic (flag_reason starts with `copyright_heuristic:`).
Full comment
heuristic (flag_reason starts with `copyright_heuristic:`). Plain contract: this is HEURISTIC, not legal advice. The route stamps version:'w750-followup-vN.M' on every envelope so consumers can version-pin via regex (/^w750-followup-/).
curl -X POST "https://kolm.ai/v1/copyright/scan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Credential (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/credential/verify reference-ready
Returns: { valid: boolean, reason?: string, spec, type }
Full comment
Returns: { valid: boolean, reason?: string, spec, type } This validates the HMAC signature using the server's receipt secret. For a future Ed25519 swap, the public key would live at /.well-known/ and verification would not need server auth. Today this endpoint is open.
curl -X POST "https://kolm.ai/v1/credential/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Datasets (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/datasets reference-ready
Datasets list - returns tenant-scoped dataset summaries for captured rows.
curl -X GET "https://kolm.ai/v1/datasets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/datasets reference-ready
Dataset create - builds a tenant-stamped dataset from a namespace of captured calls.
curl -X POST "https://kolm.ai/v1/datasets" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/datasets/:id reference-ready
Dataset detail - inspects one dataset and hides cross-tenant records as not found.
curl -X GET "https://kolm.ai/v1/datasets/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/datasets/:id/split reference-ready
Dataset split - recomputes a deterministic train/holdout split for an owned dataset.
curl -X POST "https://kolm.ai/v1/datasets/<id>/split" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Deploy (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/deploy reference-ready
HTTP control plane: POST /v1/deploy + /v1/deploy/canary +
Full comment
HTTP control plane: POST /v1/deploy + /v1/deploy/canary + /v1/test-device + /v1/test-quants. All require auth (auth.js gates via PUBLIC_API allowlist; these paths are NOT in PUBLIC_API, so an unauth request returns 401 from the auth middleware). The handlers below simply do shape-validation + delegate to the same modules the CLI calls.
curl -X POST "https://kolm.ai/v1/deploy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/deploy/canary source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/deploy/canary" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/deploy/runpod source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/deploy/runpod" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/deploy/runpod/:pod_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/deploy/runpod/<pod_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/deploy/runpod/:pod_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/deploy/runpod/<pod_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/deploy/runpod/:pod_id/logs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/deploy/runpod/<pod_id>/logs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Device (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/device/check reference-ready
Device requirement check - compares a target profile against a named host profile.
curl -X POST "https://kolm.ai/v1/device/check" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/device/probe reference-ready
Device host probe - detects this server's local profile using best-effort hardware probes.
curl -X POST "https://kolm.ai/v1/device/probe" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/device/profiles reference-ready
Device capability profiles - list static target profiles for artifact compatibility checks.
curl -X GET "https://kolm.ai/v1/device/profiles" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/device/profiles/:device_id reference-ready
Device capability profile detail - returns one static profile or 404 for unknown device ids.
curl -X GET "https://kolm.ai/v1/device/profiles/<device_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Devices (18)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/devices reference-ready
Device fleet list - enumerates operator-registered device profiles newest first.
curl -X GET "https://kolm.ai/v1/devices" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/devices/:id reference-ready
Guarded so we DO NOT intercept the legacy DELETE /v1/devices/:id/install/:artifact_id
Full comment
Guarded so we DO NOT intercept the legacy DELETE /v1/devices/:id/install/:artifact_id (Express route ordering means specific routes registered earlier win; we are below /v1/devices/:id/install handler so :id here only matches single segment).
curl -X DELETE "https://kolm.ai/v1/devices/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/devices/:id reference-ready
per-file store so existing dashboards stay working.
Full comment
per-file store so existing dashboards stay working. NOTE: this is registered LAST so the more specific /v1/devices/detect, /v1/devices/list, /v1/devices/recommend, /v1/devices/installed routes above keep matching ahead of it.
curl -X GET "https://kolm.ai/v1/devices/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/:id/heartbeat source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/devices/<id>/heartbeat" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/:id/install reference-ready
Device artifact install - stages a .kolm artifact by path or hash onto a registered device.
curl -X POST "https://kolm.ai/v1/devices/<id>/install" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/devices/:id/install/:artifact_id reference-ready
Device artifact uninstall - removes a staged artifact install for one registered device.
curl -X DELETE "https://kolm.ai/v1/devices/<id>/install/<artifact_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
POST /v1/devices/:id/probe source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/devices/<id>/probe" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/:id/register reference-ready
Device fleet registration - validates and stores a canonical profile for a device id.
curl -X POST "https://kolm.ai/v1/devices/<id>/register" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/:id/test reference-ready
Device fleet test - probes reachability and runtime status for a registered device.
curl -X POST "https://kolm.ai/v1/devices/<id>/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/add reference-ready
browser-form translator for /account/fleet "Add device" modal.
Full comment
browser-form translator for /account/fleet "Add device" modal. The form posts {name, type, tags, connection:{host,user,key_path|base_url|kubeconfig,namespace}} which we flatten to DeviceRegistry.register() args.
curl -X POST "https://kolm.ai/v1/devices/add" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/devices/detect reference-ready
Device fleet detect - probes local hardware and persists the local fleet profile.
curl -X GET "https://kolm.ai/v1/devices/detect" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/detect reference-ready
Device fleet detect with hints - refreshes local inventory using optional device hints.
curl -X POST "https://kolm.ai/v1/devices/detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/devices/installed reference-ready
Device install list - returns staged artifact installs, optionally filtered by device_id.
curl -X GET "https://kolm.ai/v1/devices/installed" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/devices/list reference-ready
?type=<t>&tag=<t>&status=<t>&includeRemoved=1
curl -X GET "https://kolm.ai/v1/devices/list" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/devices/recommend reference-ready
Device recommendation default - recommends target and quantization for the detected profile.
curl -X GET "https://kolm.ai/v1/devices/recommend" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/recommend reference-ready
Device recommendation - chooses runtime target and quantization for profile/artifact inputs.
curl -X POST "https://kolm.ai/v1/devices/recommend" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/register reference-ready
Body matches DeviceRegistry.register() args:
Full comment
Body matches DeviceRegistry.register() args: { id, name?, host?, port?, user?, type, keyPath?, tags?, hardware_hint? }
curl -X POST "https://kolm.ai/v1/devices/register" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/devices/remove reference-ready
POST shim for /v1/devices/remove (fleet.html "Remove" button uses POST not DELETE).
Full comment
POST shim for /v1/devices/remove (fleet.html "Remove" button uses POST not DELETE). Accepts {name|id, hard?}. Soft delete by default.
curl -X POST "https://kolm.ai/v1/devices/remove" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Diagnose (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/diagnose reference-ready
POST mirror - body carries artifact_cid (matches existing
Full comment
POST mirror - body carries artifact_cid (matches existing /v1/pipeline/run + /v1/bakeoffs body shape).
curl -X POST "https://kolm.ai/v1/diagnose" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/diagnose/:cid reference-ready
GET twin - path param carries cid.
curl -X GET "https://kolm.ai/v1/diagnose/<cid>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Distill (11)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/distill/from-captures reference-ready
Distill from captures - turns the caller's namespace captures into either
Full comment
Distill from captures - turns the caller's namespace captures into either a recipe (template-cluster >=4 captures) or a specialist distill job (when total captures >=1000 or mode='specialist' is forced). Returns the synth result for recipes, {job_id, poll_url, bridge_source} (202) for specialists. Body: { namespace, min_pairs, mode, name }.
curl -X POST "https://kolm.ai/v1/distill/from-captures" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/from-captures/preview reference-ready
Commit (POST) picks recipe vs specialist by count (<1000 vs >=1000),
Full comment
Commit (POST) picks recipe vs specialist by count (<1000 vs >=1000), forwards to /v1/bridges/auto-synthesize (recipe) or KOLM_TRAINER_BRIDGE_URL (specialist). Errors surface as 503 (capture-store) / 400 (not_enough/ no_cluster). W364: specialist arm always returns 202 with job_id (either remote bridge or in-tree worker via src/distill-bridge.js).
curl -X GET "https://kolm.ai/v1/distill/from-captures/preview" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/distill/onpolicy reference-ready
Run an on-policy distillation against a teacher-student pair via the
Full comment
Run an on-policy distillation against a teacher-student pair via the tenant-installed trainer plug-in. Auth-gated. Body: { pairs_path, student_path, out_dir, namespace, max_steps }. Returns trainer envelope or no_trainer_installed.
curl -X POST "https://kolm.ai/v1/distill/onpolicy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/onpolicy/doctor reference-ready
Public trainer doctors. These report only local trainer availability and
Full comment
Public trainer doctors. These report only local trainer availability and install hints, so CLIs can decide whether a host is train-capable before a tenant exists. Training jobs themselves remain authenticated below.
curl -X GET "https://kolm.ai/v1/distill/onpolicy/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/distill/preference reference-ready
Train a preference-pair objective (dpo/simpo/orpo/kto) via the tenant
Full comment
Train a preference-pair objective (dpo/simpo/orpo/kto) via the tenant installed trainer plug-in. Auth-gated. Body: { pairs_path, student_path, objective, out_dir, namespace, beta }. Returns trainer envelope.
curl -X POST "https://kolm.ai/v1/distill/preference" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/preference/doctor reference-ready
Preference distillation doctor - unauthenticated capability report for the
Full comment
Preference distillation doctor - unauthenticated capability report for the DPO/SIMPO/ORPO/KTO training path and its local dependency hints.
curl -X GET "https://kolm.ai/v1/distill/preference/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/runs reference-ready
Reads ~/.kolm/distill-runs/run_<id>/{run-meta.json, progress.jsonl, manifest.json}.
Full comment
Reads ~/.kolm/distill-runs/run_<id>/{run-meta.json, progress.jsonl, manifest.json}. Tenant-scoped: listDistillRuns filters by req.tenant_record.id (fail closed on missing tag). The progress.jsonl events are emitted from distill() each step so the dashboard can replay the loss curve without re-running the job.
curl -X GET "https://kolm.ai/v1/distill/runs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/runs/:id reference-ready
Distill run detail - reads ~/.kolm/distill-runs/run_<id>/{run-meta.json,
Full comment
Distill run detail - reads ~/.kolm/distill-runs/run_<id>/{run-meta.json, progress.jsonl, manifest.json} for one run. Tenant-scoped - 404 when run belongs to another tenant or id doesn't match /^run_[a-z0-9_]+$/i.
curl -X GET "https://kolm.ai/v1/distill/runs/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/strategy reference-ready
Distill strategy plan - ranks the next backend action from current data,
Full comment
Distill strategy plan - ranks the next backend action from current data, holdout, privacy, teacher, preference, latency, and budget constraints. This planner does not launch training or call providers.
curl -X GET "https://kolm.ai/v1/distill/strategy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/distill/strategy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/distill/strategy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/distill/strategy/catalog reference-ready
Distill strategy catalog - static decision vocabulary for data collection,
Full comment
Distill strategy catalog - static decision vocabulary for data collection, rule/cache first paths, supervised fine-tune, teacher distillation, preference optimization, on-policy improvement, and speculative decoding.
curl -X GET "https://kolm.ai/v1/distill/strategy/catalog" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Draft (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/draft/save reference-ready
so authed callers can later resume; anon callers also get an id but
Full comment
so authed callers can later resume; anon callers also get an id but the persistence flag is false (the page falls back to localStorage).
curl -X POST "https://kolm.ai/v1/draft/save" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Drift (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/drift/alerts source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/drift/alerts" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/auto-remediate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/drift/auto-remediate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/configure source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/drift/configure" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/detect reference-ready
Drift detect - compares two drift snapshots (baseline vs current) and
Full comment
Drift detect - compares two drift snapshots (baseline vs current) and returns signals + verdict ('within' | 'drift' | 'breach') with breach/drift counts. Body: { baseline_snapshot, current_snapshot, tolerances }.
curl -X POST "https://kolm.ai/v1/drift/detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/report reference-ready
Drift report - builds a full drift report (signals + narrative + tolerance
Full comment
Drift report - builds a full drift report (signals + narrative + tolerance block + caller notes) from two snapshots. Same inputs as /v1/drift/detect but returns the formatted report ready for archival or UI rendering.
curl -X POST "https://kolm.ai/v1/drift/report" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/scan reference-ready
unless config.auto_remediate_drift === true AND body.dry_run !== true.
Full comment
unless config.auto_remediate_drift === true AND body.dry_run !== true. dry_run defaults to TRUE so a misclick cannot kick off a re-distill. All five are tenant-fenced via req.tenant_record.id (W411 law).
curl -X POST "https://kolm.ai/v1/drift/scan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift/snapshot reference-ready
the 12-step compile→verify→run→drift→retrain loop. W434 exposes three
Full comment
the 12-step compile→verify→run→drift→retrain loop. W434 exposes three tenant-scoped POST routes that wrap the existing pure functions. The routes are stateless (no server-side persistence) - the report's hash is verifiable client-side, so the round-trip is just "validate my inputs + compute signals + return the report you can persist anywhere."
curl -X POST "https://kolm.ai/v1/drift/snapshot" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/drift/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/drift/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Drift Alert (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/drift-alert reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/drift-alert" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/drift-alert/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/drift-alert/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift-alert/snapshot reference-ready
tie-in: when shouldAlert() fires the route calls
Full comment
tie-in: when shouldAlert() fires the route calls driftAlertStore.registerDriftWarning() so the NEXT W709 routing decision can stamp `drift_warning:true`. Plain fallback: if the W709 routing-events module is not loaded, the warning is still registered (it is in-memory) and the W709 hook simply never reads it.
curl -X POST "https://kolm.ai/v1/drift-alert/snapshot" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/drift-alert/webhooks source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/drift-alert/webhooks" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Embed (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/embed reference-ready
Tokenize-and-ingest a path (or array of paths). The path must live on the
Full comment
Tokenize-and-ingest a path (or array of paths). The path must live on the server; for now we support self-host where the kolm cloud runs alongside a tenant's mounted corpus directory. For the SaaS path we'll add an upload endpoint in Sprint 2.
curl -X POST "https://kolm.ai/v1/embed" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Embeddings (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/embeddings reference-ready array-literal expansion
OpenAI-compatible passthrough for the responses, embeddings, and
Full comment
OpenAI-compatible passthrough for the responses, embeddings, and moderations endpoints. Each routes through __connectorProxy('openai', ...) so the upstream OpenAI API is reached with the configured key, and the request/response is captured into the tenant lake.
curl -X POST "https://kolm.ai/v1/embeddings" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Evaluation (11)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/eval/adversarial/generate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/eval/adversarial/generate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/eval/benchmark-evidence reference-ready
Benchmark evidence readiness for comparative claims. This route audits
Full comment
Benchmark evidence readiness for comparative claims. This route audits local evidence files and reports the exact public data lanes still needed; it never calls providers and never returns secret values.
curl -X GET "https://kolm.ai/v1/eval/benchmark-evidence" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/eval/benchmark-evidence/template reference-ready
Benchmark evidence template - returns the strict provider/runtime lane
Full comment
Benchmark evidence template - returns the strict provider/runtime lane schema required before comparative benchmark claims can be marked public.
curl -X GET "https://kolm.ai/v1/eval/benchmark-evidence/template" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/eval/benchmark-evidence/validate reference-ready
Benchmark evidence validation - validates a proposed provider matrix
Full comment
Benchmark evidence validation - validates a proposed provider matrix without saving it, calling providers, or exposing secrets.
curl -X POST "https://kolm.ai/v1/eval/benchmark-evidence/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/eval/gate reference-ready
Compile/promote eval gate (standalone evaluation endpoint)
curl -X POST "https://kolm.ai/v1/eval/gate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/eval/k-score-calibration reference-ready
K-score calibration - public, frozen benchmark contract for the score
Full comment
K-score calibration - public, frozen benchmark contract for the score formula, 30-case suite, class mix, axis means, and manual-review leaderboard. This proves how K-score is computed; live model ranking claims require separate public benchmark evidence.
curl -X GET "https://kolm.ai/v1/eval/k-score-calibration" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/eval/quality-calibration reference-ready
Quality judge calibration - public, deterministic fixture for the
Full comment
Quality judge calibration - public, deterministic fixture for the per-call quality judge. This is calibration evidence, not a broad claim that autonomous judging matches every review domain.
curl -X GET "https://kolm.ai/v1/eval/quality-calibration" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/eval/tenant_holdout reference-ready
Tenant holdout list - returns the authenticated tenant's retained shadow corpus metadata.
curl -X GET "https://kolm.ai/v1/eval/tenant_holdout" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/eval/tenant_holdout reference-ready
All four are authed (mounted below authMiddleware) and per-tenant scoped:
Full comment
All four are authed (mounted below authMiddleware) and per-tenant scoped: a tenant can only read/write/delete corpora under its own tenant_id. The tenant_id is derived from req.tenant_record.id (the authenticated tenant) rather than accepted as a body field, so a forged tenant_id is impossible.
curl -X POST "https://kolm.ai/v1/eval/tenant_holdout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/eval/tenant_holdout/:corpus_id reference-ready
Tenant holdout delete - removes one authenticated tenant corpus and audits the deletion.
curl -X DELETE "https://kolm.ai/v1/eval/tenant_holdout/<corpus_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/eval/tenant_holdout/:corpus_id reference-ready
Tenant holdout detail - returns hash and size metadata without exposing corpus rows.
curl -X GET "https://kolm.ai/v1/eval/tenant_holdout/<corpus_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Evidence (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/evidence source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/evidence" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/evidence/ source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/evidence/" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/evidence/:id reference-ready
Looks up the owning artifact via the per-node reverse index; returns
Full comment
Looks up the owning artifact via the per-node reverse index; returns the verbatim node record (id, kind, plus any caller-supplied attrs). 404 when the node id is not in any artifact's DAG.
curl -X GET "https://kolm.ai/v1/evidence/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/evidence/:id/revoke reference-ready
lifecycle revoke transition).
Full comment
lifecycle revoke transition). Returns { revoked, needs_review[] }. The revoke verdict does NOT mutate the artifact's signed receipt - receipts seal bytes, not operational provenance - so propagation is a verdict written to the caller's audit trail, not a state-machine transition.
curl -X POST "https://kolm.ai/v1/evidence/<id>/revoke" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/evidence/readiness reference-ready
Evidence readiness - one public, secret-safe aggregate for every proof gate
Full comment
Evidence readiness - one public, secret-safe aggregate for every proof gate that can keep product copy from saying "final" too early. This mirrors `kolm evidence --json` so account UI, docs, CLI, and release audits share the same local/external boundary.
curl -X GET "https://kolm.ai/v1/evidence/readiness" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Experts (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/experts reference-ready
Body: { artifact_path, threshold? }
Full comment
Body: { artifact_path, threshold? } The artifact must be operator-side (path on the server). Returns per-expert activation + prune candidates + estimated K-Score impact.
curl -X POST "https://kolm.ai/v1/experts" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Export (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/export reference-ready
gguf/awq/exl2/mlx/onnx/tflite/coreml/openvino). Returns the plan +
Full comment
gguf/awq/exl2/mlx/onnx/tflite/coreml/openvino). Returns the plan + estimated size + invocation hint; actual export runs via the CLI worker.
curl -X POST "https://kolm.ai/v1/export" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Exports (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/exports source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/exports" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/exports source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/exports" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/exports/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/exports/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Failure Modes (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/failure-modes reference-ready
POST mirror - body carries artifact_cid.
curl -X POST "https://kolm.ai/v1/failure-modes" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/failure-modes/:cid reference-ready
GET twin - path param carries cid.
curl -X GET "https://kolm.ai/v1/failure-modes/<cid>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/failure-modes/feed-active-learning reference-ready
Auth-gated via req.tenant_record. Tenant fence is forced from the
Full comment
Auth-gated via req.tenant_record. Tenant fence is forced from the authenticated record - any body.tenant value is overridden so a caller cannot point this at another tenant's namespace. The namespace IS read from the body because a single tenant routinely operates many namespaces and W816 closes the loop per-namespace.
curl -X POST "https://kolm.ai/v1/failure-modes/feed-active-learning" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Federated (13)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/federated/aggregate reference-ready
Federated approval aggregate - returns DP-noised counts across local and peer approval hashes.
curl -X POST "https://kolm.ai/v1/federated/aggregate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/audit reference-ready
Federated audit - returns recent hash-only approval-share envelopes for the tenant.
curl -X GET "https://kolm.ai/v1/federated/audit" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/consortium reference-ready
/v1/federated/consortium - bare GET that points the TUI at the W830
Full comment
/v1/federated/consortium - bare GET that points the TUI at the W830 members collection. The federated-consortium-routes module owns the tenant-scoped membership reads; here we add a no-query alias that returns the empty-state envelope when no consortium_id is supplied so the TUI view always has something to render.
curl -X GET "https://kolm.ai/v1/federated/consortium" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/consortium/aggregations reference-ready
Returns recent aggregation runs with status, epsilon spent, and
Full comment
Returns recent aggregation runs with status, epsilon spent, and participant count. Defense-in-depth: only returns rows where this tenant is a participant OR rows are visible to the consortium's listed members (default).
curl -X GET "https://kolm.ai/v1/federated/consortium/aggregations" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/consortium/budget reference-ready
Returns the consortium-wide privacy budget: epsilon_spent (summed across
Full comment
Returns the consortium-wide privacy budget: epsilon_spent (summed across recorded aggregation rounds) vs epsilon_allocated (from the consortium state). Also surfaces per-tenant epsilon_spent_by_self so a tenant can see how much budget THEY have burned.
curl -X GET "https://kolm.ai/v1/federated/consortium/budget" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/consortium/members reference-ready
Returns the list of opted-in members. Every member row includes its
Full comment
Returns the list of opted-in members. Every member row includes its contribution_count + last_share_at so the UI can show "who's pulling their weight". The caller's own member row is always included.
curl -X GET "https://kolm.ai/v1/federated/consortium/members" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/federated/consortium/opt-in reference-ready
Body: { consortium_id, scope?:[ns...], epsilon_allocated?:number, note? }
Full comment
Body: { consortium_id, scope?:[ns...], epsilon_allocated?:number, note? } Writes the member row into the consortium's single-tenant view + audits contribution_count=0 baseline + last_share_at=null.
curl -X POST "https://kolm.ai/v1/federated/consortium/opt-in" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/federated/consortium/opt-out reference-ready
Body: { consortium_id, reason? }
curl -X POST "https://kolm.ai/v1/federated/consortium/opt-out" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/federated/consortium/verify-mia reference-ready
Body: { artifact_id, test_inputs:[...], shadow_models?:[...],
Full comment
Body: { artifact_id, test_inputs:[...], shadow_models?:[...], train_set?:[...], holdout_set?:[...], p_threshold? } Plain stub when shadow_models empty (returns mia_requires_shadow_models).
curl -X POST "https://kolm.ai/v1/federated/consortium/verify-mia" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/federated/opt-in reference-ready
Federated opt-in - records tenant namespaces and peers for hash-only approval sharing.
curl -X POST "https://kolm.ai/v1/federated/opt-in" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/federated/opt-out reference-ready
Federated opt-out - clears tenant approval-sharing opt-in state and records the reason.
curl -X POST "https://kolm.ai/v1/federated/opt-out" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/federated/peers reference-ready
Federated peers - lists other opted-in approval-sharing peers visible to the tenant.
curl -X GET "https://kolm.ai/v1/federated/peers" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Fit (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/fit reference-ready
Body: { model_params_b, quant, vram_gb, context?, batch?, kv_precision? }
Full comment
Body: { model_params_b, quant, vram_gb, context?, batch?, kv_precision? } Returns the same envelope as the CLI: {fits, est_total_gb, est_weights_gb, est_kv_gb, est_activations_gb, headroom_gb, recommendation}.
curl -X POST "https://kolm.ai/v1/fit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Fl (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/fl/aggregate reference-ready
Federated aggregate - folds verified client deltas into one foundation-state aggregate receipt.
curl -X POST "https://kolm.ai/v1/fl/aggregate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/fl/contribution/verify reference-ready
Federated contribution verify - checks a client update receipt against the announced round.
curl -X POST "https://kolm.ai/v1/fl/contribution/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/fl/round/new reference-ready
Federated round create - creates a foundation-state round and returns its stable round hash.
curl -X POST "https://kolm.ai/v1/fl/round/new" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/fl/strategies reference-ready
federated learning
curl -X GET "https://kolm.ai/v1/fl/strategies" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Fleet (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/fleet/deploy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/fleet/deploy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/fleet/monitor reference-ready
For long-running monitoring use the CLI `kolm fleet monitor` instead.
curl -X GET "https://kolm.ai/v1/fleet/monitor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/fleet/rollback reference-ready
Browser button passes {device}; CLI passes {tag|namespace, confirm:true}.
curl -X POST "https://kolm.ai/v1/fleet/rollback" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/fleet/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/fleet/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/fleet/stop source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/fleet/stop" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Free (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/free/chat reference-ready
20 messages/day to tinker with the intent classifier; if a tenant key is
Full comment
20 messages/day to tinker with the intent classifier; if a tenant key is attached the route upgrades to the full /v1/intent/ask snapshot. This is the SAME pipe pre-auth and post-auth, so the homepage chat box and the /account console chat box share the contract. Anon callers cannot read tenant state - snapshotContext is called with tenant_id=null.
curl -X POST "https://kolm.ai/v1/free/chat" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/free/cli source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/free/cli" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/free/cli/allowlist source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/free/cli/allowlist" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Gateway (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/gateway/dashboard reference-ready
W-G wrapper-completion - GET /v1/gateway/dashboard
Full comment
W-G wrapper-completion - GET /v1/gateway/dashboard Aggregate routing breakdown + cost-savings + recent calls for the /account/gateway.html dashboard. Tenant-scoped via findByTenant.
curl -X GET "https://kolm.ai/v1/gateway/dashboard" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/gateway/dispatch reference-ready
6. Build the kolm-audit-1 receipt, sign it, persist + return.
Full comment
6. Build the kolm-audit-1 receipt, sign it, persist + return. Every fallback marks `capture_eligible: true` so the flywheel picks up the cases where the local model fell short.
curl -X POST "https://kolm.ai/v1/gateway/dispatch" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/gateway/health reference-ready
5 - public gateway liveness probe. Mirrors /health for the
Full comment
5 - public gateway liveness probe. Mirrors /health for the gateway sub-system: ok:true + version + module-loadable signal. Mounted before r.use(authMiddleware) so it is reachable without an API key. Ship-gate consumers use this to confirm the gateway dispatch path is wired without paying for a real upstream call.
curl -X GET "https://kolm.ai/v1/gateway/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
GET /v1/gateway/mode reference-ready
Auth-gated (mounted after r.use(authMiddleware)). Probes both local backends
Full comment
Auth-gated (mounted after r.use(authMiddleware)). Probes both local backends with a 1-second HEAD timeout so a slow / unreachable backend never blocks the dashboard. The response surfaces the resolved mode (NOT the raw env value) so a callers sees what currentMode() actually decided.
curl -X GET "https://kolm.ai/v1/gateway/mode" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/gateway/providers reference-ready
W-G wrapper-completion - GET /v1/gateway/providers
Full comment
W-G wrapper-completion - GET /v1/gateway/providers Return the 11 supported providers with the customer's per-tenant config overlaid (enabled, rate_limit, position-in-chain). Reads the registry for the canonical list, then merges per-tenant overrides if any.
curl -X GET "https://kolm.ai/v1/gateway/providers" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/gateway/providers/config reference-ready
W-G wrapper-completion - POST /v1/gateway/providers/config
Full comment
W-G wrapper-completion - POST /v1/gateway/providers/config Persist per-tenant provider overrides (enabled toggle, position-in-chain, RPM limit). API keys are NEVER stored in the row - operators set them as environment variables; we only persist the FLAG that one is set.
curl -X POST "https://kolm.ai/v1/gateway/providers/config" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/gateway/test-connection reference-ready
W-G wrapper-completion - POST /v1/gateway/test-connection
Full comment
W-G wrapper-completion - POST /v1/gateway/test-connection Fire a tiny ping against an upstream to verify the key works. Body: {provider: 'anthropic', api_key: 'sk-ant-...'}. Returns {ok, status, elapsed_ms} but never echoes the key back.
curl -X POST "https://kolm.ai/v1/gateway/test-connection" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Gemini (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/gemini/chat/completions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/gemini/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/gemini/v1/chat/completions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/gemini/v1/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Govern (18)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/govern/anchor/batch reference-ready
ANCHOR - Merkle batch anchoring of receipts.
curl -X POST "https://kolm.ai/v1/govern/anchor/batch" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/anchor/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/anchor/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/anchor/verify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/govern/anchor/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/c2pa/sign reference-ready
C2PA - content credentials for model outputs.
curl -X POST "https://kolm.ai/v1/govern/c2pa/sign" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/c2pa/verify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/govern/c2pa/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/compliance/ai-act/art12 source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/compliance/ai-act/art12" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/compliance/ai-act/art12-export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/compliance/ai-act/art12-export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/compliance/ai-act/art72 source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/compliance/ai-act/art72" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/compliance/export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/compliance/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/compliance/frameworks reference-ready
COMPLIANCE - framework evidence + EU AI Act live reports.
curl -X GET "https://kolm.ai/v1/govern/compliance/frameworks" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/drift/standard reference-ready
DRIFT - standard signals.
curl -X GET "https://kolm.ai/v1/govern/drift/standard" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/intoto/:receipt_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/intoto/<receipt_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/intoto/verify reference-ready
body: { bundle | envelope, public_key?, subject_digest_map? }
curl -X POST "https://kolm.ai/v1/govern/intoto/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/provenance/build reference-ready
PROVENANCE - in-toto / SLSA build provenance.
curl -X POST "https://kolm.ai/v1/govern/provenance/build" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/provenance/verify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/govern/provenance/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/govern/transparency/append source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/govern/transparency/append" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/transparency/head source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/transparency/head" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/govern/transparency/proof/:seq source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/govern/transparency/proof/<seq>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Groups (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/groups source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/groups" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/groups source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/groups" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/groups/:slug source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/groups/<slug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/groups/:slug source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/groups/<slug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/groups/:slug source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/groups/<slug>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Hardware (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/hardware reference-ready
Unauthed: returns the operator's local accelerator profile so an Account UI
Full comment
Unauthed: returns the operator's local accelerator profile so an Account UI running on the same host can render a "what fits" picker without auth.
curl -X GET "https://kolm.ai/v1/hardware" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Health (1)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/health reference-ready
Authenticated /v1/health - full snapshot including provider availability
Full comment
Authenticated /v1/health - full snapshot including provider availability and feature flags. Admin-only because the booleans are useful signal for staff debugging but unnecessary surface for tenants. Public /health (above the authMiddleware) is the lightweight no-leak version.
curl -X GET "https://kolm.ai/v1/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
Hub (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/hub source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/hub" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/hub/:owner/:name source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/hub/<owner>/<name>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/hub/:owner/:name/download source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/hub/<owner>/<name>/download" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/hub/publish reference-ready
body: { name, visibility?: 'public'|'private', artifact_b64, metadata? }
Full comment
body: { name, visibility?: 'public'|'private', artifact_b64, metadata? } Stores the artifact bytes + metadata. Returns { handle, owner, name, sha256, url }.
curl -X POST "https://kolm.ai/v1/hub/publish" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Import (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/import/inspect reference-ready
Both routes are auth-gated. The python3 parsers live in
Full comment
Both routes are auth-gated. The python3 parsers live in apps/import/{gguf,safetensors,onnx}.py and run in-process via spawnSync from src/import.js; missing python3 surfaces a 503 python3_missing envelope - never a 500, never a silent fake.
curl -X POST "https://kolm.ai/v1/import/inspect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/import/wrap source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/import/wrap" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Inspect (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/inspect reference-ready
Body: { model_id?: string, kolm_path?: string }
Full comment
Body: { model_id?: string, kolm_path?: string } For HF id: fetches config.json over the public HF endpoint. For .kolm: reads manifest from disk (operator-side path) with signature bypass since inspection is read-only.
curl -X POST "https://kolm.ai/v1/inspect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Integrations (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
DELETE /v1/integrations/runpod source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/integrations/runpod" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/integrations/runpod source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/integrations/runpod" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/integrations/runpod source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/integrations/runpod" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/integrations/runpod/test source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/integrations/runpod/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Intent (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/intent/ask source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/intent/ask" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/intent/next reference-ready
pair locally; this route runs it server-side so the post-auth dashboard
Full comment
pair locally; this route runs it server-side so the post-auth dashboard can render the same top-N ranked actions without shelling out. Auth-gated. Response envelope: { ok, recommendations: [{action, command, why, rank}], generated_at, snapshot_summary: {captures, opps, ...} }
curl -X GET "https://kolm.ai/v1/intent/next" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Ir (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/ir/compile reference-ready
ir
curl -X POST "https://kolm.ai/v1/ir/compile" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ir/replay reference-ready
IR replay - replays every workflow IR seed and reports deterministic mismatches.
curl -X POST "https://kolm.ai/v1/ir/replay" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ir/stats reference-ready
IR stats - validates a body-supplied workflow IR and returns node, edge, seed, kind, and hash counts.
curl -X POST "https://kolm.ai/v1/ir/stats" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/ir/validate reference-ready
IR validate - checks body-supplied workflow IR structure and returns its receipt-bound hash.
curl -X POST "https://kolm.ai/v1/ir/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Jobs (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/jobs/:id reference-ready
Job status (used by HF / URL queued jobs + W229 on-disk job registry +
Full comment
Job status (used by HF / URL queued jobs + W229 on-disk job registry + distill bridge). Order: corpus_jobs / specialists in-DB, then the src/jobs.js per-file on-disk registry.
curl -X GET "https://kolm.ai/v1/jobs/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Keys (5)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/keys/challenge reference-ready
Key challenge - issues a proof-of-control nonce for Ed25519 key registration.
curl -X POST "https://kolm.ai/v1/keys/challenge" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/keys/public reference-ready
Public keys list - returns registered Ed25519 verification keys and directory stats.
Full comment
Public keys list - returns registered Ed25519 verification keys and directory stats. additionally surface the default receipt signing pubkey under source:'system' so /v1/verify callers can discover it without going through the challenge→sign→register flow first.
curl -X GET "https://kolm.ai/v1/keys/public" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/keys/public/:fingerprint reference-ready
Public key delete - admin-only removal of a registered verification key.
curl -X DELETE "https://kolm.ai/v1/keys/public/<fingerprint>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/keys/public/:fingerprint reference-ready
Public key lookup - fetches one registered Ed25519 key by short or full fingerprint.
curl -X GET "https://kolm.ai/v1/keys/public/<fingerprint>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/keys/register reference-ready
Key register - verifies a signed challenge nonce and publishes the Ed25519 public key.
curl -X POST "https://kolm.ai/v1/keys/register" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Kolmbench (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/kolmbench/leaderboard source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/kolmbench/leaderboard" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/kolmbench/spec reference-ready
only + safe to cache. Both POST routes require auth via the standard
Full comment
only + safe to cache. Both POST routes require auth via the standard middleware path; submit additionally requires body.confirm:true as a spend-protection gate (the W411 confirm-pattern). Plain envelopes on every degraded path.
curl -X GET "https://kolm.ai/v1/kolmbench/spec" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/kolmbench/submit source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/kolmbench/submit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/kolmbench/validate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/kolmbench/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Kscore (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/kscore/series reference-ready
K-score time series for the namespaces flywheel chart (recorded by
Full comment
K-score time series for the namespaces flywheel chart (recorded by the autopilot lifecycle). Tenant-fenced; plain empty series when none.
curl -X GET "https://kolm.ai/v1/kscore/series" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Label Queue (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/label-queue/audit/:event_id reference-ready
full audit trail for a single event_id. Tests assert that every
Full comment
full audit trail for a single event_id. Tests assert that every approval/reject/edit decision is recorded with reviewer + timestamp + before/after output. The legacy /v1/labels/:event_id returns the last label only; this endpoint returns the whole sequence.
curl -X GET "https://kolm.ai/v1/label-queue/audit/<event_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/label-queue/next reference-ready
The /account/labeling.html UI uses concrete label-queue aliases for the
Full comment
The /account/labeling.html UI uses concrete label-queue aliases for the canonical labels routes. Rather than chase the legacy page (and break any client polling the old paths), we alias the known endpoints. The shapes also tolerate the older field names (label vs verdict, accepted vs approved, pending vs decided).
curl -X GET "https://kolm.ai/v1/label-queue/next" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/label-queue/stats reference-ready
Label-queue stats alias; adapts canonical labels stats names for the legacy UI.
curl -X GET "https://kolm.ai/v1/label-queue/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/label-queue/submit reference-ready
Label-queue submit alias; accepts legacy label names and stores canonical verdicts.
curl -X POST "https://kolm.ai/v1/label-queue/submit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Labels (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/labels reference-ready
Label submit - records a reviewer verdict for one event and blocks cross-tenant decisions.
curl -X POST "https://kolm.ai/v1/labels" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/labels/:event_id reference-ready
Label detail - fetches one persisted decision and hides cross-tenant event ids.
curl -X GET "https://kolm.ai/v1/labels/<event_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/labels/next reference-ready
Labels next - returns tenant-scoped unlabeled events with optional namespace/workflow filters.
curl -X GET "https://kolm.ai/v1/labels/next" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/labels/stats reference-ready
Labels stats - returns tenant-scoped pending, approved, rejected, and edited counts.
curl -X GET "https://kolm.ai/v1/labels/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/labels/synthesize-corpus reference-ready
Returns the captured (input, output) pairs for a namespace as JSONL or
Full comment
Returns the captured (input, output) pairs for a namespace as JSONL or a JSON envelope. This is what `kolm labels` downloads. Counts go to the status command so the customer can see "ready to distill at 1000 pairs." 1: reads via the durable capture-store (listCaptures) so the distillation corpus comes from the same backend the proxy writes to.
curl -X GET "https://kolm.ai/v1/labels/synthesize-corpus" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Lake (9)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/lake/contribute source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/lake/contribute" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/export reference-ready
Supports format=jsonl (default) | json | csv. Streams the buffer back.
curl -X GET "https://kolm.ai/v1/lake/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lake/opt-in reference-ready
The W751 GET /v1/verticals/:id/fingerprint route already exists above; the
Full comment
The W751 GET /v1/verticals/:id/fingerprint route already exists above; the module is consumed via the new pattern-lake helpers. New code paths (CLI lake subverbs, the W757 docs page) call these routes directly.
curl -X POST "https://kolm.ai/v1/lake/opt-in" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lake/opt-out source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/lake/opt-out" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/repeated reference-ready
Lake repeated - finds clusters of repeated workflow inputs in the event
Full comment
Lake repeated - finds clusters of repeated workflow inputs in the event store (the W384 "repeated workflows" surface). Returns up to ?limit (max 200, default 20) clusters with their representative input + member count.
curl -X GET "https://kolm.ai/v1/lake/repeated" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/stats reference-ready
Lake stats - per-tenant event-store roll-up: row counts, byte size, oldest
Full comment
Lake stats - per-tenant event-store roll-up: row counts, byte size, oldest and newest timestamps, namespace breakdown. Accepts ?namespace, ?since, ?provider, ?model, ?status, ?min_latency_ms, ?max_latency_ms, and ?exclude_errors filters. Scoped via _tenantScope; admin sees cross-tenant aggregate.
curl -X GET "https://kolm.ai/v1/lake/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/storage reference-ready
dashboard can show "Local storage: ~/.kolm/events/events.sqlite (12 MB)".
Full comment
dashboard can show "Local storage: ~/.kolm/events/events.sqlite (12 MB)". Returns the same envelope storeInfo() emits, plus a coarse byte total.
curl -X GET "https://kolm.ai/v1/lake/storage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/tail reference-ready
Reads directly from the event-store (NOT capture-store). Default limit
Full comment
Reads directly from the event-store (NOT capture-store). Default limit 50, capped at 500. Returns newest first.
curl -X GET "https://kolm.ai/v1/lake/tail" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lake/trends source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/lake/trends" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Lang (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/lang/augment-multilingual source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/lang/augment-multilingual" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lang/detect reference-ready
* Wilson 95% CI gated at n>=30 PER LANGUAGE. Below that the per-lang
Full comment
* Wilson 95% CI gated at n>=30 PER LANGUAGE. Below that the per-lang k_score is null - never estimated. * augment-multilingual is dry_run by default. confirm:true required to incur translator cost. teacher_caller is DI'd from req.app.locals so tests never hit a real translation API.
curl -X POST "https://kolm.ai/v1/lang/detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lang/kscore-by-lang/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/lang/kscore-by-lang/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Lead (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/lead/enterprise reference-ready
Enterprise inquiry intake (KOLM-102)
Full comment
Enterprise inquiry intake (KOLM-102) Public POST from /enterprise/inquiry. Validates 7 required fields, persists to in-memory enterpriseLeads, and emails sales@kolm.ai via Resend (best effort - sendMail() returns { skipped: true } when RESEND_API_KEY is unset).
curl -X POST "https://kolm.ai/v1/lead/enterprise" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lead/enterprise/:id reference-ready
Admin-only read of a single enterprise lead. Useful for ops triage and
Full comment
Admin-only read of a single enterprise lead. Useful for ops triage and for verifying the in-memory store after a submit during e2e checks.
curl -X GET "https://kolm.ai/v1/lead/enterprise/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Library (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/library reference-ready
Library - returns the bundled kolm runtime library version and a human
Full comment
Library - returns the bundled kolm runtime library version and a human description string. Used by the SDKs and `kolm version` for the runtime-library identifier (separate from the API/server version).
curl -X GET "https://kolm.ai/v1/library" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Lineage (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/lineage/build reference-ready
lineage + capability
curl -X POST "https://kolm.ai/v1/lineage/build" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lineage/validate reference-ready
Lineage validate - checks an artifact-lineage block for structural
Full comment
Lineage validate - checks an artifact-lineage block for structural consistency (parent links, build steps, version pins). Returns {ok:true, block} when the lineage is well-formed, {ok:false, error} otherwise.
curl -X POST "https://kolm.ai/v1/lineage/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Lingual (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/lingual/distribution source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/lingual/distribution" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lingual/manifest reference-ready
/v1/lingual/manifest - bare GET aliasing the W833 manifest collection.
Full comment
/v1/lingual/manifest - bare GET aliasing the W833 manifest collection. The shipped route is /v1/lingual/manifest/:artifact_id; without an artifact_id selected (the TUI default state) we return the tenant-wide language-mixture distribution so the view still renders.
curl -X GET "https://kolm.ai/v1/lingual/manifest" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/lingual/manifest/:artifact_id reference-ready
Reads the per-language K-Score block off an artifact's manifest.
Full comment
Reads the per-language K-Score block off an artifact's manifest. Looks up the manifest via src/artifact.js (or registry.js) when available; falls back to an plain "no_manifest_found" envelope when the artifact isn't registered.
curl -X GET "https://kolm.ai/v1/lingual/manifest/<artifact_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lingual/mixture/auto-balance source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/lingual/mixture/auto-balance" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/lingual/synthesize source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/lingual/synthesize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Long Context (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/long-context/check source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/long-context/check" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/long-context/p90 reference-ready
Tenant fence: tenant_id forced from req.tenant_record.id; query/body
Full comment
Tenant fence: tenant_id forced from req.tenant_record.id; query/body never override. Returns plain envelope (no_captures, insufficient_samples) rather than throwing. version stamp matches /^w781-/.
curl -X GET "https://kolm.ai/v1/long-context/p90" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Value-loop (1)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/loop/try reference-ready
public anonymous "try it" demo of the capture-receipt shape.
Full comment
public anonymous "try it" demo of the capture-receipt shape. No auth, no write side-effects; visitors on /value-loop POST a prompt+response and see the exact same receipt envelope a real authenticated /v1/bridges/observe would emit, with `demo:true` + `durable:false` so the body cannot lie.
curl -X POST "https://kolm.ai/v1/loop/try" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Marketplace (20)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/marketplace reference-ready
Marketplace list - filters artifacts and overlays live verification before returning rows.
curl -X GET "https://kolm.ai/v1/marketplace" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/:slug reference-ready
Marketplace detail - returns one artifact with live verification state or 404 for unknown slugs.
curl -X GET "https://kolm.ai/v1/marketplace/<slug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/:slug/download reference-ready
W339/W342 - install/download MUST refuse artifacts that don't pass
Full comment
W339/W342 - install/download MUST refuse artifacts that don't pass productionReady(). Same gate the marketplace pill uses, so a user who sees no "Verified" badge ALSO can't `kolm marketplace install` it. force allowed via ?force=true query for CI testing / canary debug, matching `kolm run --force` semantics.
curl -X GET "https://kolm.ai/v1/marketplace/<slug>/download" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/catalog.json reference-ready
Marketplace catalog manifest - returns the signed catalog with live production-ready verdicts.
curl -X GET "https://kolm.ai/v1/marketplace/catalog.json" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/download/:id reference-ready
Auth-gated. Streams artifact_uri bytes; records download counter.
Full comment
Auth-gated. Streams artifact_uri bytes; records download counter. 402 if listing.paid AND tenant lacks entitlement.
curl -X GET "https://kolm.ai/v1/marketplace/download/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/facets reference-ready
Pure read: returns the enum set so the UI sidebar can render filter
Full comment
Pure read: returns the enum set so the UI sidebar can render filter chips without hard-coding the lists in two places.
curl -X GET "https://kolm.ai/v1/marketplace/facets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/finetune reference-ready
Auth-gated. Queue a transfer-learning fine-tune from a marketplace artifact.
curl -X POST "https://kolm.ai/v1/marketplace/finetune" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/interest reference-ready
IP per 24h (see marketplaceInterestLimiter above).
Full comment
IP per 24h (see marketplaceInterestLimiter above). Returns { ok, position } where position is the row's stable 1-indexed place in the early-access list. Stable means the position does not change on dedupe (we read the existing row's position back out).
curl -X POST "https://kolm.ai/v1/marketplace/interest" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/list reference-ready
explicit list endpoint used by /marketplace.html client render.
Full comment
explicit list endpoint used by /marketplace.html client render. Always returns { artifacts: [...] } with live verified flag.
curl -X GET "https://kolm.ai/v1/marketplace/list" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/listings reference-ready
Public read. Returns {ok:true, rows, total, page, limit, sort_by, all_count}.
curl -X GET "https://kolm.ai/v1/marketplace/listings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/listings source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/marketplace/listings" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/payout-cycle reference-ready
Auth-gated. Forecast-only: aggregates revenue ledger and emits payout
Full comment
Auth-gated. Forecast-only: aggregates revenue ledger and emits payout audit rows. Returns the per-listing split.
curl -X POST "https://kolm.ai/v1/marketplace/payout-cycle" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/publish reference-ready
Distinct from /v1/marketplace/publish-request (manual review queue)
Full comment
Distinct from /v1/marketplace/publish-request (manual review queue) this endpoint is the programmatic publish path the CLI uses after pipeline-ship has already enforced the production gate locally.
curl -X POST "https://kolm.ai/v1/marketplace/publish" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/publish-request reference-ready
Marketplace publish request - queues an artifact proposal for manual review without publishing bytes.
curl -X POST "https://kolm.ai/v1/marketplace/publish-request" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/rate reference-ready
Auth-gated. Anti-gaming: 403 unless account_age >= 7d AND prior download.
curl -X POST "https://kolm.ai/v1/marketplace/rate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/ratings/:id reference-ready
Public read of aggregate ratings.
curl -X GET "https://kolm.ai/v1/marketplace/ratings/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/reviews source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/marketplace/reviews" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/reviews/:cid source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/marketplace/reviews/<cid>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/marketplace/search reference-ready
* empty search results -> {ok:false, error:'marketplace_empty',
Full comment
* empty search results -> {ok:false, error:'marketplace_empty', hint:'no artifacts registered yet', results:[]} * unauth POST -> 401 + {error:'auth_required'} * invalid payload -> 400 + {error:'<code>', detail:<msg>}
curl -X GET "https://kolm.ai/v1/marketplace/search" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/marketplace/upload reference-ready
Auth-gated. Body: {artifact_uri, manifest_sha256, signature_b64,
Full comment
Auth-gated. Body: {artifact_uri, manifest_sha256, signature_b64, public_key_pem, id, title, vertical, task_type, hardware_targets[], k_score, teacher_model, paid, price_micro_usd}. publisher_tenant_id is FORCED from req.tenant_record.id.
curl -X POST "https://kolm.ai/v1/marketplace/upload" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Mcp (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/mcp reference-ready
MCP server (JSON-RPC 2.0)
curl -X POST "https://kolm.ai/v1/mcp" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/mcp/dispatch reference-ready
transport?: 'stdio'|'http'|'sse',
Full comment
transport?: 'stdio'|'http'|'sse', server_id?: string, // MCP server registry id call_id?: string, // pin for a reproducible id now?: number|string // injected clock (tests / determinism) }
curl -X POST "https://kolm.ai/v1/mcp/dispatch" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/mcp/verify/:id reference-ready
Tenant-fenced: only returns a receipt minted under THIS tenant. The verify
Full comment
Tenant-fenced: only returns a receipt minted under THIS tenant. The verify result is deterministic (recompute canonical + Ed25519 check; no network).
curl -X GET "https://kolm.ai/v1/mcp/verify/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Me (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/me/models reference-ready
Model entitlements (employee/team model access)
curl -X GET "https://kolm.ai/v1/me/models" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Media (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/media/redact reference-ready
Media redact - text-extractable media redactor. Accepts {media_uri | text,
Full comment
Media redact - text-extractable media redactor. Accepts {media_uri | text, mime} and either redacts inline text or loads the blob, sniffs mime, and routes text-extractable kinds (text/json/yaml/xml) through /v1/redact. Non-text kinds (image/audio/video/pdf) return {deferred:true, deferral} with a worker hint instead of attempting heavy ML in-process.
curl -X POST "https://kolm.ai/v1/media/redact" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/media/redact-job reference-ready
envelope so the caller knows exactly what to install.
Full comment
envelope so the caller knows exactly what to install. Body: { media_uri | path, mime?, kind?, max_bytes?, model?, lang? } Sync mode (default): worker runs in-process via spawnSync. For long whisper passes, callers should pass {async:true} (deferred to W455).
curl -X POST "https://kolm.ai/v1/media/redact-job" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/media/redact-job/doctor reference-ready
worker self-doctor proxied through the API so `kolm media
Full comment
worker self-doctor proxied through the API so `kolm media doctor --remote` can ask the server which extractors are wired.
curl -X GET "https://kolm.ai/v1/media/redact-job/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Memory (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/memory/recall reference-ready
Given a query, find recipes tagged with that namespace, run them, and return the merged result.
curl -X POST "https://kolm.ai/v1/memory/recall" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Merge (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/merge reference-ready
Body: { base, head, method?, alpha?, dry_run? }
Full comment
Body: { base, head, method?, alpha?, dry_run? } Returns the merge envelope (lineage check, kscore delta heuristic, output path). When dry_run=true, no artifact is written.
curl -X POST "https://kolm.ai/v1/merge" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/merge/:id reference-ready
Returns the durable merge_jobs record (status queued|running|completed|
Full comment
Returns the durable merge_jobs record (status queued|running|completed| planned|failed). Tenant-scoped: a tenant can only read its own merge jobs.
curl -X GET "https://kolm.ai/v1/merge/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Anthropic-compatible messages (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/messages reference-ready
Anthropic direct + alias.
curl -X POST "https://kolm.ai/v1/messages" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Meta (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/meta/predict source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/meta/predict" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/meta/retrain source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/meta/retrain" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/meta/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/meta/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Metrics (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/metrics/event source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/metrics/event" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/metrics/snapshot source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/metrics/snapshot" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Migrate (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/migrate/discover reference-ready
{ok, manifest, source_metadata, ...}.
Full comment
{ok, manifest, source_metadata, ...}. Both are auth-gated. Discovery is local-filesystem only - no network call leaves the box. The python3 GGUF parser is reused; missing python3 surfaces a 503 envelope on the wrap path.
curl -X POST "https://kolm.ai/v1/migrate/discover" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/migrate/wrap source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/migrate/wrap" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Mit (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/mit/run reference-ready
* The forget route ALWAYS writes the audit event before returning ok.
Full comment
* The forget route ALWAYS writes the audit event before returning ok. Idempotency is checked inside src/capture-forget.js (existing marker returns the original audit_event_id without writing a second row). * Tenant fence everywhere: every read/write is keyed on req.tenant_record.id; defense-in-depth lives inside capture-forget.js.
curl -X POST "https://kolm.ai/v1/mit/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/mit/scan-pii source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/mit/scan-pii" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Model Card (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/model-card/generate reference-ready
MUST regex-match (W604 anti-brittleness).
Full comment
MUST regex-match (W604 anti-brittleness). Modules import lazily so cold daemons that never hit this surface don't pay for the schema/emitter trees.
curl -X POST "https://kolm.ai/v1/model-card/generate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/model-card/governance-mappings source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/model-card/governance-mappings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/model-card/schema source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/model-card/schema" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Models (11)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/models reference-ready
other teachers, but rows whose family hints at an Anthropic-shaped
Full comment
other teachers, but rows whose family hints at an Anthropic-shaped client probe are also surfaced under an `anthropic:`-prefixed alias so a probe via the Anthropic SDK can discover them without colliding with the canonical HF id.
curl -X GET "https://kolm.ai/v1/models" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/models/:id/access source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/models/<id>/access" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/models/:id/access source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/models/<id>/access" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/models/:id/access source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/models/<id>/access" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/:id/updates reference-ready
W-INTEG-3: on-device model self-update (signed, offline-verifiable)
curl -X GET "https://kolm.ai/v1/models/<id>/updates" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/models/:id/versions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/models/<id>/versions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/cache reference-ready
Models cache - returns the local model-weights cache index for the API
Full comment
Models cache - returns the local model-weights cache index for the API host (cache_dir, total_bytes, per-entry rows). Used by `kolm models cache` and the device-detect picker to know which weights are already on disk.
curl -X GET "https://kolm.ai/v1/models/cache" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/info/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/models/info/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/manifest source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/models/manifest" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/pull reference-ready
Models pull - 302-redirects to a resolved Hugging Face download URL for
Full comment
Models pull - 302-redirects to a resolved Hugging Face download URL for the requested model id+variant (default variant: q4_k_m). 404 for unknown variants, 410 when the variant exists but is marked unavailable.
curl -X GET "https://kolm.ai/v1/models/pull" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/models/recommend reference-ready
Model recommendation + model info. Public and secret-free: this powers the
Full comment
Model recommendation + model info. Public and secret-free: this powers the post-auth model picker, CLI parity, and "which backbone should I use?" flows without requiring a tenant before the user understands the catalog.
curl -X GET "https://kolm.ai/v1/models/recommend" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Moderations (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/moderations reference-ready array-literal expansion
OpenAI-compatible passthrough for the responses, embeddings, and
Full comment
OpenAI-compatible passthrough for the responses, embeddings, and moderations endpoints. Each routes through __connectorProxy('openai', ...) so the upstream OpenAI API is reached with the configured key, and the request/response is captured into the tenant lake.
curl -X POST "https://kolm.ai/v1/moderations" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Multimodal (9)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/multimodal/bakeoff reference-ready
GET helper for TUI/CLI list-view: same shape as POST but with the
Full comment
GET helper for TUI/CLI list-view: same shape as POST but with the contestants list pulled from the tenant's locally-compiled artifacts (~/.kolm/artifacts/). Query params: ?modality=image&namespace=ns&limit=20. Returns the same envelope shape; the TUI's get-view unwrap chain already handles the `contestants` array.
curl -X GET "https://kolm.ai/v1/multimodal/bakeoff" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/multimodal/bakeoff reference-ready
image/audio/video/PDF rows through selected .kolm artifacts and returns
Full comment
image/audio/video/PDF rows through selected .kolm artifacts and returns ranked contestants with token-overlap scoring and winner metadata.
curl -X POST "https://kolm.ai/v1/multimodal/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/multimodal/pipeline reference-ready
/v1/multimodal/pipeline - collection GET listing tenant multimodal
Full comment
/v1/multimodal/pipeline - collection GET listing tenant multimodal capture pipeline state. Real W829 routes (/v1/captures/multimodal, /v1/vlm-distill/runs) live in src/multimodal-pipeline-routes.js; this bare GET aggregates them for the TUI surface.
curl -X GET "https://kolm.ai/v1/multimodal/pipeline" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/multimodal/redact-audio reference-ready
multimodal audio voiceprint scrub. Anonymizes the speaker's
Full comment
multimodal audio voiceprint scrub. Anonymizes the speaker's voiceprint while preserving content. Complementary to W462 image redact (faces/plates) and W454 audio transcript redact (text). Body: { media_uri | path, output_path?, strength?, max_bytes? }
curl -X POST "https://kolm.ai/v1/multimodal/redact-audio" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/multimodal/redact-audio/doctor reference-ready
audio-redact worker self-doctor.
curl -X GET "https://kolm.ai/v1/multimodal/redact-audio/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/multimodal/redact-image reference-ready
{ok:false, error:'no_detector_installed', install_hint:'...'} so the
Full comment
{ok:false, error:'no_detector_installed', install_hint:'...'} so the caller never thinks redaction succeeded when it didn't. Body: { media_uri | path, output_path?, mode?, threshold?, face_model?, plate_model?, max_bytes? }
curl -X POST "https://kolm.ai/v1/multimodal/redact-image" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/multimodal/redact-image/doctor reference-ready
image-redact worker self-doctor, proxied so the CLI's
Full comment
image-redact worker self-doctor, proxied so the CLI's `kolm media image-doctor --remote` can ask the server.
curl -X GET "https://kolm.ai/v1/multimodal/redact-image/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/multimodal/tokenize reference-ready
on an authenticated local daemon or explicitly trusted self-hosted server.
Full comment
on an authenticated local daemon or explicitly trusted self-hosted server. Hosted deployments deny server-side file access unless the operator sets KOLM_ALLOW_SERVER_FILE_TOKENIZE=1.
curl -X POST "https://kolm.ai/v1/multimodal/tokenize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/multimodal/tokenize/doctor reference-ready
multimodal sidecar tokenizer. API mirror of
Full comment
multimodal sidecar tokenizer. API mirror of `kolm media tokenize`: local-safe by default, hosted-disabled unless the operator explicitly allows server-side file access. Creates compile-ready Markdown sidecars using deterministic local feature tokens, with optional provider captions/transcripts when configured.
curl -X GET "https://kolm.ai/v1/multimodal/tokenize/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Namespaces (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/namespaces source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/namespaces" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/namespaces source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/namespaces" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/namespaces/:slug source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/namespaces/<slug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/namespaces/:slug source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/namespaces/<slug>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/namespaces/:slug/deploy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/namespaces/<slug>/deploy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/namespaces/:slug/rollback source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/namespaces/<slug>/rollback" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/namespaces/:slug/stats reference-ready
rejected/quarantined captures in a namespace. Powers the "ready to
Full comment
rejected/quarantined captures in a namespace. Powers the "ready to compile?" readiness signal on /account/overview and the namespace badge on /account/namespaces. Tenant-union pattern to handle name-vs-id keys.
curl -X GET "https://kolm.ai/v1/namespaces/<slug>/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/namespaces/:slug/undeploy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/namespaces/<slug>/undeploy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Nl (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/nl/scaffold reference-ready
air-gap branch produces the same shape locally via scaffoldRecipeFromNl;
Full comment
air-gap branch produces the same shape locally via scaffoldRecipeFromNl; this endpoint exists so a tenant that opts in (--network or KOLM_AIRGAP=0) can get an LLM-augmented scaffold without forking the CLI. The x-kolm-nl-source response header tells the caller which branch served (network = hosted LLM enrichment; airgap = deterministic fallback).
curl -X POST "https://kolm.ai/v1/nl/scaffold" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Notifications (12)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/notifications/config reference-ready
Notifications config - public VAPID/email capability flags and alert thresholds.
curl -X GET "https://kolm.ai/v1/notifications/config" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/notifications/log reference-ready
Webhook notification log - returns the last 50 delivery attempts.
curl -X GET "https://kolm.ai/v1/notifications/log" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/notifications/preferences reference-ready
Notification preferences - returns tenant alert opt-in settings plus public config.
curl -X GET "https://kolm.ai/v1/notifications/preferences" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/notifications/preferences reference-ready
Notification preferences update - sets threshold alert opt-in and optional email.
curl -X PUT "https://kolm.ai/v1/notifications/preferences" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/notifications/push-subscriptions reference-ready
Push subscription removal - deletes a subscription by endpoint from body or query.
curl -X DELETE "https://kolm.ai/v1/notifications/push-subscriptions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/notifications/push-subscriptions reference-ready
Push subscription list - returns registered WebPush endpoints without secret keys.
curl -X GET "https://kolm.ai/v1/notifications/push-subscriptions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/notifications/push-subscriptions reference-ready
Push subscription registration - stores an allowlisted HTTPS WebPush endpoint.
curl -X POST "https://kolm.ai/v1/notifications/push-subscriptions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/notifications/settings reference-ready
Webhook notification settings - returns Slack/HTTP/email channels plus event toggles.
curl -X GET "https://kolm.ai/v1/notifications/settings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/notifications/settings reference-ready
Webhook notification settings update - writes Slack/HTTP/email channels and event toggles.
curl -X PUT "https://kolm.ai/v1/notifications/settings" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/notifications/state reference-ready
Notification threshold state - returns per-namespace alert state and readiness.
curl -X GET "https://kolm.ai/v1/notifications/state" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/notifications/test reference-ready
Notification test alert - fires a synthetic threshold alert for a namespace.
curl -X POST "https://kolm.ai/v1/notifications/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/notifications/test-channel reference-ready
Webhook notification test - dispatches a sample event payload to configured channels.
curl -X POST "https://kolm.ai/v1/notifications/test-channel" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Numeric (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/numeric/calculator source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/numeric/calculator" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/numeric/eval reference-ready
contract - a stray request must not fire an evaluation by accident.
Full comment
contract - a stray request must not fire an evaluation by accident. Plain envelope on every error path: ok:false + structured error + version stamp `w759-vN.M`. Consumers MUST version-pin via regex (/^w759-/), not literal equality (W604 anti-brittleness).
curl -X POST "https://kolm.ai/v1/numeric/eval" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/numeric/namespace-flag/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/numeric/namespace-flag/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
OAuth (3)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/oauth/:provider/callback reference-ready
Exchanges the provider code, creates or finds the tenant, then sets the session cookie.
curl -X GET "https://kolm.ai/v1/oauth/<provider>/callback" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/oauth/:provider/start reference-ready
Redirects to the provider when configured; returns 503 with an operator hint otherwise.
curl -X GET "https://kolm.ai/v1/oauth/<provider>/start" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/oauth/providers reference-ready
Signup uses this public route to hide provider buttons until credentials exist.
curl -X GET "https://kolm.ai/v1/oauth/providers" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Openrouter (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/openrouter/chat/completions reference-ready
OpenRouter chat-completions alias without the extra /v1 segment.
curl -X POST "https://kolm.ai/v1/openrouter/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/openrouter/v1/chat/completions reference-ready
OpenRouter base-URL alias for SDKs that append /v1/chat/completions.
curl -X POST "https://kolm.ai/v1/openrouter/v1/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Opportunities (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/opportunities reference-ready
every opportunity surface must be tenant-scoped. Without auth the
Full comment
every opportunity surface must be tenant-scoped. Without auth the engine would surface another tenant's pattern detections (cache_candidate request_hash, repeated prompt clusters, etc). 401s use the canonical {ok:false, error:'auth required'} envelope.
curl -X GET "https://kolm.ai/v1/opportunities" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/opportunities/:id/accept reference-ready
Opportunity accept - marks one optimization opportunity (cache candidate,
Full comment
Opportunity accept - marks one optimization opportunity (cache candidate, repeated-prompt cluster, replacement) as accepted by the tenant. Tenant scoped; cross-tenant ids 404. Body: { reason }. Recorded for audit log.
curl -X POST "https://kolm.ai/v1/opportunities/<id>/accept" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/opportunities/:id/dismiss reference-ready
Accept either /dismiss or /ignore - both map to ignoreOpportunity.
curl -X POST "https://kolm.ai/v1/opportunities/<id>/dismiss" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/opportunities/:id/ignore reference-ready
Opportunity ignore - tenant-scoped synonym for /dismiss; marks the
Full comment
Opportunity ignore - tenant-scoped synonym for /dismiss; marks the opportunity as ignored so it stops surfacing on the dashboard. Body: { reason }. Cross-tenant ids 404.
curl -X POST "https://kolm.ai/v1/opportunities/<id>/ignore" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/opportunities/:id/promote reference-ready
Turns the opportunity into a real dataset by calling dataset-workbench
Full comment
Turns the opportunity into a real dataset by calling dataset-workbench createDataset() with the opportunity's namespace + provenance. Returns { ok, dataset_id, train_count, holdout_count, ... }. Marks the opportunity status='promoted' so subsequent reads show the badge.
curl -X POST "https://kolm.ai/v1/opportunities/<id>/promote" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Orgs (9)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/orgs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/orgs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/orgs/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/orgs/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/orgs/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/orgs/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/orgs/:id/audit source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/orgs/<id>/audit" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/orgs/:id/invites source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/orgs/<id>/invites" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/orgs/:id/invites source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/orgs/<id>/invites" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/orgs/:id/leave source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/orgs/<id>/leave" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/orgs/:id/members source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/orgs/<id>/members" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/orgs/:id/transfer-owner source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/orgs/<id>/transfer-owner" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Packages (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/packages/release-readiness reference-ready
Package release readiness - local, secret-safe audit for SDK/runtime/install
Full comment
Package release readiness - local, secret-safe audit for SDK/runtime/install package contracts. This is not a registry publication claim: it exposes manifest/docs/dry-run readiness and channel blockers for package-gated items.
curl -X GET "https://kolm.ai/v1/packages/release-readiness" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/packages/release-readiness/template reference-ready
Package release manifest template - the signed artifact/registry evidence
Full comment
Package release manifest template - the signed artifact/registry evidence required before package-gated readiness can become publish-ready.
curl -X GET "https://kolm.ai/v1/packages/release-readiness/template" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/packages/release-readiness/validate reference-ready
Package release manifest validation - dry-runs a proposed signed release
Full comment
Package release manifest validation - dry-runs a proposed signed release manifest without publishing to npm, PyPI, crates, SwiftPM, Maven, winget, Homebrew, apt, or extension stores.
curl -X POST "https://kolm.ai/v1/packages/release-readiness/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Passport (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/passport/:job_id reference-ready
canonical path for offline use; this HTTP route serves the same envelope
Full comment
canonical path for offline use; this HTTP route serves the same envelope for a *compile job* the caller's tenant already owns (artifact lives in the local artifact store at /v1/compile/:id/.kolm). For arbitrary external .kolm files, the CLI remains the supported path. Returns 501 with a hint when the artifact is not local - never silent.
curl -X GET "https://kolm.ai/v1/passport/<job_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Pextract (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/pextract/detect-attempt source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/pextract/detect-attempt" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pextract/guard-request source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/pextract/guard-request" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pextract/redact-prompt reference-ready
Defense layering with W762 is intentional. W762's
Full comment
Defense layering with W762 is intentional. W762's classifyPromptAdversarial covers a broader red-team taxonomy; is the system-prompt-extraction-specific guard. Overlapping matches (e.g. "ignore previous instructions") are correct, not a bug - defense in depth is the point.
curl -X POST "https://kolm.ai/v1/pextract/redact-prompt" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Pipeline (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/pipeline/compile reference-ready
tenant gate. The pipeline runs compileFull which reads from the
Full comment
tenant gate. The pipeline runs compileFull which reads from the event store; without forcing tenant scope it would compile another tenant's corpus into the caller's artifact namespace. opts.tenant_id is injected from req.tenant_record.id and supersedes anything the body sent.
curl -X POST "https://kolm.ai/v1/pipeline/compile" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipeline/distill reference-ready
Returns 202 + {job_id}. The actual distill work is delegated to the
Full comment
Returns 202 + {job_id}. The actual distill work is delegated to the existing /v1/distill/from-captures path (in-process module call).
curl -X POST "https://kolm.ai/v1/pipeline/distill" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipeline/full reference-ready
job_id. Phases are streamed via /v1/pipeline/jobs/:id/stream (SSE).
Full comment
job_id. Phases are streamed via /v1/pipeline/jobs/:id/stream (SSE). same tenant gate as /v1/pipeline/compile. The caller's req.tenant_record.id is the only tenant scope that ever reaches compileFull from this route.
curl -X POST "https://kolm.ai/v1/pipeline/full" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/pipeline/jobs/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/pipeline/jobs/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/pipeline/jobs/:id/stream reference-ready
streams new ones until the job terminates.
curl -X GET "https://kolm.ai/v1/pipeline/jobs/<id>/stream" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipeline/run reference-ready
is just missing - we don't
Full comment
is just missing - we don't wrap that as a 4xx) The runner returns latency_ms_breakdown unconditionally so dashboards can chart per-tenant classify+route p50/p99 without a second round-trip.
curl -X POST "https://kolm.ai/v1/pipeline/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipeline/tokenize source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/pipeline/tokenize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Pipelines (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/pipelines source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/pipelines" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipelines reference-ready
Body: { name: string, yaml: string }
curl -X POST "https://kolm.ai/v1/pipelines" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/pipelines/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/pipelines/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/pipelines/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/pipelines/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/pipelines/:id/kscore source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/pipelines/<id>/kscore" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pipelines/:id/run reference-ready
Body: { input: any }
curl -X POST "https://kolm.ai/v1/pipelines/<id>/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Plans (1)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/plans reference-ready
Plans - public compiler plan catalog. Historical aliases still
Full comment
Plans - public compiler plan catalog. Historical aliases still canonicalize server-side. Enterprise is contact-sales unless a custom checkout link is supplied by the operator.
curl -X GET "https://kolm.ai/v1/plans" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Playground (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/playground/proxy/:slug reference-ready
/playground/[slug] renders without RunPod bound. 20/IP/day.
curl -X POST "https://kolm.ai/v1/playground/proxy/<slug>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Plugins (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/plugins reference-ready
Tenant scope: plugins live under ~/.kolm/plugins (the caller's KOLM_HOME).
Full comment
Tenant scope: plugins live under ~/.kolm/plugins (the caller's KOLM_HOME). The HTTP routes are auth-gated so a multi-tenant host doesn't accidentally surface another tenant's plugin directory; for self-hosted single-tenant installs the auth gate is no-op once KOLM_API_KEY is set.
curl -X GET "https://kolm.ai/v1/plugins" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/plugins source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/plugins" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/plugins/:name source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/plugins/<name>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Poisoning (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/poisoning/bind-teacher reference-ready
Model Poisoning Anomaly Detection routes. Distinct-named handlers so
Full comment
Model Poisoning Anomaly Detection routes. Distinct-named handlers so parallel wave agents on W760 + W762..W765 do not collide on the suffix. Builds on W808 capture-anomaly + W750-followup copyright-detector + the teacher-response HMAC primitive.
curl -X POST "https://kolm.ai/v1/poisoning/bind-teacher" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/poisoning/namespace-risk/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/poisoning/namespace-risk/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/poisoning/quarantine source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/poisoning/quarantine" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/poisoning/verify-binding source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/poisoning/verify-binding" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Pricing (3)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/pricing reference-ready
Pricing - public price catalog in USD per billable unit (tokens, compile,
Full comment
Pricing - public price catalog in USD per billable unit (tokens, compile, replay, bakeoff, redact). Read by /pricing and the SDK shapers.
curl -X GET "https://kolm.ai/v1/pricing" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/pricing/estimate reference-ready
Pricing estimator - public, secret-safe workload calculator backed by the
Full comment
Pricing estimator - public, secret-safe workload calculator backed by the same compiler PLAN_CATALOG as /v1/plans and /v1/billing/tiers.
curl -X GET "https://kolm.ai/v1/pricing/estimate" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/pricing/estimate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/pricing/estimate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Privacy (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/privacy/events source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/privacy/events" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/privacy/policy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/privacy/policy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/privacy/policy/:class source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/privacy/policy/<class>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/privacy/redaction-benchmark reference-ready
Redaction benchmark - public, synthetic, secret-safe proof that the PHI/PII
Full comment
Redaction benchmark - public, synthetic, secret-safe proof that the PHI/PII redactor detects expected classes, redacts raw values, and fails closed on malformed identifiers. This is benchmark evidence, not a live compliance certification claim.
curl -X GET "https://kolm.ai/v1/privacy/redaction-benchmark" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/privacy/report source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/privacy/report" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/privacy/scan reference-ready
findings array + sensitive boolean + class counts. No state change.
curl -X POST "https://kolm.ai/v1/privacy/scan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/privacy/test reference-ready
return { redacted, findings, policy_actions }. May 403 if policy
Full comment
return { redacted, findings, policy_actions }. May 403 if policy says block on a class present.
curl -X POST "https://kolm.ai/v1/privacy/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Procurement (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/procurement source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/procurement" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/procurement/:framework source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/procurement/<framework>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Product (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/product/capabilities reference-ready
Public product capability contract for the compiler-first site. This is a
Full comment
Public product capability contract for the compiler-first site. This is a descriptive map, not an auth bypass: operational routes below keep their own auth/rate-limit gates.
curl -X GET "https://kolm.ai/v1/product/capabilities" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/product/experience reference-ready
Product-experience contract. Public and secret-safe: this is the same
Full comment
Product-experience contract. Public and secret-safe: this is the same source of truth exposed by `kolm surfaces --json` and `kolm tui --views`. Frontend/account/docs can consume it to avoid drifting from CLI/TUI/API.
curl -X GET "https://kolm.ai/v1/product/experience" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/product/graph reference-ready
Product graph - public, secret-safe, generated from the route-surface,
Full comment
Product graph - public, secret-safe, generated from the route-surface, journey, readiness, and experience contracts. This is the canonical machine-readable map for account UI, CLI/TUI parity, docs, and release audits.
curl -X GET "https://kolm.ai/v1/product/graph" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Public (5)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/public/concepts reference-ready
Public registry browsing - no auth needed for visibility=public
curl -X GET "https://kolm.ai/v1/public/concepts" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/public/concepts/:id reference-ready
Public concept detail - returns one public-visibility concept by id (no
Full comment
Public concept detail - returns one public-visibility concept by id (no auth required). 404 when the concept is missing or visibility != 'public'. Pairs with /v1/public/run for unauth try-it traffic.
curl -X GET "https://kolm.ai/v1/public/concepts/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/public/featured reference-ready
Public featured - hand-curated list of the most useful public recipes for
Full comment
Public featured - hand-curated list of the most useful public recipes for the home registry view (classify-issue-type, is-spam, extract-emails, classify-toxicity, etc.). Returns id, name, description, tags, head_version.
curl -X GET "https://kolm.ai/v1/public/featured" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/public/run reference-ready
Public read-only run for any public concept (lets unauth visitors try the runtime)
curl -X POST "https://kolm.ai/v1/public/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/public/submit reference-ready
Public registry submissions (Phase E - Day 120-180)
curl -X POST "https://kolm.ai/v1/public/submit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Publish (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/publish reference-ready
Publish an edited generator (no synthesis required)
curl -X POST "https://kolm.ai/v1/publish" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Quality (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/quality/predict reference-ready
Wire the six built-but-unrouted autopilot components plus the full
Full comment
Wire the six built-but-unrouted autopilot components plus the full lifecycle tick into HTTP, mirroring the existing autopilot route pattern above (auth-gate -> dynamic import -> envelope -> status).
curl -X GET "https://kolm.ai/v1/quality/predict" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Quantization (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/quantization/oracle reference-ready
Quantization oracle plan - ranks quantization methods for task, device,
Full comment
Quantization oracle plan - ranks quantization methods for task, device, memory, runtime, calibration, quality, and privacy constraints. This is a planner only: promotion still requires quantize doctor, hashes, and holdout eval.
curl -X GET "https://kolm.ai/v1/quantization/oracle" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/quantization/oracle source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/quantization/oracle" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/quantization/oracle/catalog reference-ready
Quantization oracle catalog - lists supported planner methods and whether
Full comment
Quantization oracle catalog - lists supported planner methods and whether each method is worker-backed, external-toolchain, runtime-policy, or baseline.
curl -X GET "https://kolm.ai/v1/quantization/oracle/catalog" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Quantize (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/quantize reference-ready
from a single --target shortcut (gguf-q4km, exl2-4bpw, nvfp4, etc.) so the
Full comment
from a single --target shortcut (gguf-q4km, exl2-4bpw, nvfp4, etc.) so the Account UI and SDKs can call one route instead of constructing a spec. Body: { model_id, target, job_id?, ... } → returns the created job.
curl -X POST "https://kolm.ai/v1/quantize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Ready (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/ready/deep reference-ready
/v1/ready/deep - /v1-prefixed alias of the W824 /ready/deep route so the
Full comment
/v1/ready/deep - /v1-prefixed alias of the W824 /ready/deep route so the TUI's k8s-readiness view stays on the /v1/* convention every other view uses. Forwards through the registered handler instead of duplicating logic so a single k8s-routes change updates both paths.
curl -X GET "https://kolm.ai/v1/ready/deep" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Recall (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/recall reference-ready
Recall
Full comment
Recall Hybrid query against the tenant's qmd-indexed corpus. Returns top-k chunks. The compile orchestrator calls the same surface internally; this is the public route for à la carte usage and for the kolm CLI's `kolm recall`.
curl -X POST "https://kolm.ai/v1/recall" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recall/sources/:id reference-ready
Single-source debug view. Confirms a sidecar exists and returns its
Full comment
Single-source debug view. Confirms a sidecar exists and returns its frontmatter + first 4KB of body so a UI can preview what qmd indexed.
curl -X GET "https://kolm.ai/v1/recall/sources/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recall/status reference-ready
Health check for the recall substrate.
curl -X GET "https://kolm.ai/v1/recall/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Receipts (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/receipts/:hash/public reference-ready
Public receipt lookup - resolves a receipt, artifact, CID, or signature hash without auth.
Full comment
Public receipt lookup - resolves a receipt, artifact, CID, or signature hash without auth. Tenant identity is hidden unless the tenant opted into public receipts.
curl -X GET "https://kolm.ai/v1/receipts/<hash>/public" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/receipts/list reference-ready
W-D wrapper-completion - GET /v1/receipts/list
Full comment
W-D wrapper-completion - GET /v1/receipts/list Tenant-scoped receipt list with namespace + since + limit filters.
curl -X GET "https://kolm.ai/v1/receipts/list" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/receipts/stats reference-ready
where frontier_baseline = sum(local-route tokens × frontier per-token rate)
Full comment
where frontier_baseline = sum(local-route tokens × frontier per-token rate) (the counterfactual cost if every local-routed call had gone frontier instead). The baseline uses cost-estimator at frontier defaults (anthropic claude-haiku-4-5 input $0.0008/1k, output $0.004/1k) so the savings number is dimensioned in the same way as the receipts' cost_usd.
curl -X GET "https://kolm.ai/v1/receipts/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/receipts/verify reference-ready
This is NOT public-key cryptographic verification; that requires either
Full comment
This is NOT public-key cryptographic verification; that requires either the shared tenant receipt secret (issuer/holder offline path) or the roadmap Ed25519 receipt mode. Accepts the legacy rs-1 receipt (hmac field), v0.1 receipt (kolm_version="0.1", chain[], signature), and the {artifact_hash, signature} drive-by shape.
curl -X POST "https://kolm.ai/v1/receipts/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Recipes (10)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/recipes reference-ready
Recipe aliases
Full comment
Recipe aliases Forward-looking branding: "recipe" terminology mirrors "concept" endpoints. Both names route to the same handlers - full backward compatibility preserved.
curl -X GET "https://kolm.ai/v1/recipes" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/:id reference-ready
Recipe artifact aliases over the artifact/job surface.
Full comment
Recipe artifact aliases over the artifact/job surface. expect GET /v1/recipes/{id} to return the recipe (artifact) and POST /v1/recipes/{id}/run to invoke it. We alias the existing handlers so developers don't dead-end on 404s.
curl -X GET "https://kolm.ai/v1/recipes/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/:id/download reference-ready
Recipe artifact download alias. Streams the completed .kolm artifact for a job id.
curl -X GET "https://kolm.ai/v1/recipes/<id>/download" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/recipes/:id/label-corpus reference-ready
Inline labeler - synchronous up to 500 rows
curl -X POST "https://kolm.ai/v1/recipes/<id>/label-corpus" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/recipes/:id/label-corpus/stream reference-ready
SSE stream variant: emits progress as rows are labeled.
curl -X POST "https://kolm.ai/v1/recipes/<id>/label-corpus/stream" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/:id/lineage source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/recipes/<id>/lineage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/recipes/:id/run reference-ready
SDK-conventional REST alias: POST /v1/recipes/:id/run mirrors /v1/run
Full comment
SDK-conventional REST alias: POST /v1/recipes/:id/run mirrors /v1/run with concept_id set from the URL param. Body's version_id (if provided) still wins so callers can pin a specific revision.
curl -X POST "https://kolm.ai/v1/recipes/<id>/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/:id/stats reference-ready
Recipe stats alias for concept invocation counts, cache hit rate, and latency.
curl -X GET "https://kolm.ai/v1/recipes/<id>/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/templates reference-ready
All routes are public+stubbed by default (declared in PUBLIC_API in
Full comment
All routes are public+stubbed by default (declared in PUBLIC_API in src/auth.js) so the no-code wizard works pre-auth. Rate-limited inside the handler via freeChatLimiter (20/IP/day for the budget-bearing ones). state. Curated catalog; no tenant scoping.
curl -X GET "https://kolm.ai/v1/recipes/templates" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/recipes/templates/:name reference-ready
Recipe template detail - returns one template plus its sample CSV reference.
curl -X GET "https://kolm.ai/v1/recipes/templates/<name>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Redact (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/redact reference-ready
Redact - applies the tenant privacy policy to a text input and returns
Full comment
Redact - applies the tenant privacy policy to a text input and returns the redacted text plus class counters and a map_hash so callers can pin reinjection without exposing PHI. Body: { text (required), dry_run }. 413 when text exceeds _REDACT_TEXT_LIMIT; 409 on policy_block.
curl -X POST "https://kolm.ai/v1/redact" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Redteam (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/redteam/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/redteam/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/redteam/classify reference-ready
* /sanitize with policy=fallback_to_teacher returns
Full comment
* /sanitize with policy=fallback_to_teacher returns `no_fallback_handler_configured` - the hosted route has no teacher handler injected. * generate-corpus + bakeoff are confirm-gated because they emit attack-framing patterns + dispatch a multi-run loop respectively.
curl -X POST "https://kolm.ai/v1/redteam/classify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/redteam/generate-corpus source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/redteam/generate-corpus" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/redteam/sanitize source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/redteam/sanitize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Reg (8)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/reg/classify-risk source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/reg/classify-risk" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/reg/data-governance source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/reg/data-governance" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/reg/eu-aiact-docs reference-ready
/v1/reg/eu-aiact-docs - GET counterpart to the W834 POST. POST runs the
Full comment
/v1/reg/eu-aiact-docs - GET counterpart to the W834 POST. POST runs the Annex IV generator; GET reads the most-recent generated packet (or an empty envelope if none has been produced yet) so the TUI view does not require the operator to first POST to view state.
curl -X GET "https://kolm.ai/v1/reg/eu-aiact-docs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/reg/eu-aiact-docs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/reg/eu-aiact-docs" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/reg/grc-export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/reg/grc-export" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/reg/hil/threshold source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/reg/hil/threshold" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/reg/hil/threshold source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/reg/hil/threshold" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/reg/model-card source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/reg/model-card" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Region (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/region/gateways source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/region/gateways" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/region/route source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/region/route" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/region/status reference-ready
Cross-ref: W769 (data residency) is the per-capture tag; W780 is the
Full comment
Cross-ref: W769 (data residency) is the per-capture tag; W780 is the request-routing gateway. The two are joined inside getRegionForCapture so a tenant who configures a namespace default region in W769 also pins the W780 capture routing for that namespace.
curl -X GET "https://kolm.ai/v1/region/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Registry (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/registry/export source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/registry/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/registry/public reference-ready
/v1/registry/public - RS-1 contract alias over public concepts. Non-paginated;
Full comment
/v1/registry/public - RS-1 contract alias over public concepts. Non-paginated; returns up to 200 of the most recent public concepts. The richer export (with bundled source) lives at /v1/registry/export above.
curl -X GET "https://kolm.ai/v1/registry/public" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/registry/search reference-ready
/v1/registry/search - programmatic discovery. Filters: task (substring on
Full comment
/v1/registry/search - programmatic discovery. Filters: task (substring on name/description/tags), min_k_score, max_size_mb, hardware tag, limit. Public concepts only. Used by IDE plugins, CI gates, and the registry UI's chip filters. Returns same shape as /v1/registry/public.
curl -X GET "https://kolm.ai/v1/registry/search" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/registry/submit reference-ready
/v1/registry/submit - community recipe intake. Validates the shape, logs
Full comment
/v1/registry/submit - community recipe intake. Validates the shape, logs the submission to data/registry-submissions.jsonl, and returns 202 with a submission_id. Verification (fetch+CID-check+K-score-replay) is a manual step today; see /registry/submit for the human flow. POST body schema is SubmitRequest in /openapi.json.
curl -X POST "https://kolm.ai/v1/registry/submit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/registry/verified-publishers/evaluate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/registry/verified-publishers/evaluate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/registry/verified-publishers/policy source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/registry/verified-publishers/policy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Replay (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/replay reference-ready
Replay - reruns a tenant's recent captures through the chosen artifact and
Full comment
Replay - reruns a tenant's recent captures through the chosen artifact and returns per-row diffs (upstream output vs local output), K-score (Jaccard), success/failure counts, and cost delta. Body: { concept_id|version_id (one required), namespace, limit (1..200, default 25) }.
curl -X POST "https://kolm.ai/v1/replay" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/replay/preview reference-ready
Replay preview - dry-run for /v1/replay. Resolves the artifact + namespace
Full comment
Replay preview - dry-run for /v1/replay. Resolves the artifact + namespace + clamped limit (1..200) and reports how many captures would be replayed, without running them. Query: ?concept_id|version_id, ?namespace, ?limit.
curl -X GET "https://kolm.ai/v1/replay/preview" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Residency (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/residency/capture-region/:capture_id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/residency/capture-region/<capture_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/residency/configure-namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/residency/configure-namespace" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/residency/regions source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/residency/regions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/residency/tag-capture reference-ready
by country code - that's the perimeter geo-fence. W769 tags WHERE
Full comment
by country code - that's the perimeter geo-fence. W769 tags WHERE DATA LIVES at capture time - that's the data-locality residency control. Both are required for a credible regulated-industry posture; they cover orthogonal threat models. The /compliance/data-residency landing surfaces the cross-reference explicitly.
curl -X POST "https://kolm.ai/v1/residency/tag-capture" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
OpenAI Responses (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/responses reference-ready array-literal expansion
OpenAI-compatible passthrough for the responses, embeddings, and
Full comment
OpenAI-compatible passthrough for the responses, embeddings, and moderations endpoints. Each routes through __connectorProxy('openai', ...) so the upstream OpenAI API is reached with the configured key, and the request/response is captured into the tenant lake.
curl -X POST "https://kolm.ai/v1/responses" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Route (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/route/chat/completions reference-ready
Response: original upstream JSON, additionally tagged with
Full comment
Response: original upstream JSON, additionally tagged with { kolm_routing: { decision, segments, teacher_called, total_cost_micro_usd } }
curl -X POST "https://kolm.ai/v1/route/chat/completions" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/route/chat/completions/stream reference-ready
__fixture_teacher_tokens: [{text}, ...]
Full comment
__fixture_teacher_tokens: [{text}, ...] which makes the route end-to-end testable without standing up real student/teacher upstreams. Tests rely on this; production never sets these fields.
curl -X POST "https://kolm.ai/v1/route/chat/completions/stream" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Routing (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/routing/summary reference-ready
tenant. The /account/routing dashboard polls this endpoint.
Full comment
tenant. The /account/routing dashboard polls this endpoint. Tenant fence: tenant_id is forced from req.tenant_record.id - never read from query string or body. namespace + since are optional filters.
curl -X GET "https://kolm.ai/v1/routing/summary" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Run (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/run reference-ready
Runtime run - executes a concept_id or version_id against input and returns the output.
Full comment
Runtime run - executes a concept_id or version_id against input and returns the output. Includes a signed receipt by default; pass receipt:false to skip receipt generation.
curl -X POST "https://kolm.ai/v1/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Runtime (9)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/runtime/adoption-packets reference-ready
Runtime adoption packets - local integration packets for model hubs,
Full comment
Runtime adoption packets - local integration packets for model hubs, local runners, conversion tooling, and hardware partners.
curl -X GET "https://kolm.ai/v1/runtime/adoption-packets" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/runtime/adoption-packets/template source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/runtime/adoption-packets/template" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/runtime/adoption-packets/validate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/runtime/adoption-packets/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/runtime/decide reference-ready
Runtime decision - executes the policy ladder for one request and records the decision.
curl -X POST "https://kolm.ai/v1/runtime/decide" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/runtime/decisions reference-ready
Runtime decision history - returns the most recent recorded runtime decisions.
curl -X GET "https://kolm.ai/v1/runtime/decisions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/runtime/placement reference-ready
/v1/runtime/placement - collection GET that emits the local placement
Full comment
/v1/runtime/placement - collection GET that emits the local placement hierarchy snapshot. W826 ships detectMemoryHierarchy + placementDecision as pure functions; the TUI view needs a one-shot GET to read the hierarchy without staging an artifact size first.
curl -X GET "https://kolm.ai/v1/runtime/placement" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/runtime/policy reference-ready
Runtime policy read - returns the active runtime policy and available policy names.
curl -X GET "https://kolm.ai/v1/runtime/policy" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/runtime/policy reference-ready
Runtime policy update - admin-only mutation of the active runtime routing policy.
curl -X PUT "https://kolm.ai/v1/runtime/policy" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/runtime/replacement-stats reference-ready
Runtime replacement stats - summarizes replacement rate, savings, and spend over a window.
curl -X GET "https://kolm.ai/v1/runtime/replacement-stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Sales (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/sales/demo-request reference-ready
demoRequestLimiter above). Lighter-weight than /v1/lead/enterprise: a
Full comment
demoRequestLimiter above). Lighter-weight than /v1/lead/enterprise: a buyer at the "Book Demo" CTA gives company + email + use_case + expected_volume_per_month + optional message. Stored under namespace 'sales/demo-requests' in the capture lake; mirror lives in salesDemoRequests for ops triage. Email best-effort to SALES_EMAIL.
curl -X POST "https://kolm.ai/v1/sales/demo-request" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Savings (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/savings reference-ready
/v1/savings - bare alias for the W835 summary endpoint so the TUI's
Full comment
/v1/savings - bare alias for the W835 summary endpoint so the TUI's savings-tracker view has a stable collection-style URL. Forwards into the real /v1/savings/summary handler.
curl -X GET "https://kolm.ai/v1/savings" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/savings/baseline reference-ready
its start time + accumulated spend so far.
curl -X GET "https://kolm.ai/v1/savings/baseline" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/savings/baseline reference-ready
Body: { namespace?, start_ts? }.
curl -X POST "https://kolm.ai/v1/savings/baseline" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/savings/displacement reference-ready
frontier_provider (optional) - re-pricing target; falls back to receipt's own model
Full comment
frontier_provider (optional) - re-pricing target; falls back to receipt's own model frontier_model (optional) - re-pricing target; falls back to receipt's own model artifact_id (optional) - for compile_cost + deployed_at lookup compile_cost_usd (optional) - explicit override deployed_at_ms (optional) - explicit override
curl -X GET "https://kolm.ai/v1/savings/displacement" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/savings/record reference-ready
Body: { namespace?, provider, model, input_tokens, output_tokens, ts? }.
curl -X POST "https://kolm.ai/v1/savings/record" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/savings/summary reference-ready
Query: ?period_days=30&namespace=default[&fee_rate=0.125]
curl -X GET "https://kolm.ai/v1/savings/summary" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Sbom (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/sbom/emit reference-ready
confirm flag is honored on emit only; repo + verify are read-only.
Full comment
confirm flag is honored on emit only; repo + verify are read-only. The route imports lazily so the SBOM module isn't paid for on cold daemons that never call it.
curl -X POST "https://kolm.ai/v1/sbom/emit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sbom/repo source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/sbom/repo" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sbom/verify source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/sbom/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Scim (13)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/scim/v2/Groups reference-ready
SCIM Groups CRUD (bound to kolm rbac roles)
curl -X GET "https://kolm.ai/v1/scim/v2/Groups" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/scim/v2/Groups source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/scim/v2/Groups" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/scim/v2/Groups/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/scim/v2/Groups/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/scim/v2/Groups/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/scim/v2/Groups/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/scim/v2/Groups/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/scim/v2/Groups/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/scim/v2/Groups/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/scim/v2/Groups/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/scim/v2/ServiceProviderConfig reference-ready
SCIM 2.0 Service Provider Configuration - RFC 7644 §5. IdPs read this
Full comment
SCIM 2.0 Service Provider Configuration - RFC 7644 §5. IdPs read this to discover what SCIM operations the SP supports. Empty/false flags are plain signals to the IdP that bulk/patch/etag are not yet implemented.
curl -X GET "https://kolm.ai/v1/scim/v2/ServiceProviderConfig" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/scim/v2/Users source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/scim/v2/Users" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/scim/v2/Users source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/scim/v2/Users" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/scim/v2/Users/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/scim/v2/Users/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/scim/v2/Users/:id reference-ready
SCIM Users per-resource lifecycle (RFC 7644 §3.5/§3.6)
curl -X GET "https://kolm.ai/v1/scim/v2/Users/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/scim/v2/Users/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/scim/v2/Users/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/scim/v2/Users/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/scim/v2/Users/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Search (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/search reference-ready
Search - registry similarity search across the caller's tenant artifacts.
Full comment
Search - registry similarity search across the caller's tenant artifacts. Returns top-k matches with embedding-distance scores. Body: { query (required), k=10, tag }. 500 errors are wrapped in {error, detail, matches:[]} so SDKs never see a raw 500 (W470 P0-2).
curl -X POST "https://kolm.ai/v1/search" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Seasonal (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/seasonal reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/seasonal" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/seasonal/:namespace reference-ready
- bad params → 400 missing_field
Full comment
- bad params → 400 missing_field - no matching variant for today's event/season → recommended:null + human-readable reason string (NEVER guess at the calendar). - hemisphere bias echoed in payload → callers can detect the N-bias.
curl -X GET "https://kolm.ai/v1/seasonal/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/seasonal/variant source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/seasonal/variant" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Security (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/security/audit-retention/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/security/audit-retention/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/security/continuous-monitoring/snapshot source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/security/continuous-monitoring/snapshot" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/security/iso27001/controls source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/security/iso27001/controls" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/security/soc2/checklist reference-ready
(not kolm) supplies evidence (e.g. background-check policy).
Full comment
(not kolm) supplies evidence (e.g. background-check policy). The retention + monitoring routes import lazily so the certification modules are not paid for on cold daemons that never call them.
curl -X GET "https://kolm.ai/v1/security/soc2/checklist" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Seeds (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/seeds/from-nl reference-ready
LLM, or deterministic local fallback when no LLM backend is configured.
curl -X POST "https://kolm.ai/v1/seeds/from-nl" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/seeds/from-nl/health reference-ready
button when no LLM backend is configured. Stable, no auth.
curl -X GET "https://kolm.ai/v1/seeds/from-nl/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
Serve (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/serve reference-ready
a .kolm artifact and runtime target.
Full comment
a .kolm artifact and runtime target. Body: { artifact, runtime, port?, docker?, k8s? } → { manifest, runtime, port }
curl -X POST "https://kolm.ai/v1/serve" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/serve/pods reference-ready
currently served). No live-pod tracker is wired yet, so this returns an empty
Full comment
currently served). No live-pod tracker is wired yet, so this returns an empty set; the /account/models UI uses it to badge "serving" state and degrades gracefully (it already .catch()es to {pods:[]}). Registering the route stops the prod 404 the models page hit.
curl -X GET "https://kolm.ai/v1/serve/pods" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Session (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/session/login reference-ready
Session cookie (S7)
Full comment
Session cookie (S7) then call authenticated API routes without exposing the key to JavaScript. The legacy localStorage path still works, but new pages should use this route and rely on the cookie.
curl -X POST "https://kolm.ai/v1/session/login" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/session/logout reference-ready
Session logout - clears the kolm_session cookie set by /v1/session/login.
Full comment
Session logout - clears the kolm_session cookie set by /v1/session/login. Returns {ok:true}; safe to call repeatedly (no-op when no cookie present).
curl -X POST "https://kolm.ai/v1/session/logout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sign in (1)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/signin reference-ready
/v1/signin and /v1/signout mirror /v1/session/login and /v1/session/logout
Full comment
Signin / Signout aliases (RS-1 contract) /v1/signin and /v1/signout mirror /v1/session/login and /v1/session/logout for the homepage contract. POST {api_key} returns the same shape and sets the same kolm_session cookie. /v1/signout returns 204 to be friendly to CLI tools that ignore body.
curl -X POST "https://kolm.ai/v1/signin" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sign out (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/signout reference-ready
/v1/session/logout; kept so older clients that POST /v1/signout still work.
Full comment
Signout - clears the kolm_session cookie and returns 204. Legacy alias for /v1/session/logout; kept so older clients that POST /v1/signout still work.
curl -X POST "https://kolm.ai/v1/signout" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sign up (1)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/signup source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/signup" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sigstore (3)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/sigstore/attest reference-ready
Sigstore attest - forwards a caller-signed receipt bundle to the
Full comment
Sigstore attest - forwards a caller-signed receipt bundle to the configured Rekor instance and returns the merged bundle. The caller MUST pre-sign with their own key (server has no private key); receipt must already carry signature_ed25519 + dry-run signature_sigstore (Wave 150+).
curl -X POST "https://kolm.ai/v1/sigstore/attest" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sigstore/entry/:logIndex reference-ready
Sigstore entry fetch - forwards to the configured Rekor instance and
Full comment
Sigstore entry fetch - forwards to the configured Rekor instance and returns the raw entry by logIndex. Public (Rekor itself is public). 503 when no KOLM_SIGSTORE_REKOR_URL is configured; 404 when Rekor 404s.
curl -X GET "https://kolm.ai/v1/sigstore/entry/<logIndex>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sigstore/health reference-ready
has a Rekor URL configured + whether the
Full comment
has a Rekor URL configured + whether the integration is enabled. raw entry. Public - Rekor is public.
curl -X GET "https://kolm.ai/v1/sigstore/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
Simulation (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/sim reference-ready
Sim list - returns saved workflow simulations plus the supported simulator type catalog.
curl -X GET "https://kolm.ai/v1/sim" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sim/:id reference-ready
Sim detail - returns one saved workflow simulation record by simulation id.
curl -X GET "https://kolm.ai/v1/sim/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sim/run reference-ready
Sim run - creates a workflow simulation and emits synthetic events into its saved run record.
curl -X POST "https://kolm.ai/v1/sim/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Simulations (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/simulations reference-ready
/v1/simulations - list + run alias for /v1/sim + /v1/sim/run. Plus a
Full comment
/v1/simulations - list + run alias for /v1/sim + /v1/sim/run. Plus a promote endpoint that mirrors simulations.html's "promote to holdout" button (delegates to simulation.generateDatasetFromSim).
curl -X GET "https://kolm.ai/v1/simulations" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/simulations reference-ready
Simulations create+run - REST alias of /v1/sim/run that creates a
Full comment
Simulations create+run - REST alias of /v1/sim/run that creates a workflow simulation and immediately runs it. Body: { workflow_id, type, n, personas, opts, toLake (default true) }. Returns sim_id + emitted events.
curl -X POST "https://kolm.ai/v1/simulations" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/simulations/:id reference-ready
Simulation detail - REST alias of /v1/sim/:id. Returns one saved workflow
Full comment
Simulation detail - REST alias of /v1/sim/:id. Returns one saved workflow simulation record. 404 when the id is unknown.
curl -X GET "https://kolm.ai/v1/simulations/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/simulations/:id/promote reference-ready
Simulation promote - mirrors the "promote to holdout" button on
Full comment
Simulation promote - mirrors the "promote to holdout" button on simulations.html. Calls simulation.generateDatasetFromSim to convert a sim into a dataset (synthetic rows + optional holdout). Body: { name, holdoutFromSim (default true) }. Returns the dataset id on success.
curl -X POST "https://kolm.ai/v1/simulations/<id>/promote" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sla (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/sla/dashboard reference-ready
SLA dashboard - bundle of every surface rollup for /account/sla.html.
curl -X GET "https://kolm.ai/v1/sla/dashboard" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sla/rollup reference-ready
SLA rollup - returns p50/p95/p99 latency + uptime_pct for one surface.
curl -X GET "https://kolm.ai/v1/sla/rollup" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sla/series reference-ready
copy ("Numbers come from the /v1/sla/series route") binds straight to
Full comment
SLA series - alias of /v1/sla/rollup so the placeholder /account/sla.html copy ("Numbers come from the /v1/sla/series route") binds straight to the persistent rollup once frontend wires.
curl -X GET "https://kolm.ai/v1/sla/series" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Sneakernet (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/sneakernet/pack source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/sneakernet/pack" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sneakernet/unpack source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/sneakernet/unpack" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Spec (4)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/spec reference-ready
Public RS-1 spec document - open standard, no auth required.
curl -X GET "https://kolm.ai/v1/spec" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/spec/governance-packet reference-ready
A device with this bundle can run every public recipe locally, offline,
Full comment
A device with this bundle can run every public recipe locally, offline, forever, for free. Returns a portable JSON envelope of all public recipes with their executable source. This is the on-device runtime payload. Format governance packet - local evidence for neutral .kolm stewardship. External acceptance remains explicitly gated until a public venue accepts it.
curl -X GET "https://kolm.ai/v1/spec/governance-packet" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/spec/governance-packet/template source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/spec/governance-packet/template" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/spec/governance-packet/validate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/spec/governance-packet/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Spec Decode (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/spec-decode reference-ready
Train a speculative-decoding draft head (eagle/eagle2/eagle3/medusa)
Full comment
Train a speculative-decoding draft head (eagle/eagle2/eagle3/medusa) via the tenant-installed trainer plug-in. Auth-gated. Body: { pairs_path, base_path, draft_kind, out_dir, namespace }. Returns trainer envelope.
curl -X POST "https://kolm.ai/v1/spec-decode" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/spec-decode/doctor reference-ready
Speculative decoding draft-head trainer doctor (EAGLE-2/3, Medusa).
Full comment
Speculative decoding draft-head trainer doctor (EAGLE-2/3, Medusa). Reports whether $KOLM_SPECDECODE_TRAINER is resolvable; install_hint when not.
curl -X GET "https://kolm.ai/v1/spec-decode/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Specialists (7)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/specialists reference-ready
Specialists list - returns tenant-visible specialist jobs without inline corpus rows.
curl -X GET "https://kolm.ai/v1/specialists" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/specialists/:id reference-ready
Specialist detail - returns one accessible specialist record for the tenant or admin.
curl -X GET "https://kolm.ai/v1/specialists/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/specialists/:id/run reference-ready
Specialist run - executes the specialist preview through its source recipe fallback.
curl -X POST "https://kolm.ai/v1/specialists/<id>/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/specialists/:id/weights reference-ready
Specialist weights - returns completed weight metadata or 503 while training is pending.
curl -X GET "https://kolm.ai/v1/specialists/<id>/weights" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/specialists/auto-distill reference-ready
Specialist auto-distill - turns 1,000+ kept namespace captures into a distill job.
Full comment
Specialist auto-distill - turns 1,000+ kept namespace captures into a distill job. Returns a job id and poll URL from the trainer bridge or the local distill worker.
curl -X POST "https://kolm.ai/v1/specialists/auto-distill" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/specialists/train reference-ready
Specialist train - queues tenant specialist training from an existing recipe and optional corpus.
curl -X POST "https://kolm.ai/v1/specialists/train" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/specialists/waitlist reference-ready
Specialist waitlist - captures guided-training interest from teams before onboarding.
curl -X POST "https://kolm.ai/v1/specialists/waitlist" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Speculative (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/speculative/acceptance source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/speculative/acceptance" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/speculative/bench reference-ready
Acceptance log query (workflow_id='speculative_teacher:log')
Full comment
Acceptance log query (workflow_id='speculative_teacher:log') Auth-gated via req.tenant_record. Tenant fence forced from session, never from request body. Distinct prefix /v1/speculative/* so parallel agents on W811/W812/W813/W815 cannot collide on these route paths.
curl -X POST "https://kolm.ai/v1/speculative/bench" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/speculative/bench/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/speculative/bench/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Sso (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/sso/status reference-ready
W869+ Persona D admin status aggregators.
Full comment
W869+ Persona D admin status aggregators. Thin read-only composers for /account/enterprise. Each one stitches data from individual surfaces (sso/status, byoc/deployments, compliance/*, audit) into the shape the admin dashboard expects. Plain when state is missing: empty fields, no 404s.
curl -X GET "https://kolm.ai/v1/sso/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Staleness (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/staleness reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/staleness" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/staleness/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/staleness/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/staleness/apply-ttl reference-ready
Role gate: req.is_admin OR req.local_daemon OR req.tenant_record.kind === 'human'
Full comment
Role gate: req.is_admin OR req.local_daemon OR req.tenant_record.kind === 'human' (the tenant_record.kind sentinel - human tenants are workspace owners by construction in src/auth.js; anon/api_only/etc. are not). We do NOT reuse teams.requireRole here because the staleness scope is per-namespace inside a tenant, not per-team. Adding team scoping is a follow-up (W746+1).
curl -X POST "https://kolm.ai/v1/staleness/apply-ttl" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Stat Sig (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/stat-sig/gate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/stat-sig/gate" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/stat-sig/test reference-ready
Returns: {ok, decision:'pass'|'fail'|'insufficient', reasons:[], welch:{...}, version}
Full comment
Returns: {ok, decision:'pass'|'fail'|'insufficient', reasons:[], welch:{...}, version} Auth-gated. Pure-math welchT does not need tenant fence; gate() reads via ab-router which forces tenant from session.
curl -X POST "https://kolm.ai/v1/stat-sig/test" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Status (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/status/receipts source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/status/receipts" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/status/subscribe reference-ready
Status subscribe - email opt-in from the /status page. Validates the address,
Full comment
Status subscribe - email opt-in from the /status page. Validates the address, dedupes by email (returns duplicate:true on re-subscribe), inserts into status_subscribers with source:'status_page', and is rate-limited.
curl -X POST "https://kolm.ai/v1/status/subscribe" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/status/summary source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/status/summary" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Storage (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/storage/config reference-ready
Storage config - returns the event-store driver info + media blob base
Full comment
Storage config - returns the event-store driver info + media blob base directory + supported media kinds. The config itself is env-var driven (KOLM_DATA_DIR, KOLM_MEDIA_DIR, KOLM_EVENT_STORE_DRIVER).
curl -X GET "https://kolm.ai/v1/storage/config" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/storage/config reference-ready
Storage config update - admin-only echo endpoint that does NOT mutate
Full comment
Storage config update - admin-only echo endpoint that does NOT mutate runtime config (storage settings live in env vars and require a daemon restart). Returns {ok, proposed, note, env_vars} so the dashboard can show what would change and which vars to set.
curl -X PUT "https://kolm.ai/v1/storage/config" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/storage/object-readiness reference-ready
Artifact object-store readiness for account UI and CI. This is split out
Full comment
Artifact object-store readiness for account UI and CI. This is split out from generic cloud readiness because large .kolm/model bundles require a real object path (R2 S3, AWS S3, generic S3, Supabase S3, or local disk), not only provider env detection.
curl -X GET "https://kolm.ai/v1/storage/object-readiness" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/storage/purge reference-ready
Storage purge - destructive admin-only event-store purge. Requires
Full comment
Storage purge - destructive admin-only event-store purge. Requires {confirm:true} in the body; supports {before} timestamp + {namespace} filters. Returns purge counts. Used for lake-retention cleanups.
curl -X POST "https://kolm.ai/v1/storage/purge" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Streaming (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/streaming/capabilities source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/streaming/capabilities" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/streaming/normalize source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/streaming/normalize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Stripe (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/stripe/webhook reference-ready
(downgrade to free). Idempotent: each Stripe event id is recorded once.
Full comment
(downgrade to free). Idempotent: each Stripe event id is recorded once. The route is mounted with `express.raw({ type: '*/*' })` ahead of `express.json()` in server.js - req.body must be a Buffer for signature verification to work (canonical JSON reordering breaks the HMAC).
curl -X POST "https://kolm.ai/v1/stripe/webhook" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Sync (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/sync/audit source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/sync/audit" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sync/inbox reference-ready
{events, namespace, source_device_id, state} envelope as the contract.
Full comment
{events, namespace, source_device_id, state} envelope as the contract. The receiver writes incoming events into the local event store. WC14 - token-in-body endpoint: a fuzzer can spam any envelope shape. The syncInboxBackoff middleware locks an IP out for 15 min after 5 malformed attempts (a real peer always sends a typed envelope; bots typically don't).
curl -X POST "https://kolm.ai/v1/sync/inbox" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sync/pull source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/sync/pull" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/sync/push reference-ready
{pushed, skipped, blocked, audit_id, reasons}.
curl -X POST "https://kolm.ai/v1/sync/push" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/sync/state reference-ready
what data leaves the device.
curl -X PUT "https://kolm.ai/v1/sync/state" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/sync/status source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/sync/status" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Synthesis (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/synthesize reference-ready
Layer 1: Synthesis
curl -X POST "https://kolm.ai/v1/synthesize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/synthesize/batch reference-ready
Batch synthesis: multiple concepts in one round-trip. Sequential, since
Full comment
Batch synthesis: multiple concepts in one round-trip. Sequential, since synthesis is CPU-bound - but billed once via shared overhead.
curl -X POST "https://kolm.ai/v1/synthesize/batch" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/synthesize/stream reference-ready
SSE: live synthesis events (candidate generated, verified, accepted, etc.)
curl -X POST "https://kolm.ai/v1/synthesize/stream" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Synthetic (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/synthetic/commit source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/synthetic/commit" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/synthetic/coverage reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/synthetic/coverage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/synthetic/coverage/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/synthetic/coverage/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/synthetic/gaps reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/synthetic/gaps" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/synthetic/gaps/:namespace reference-ready
supply ANTHROPIC_API_KEY or KOLM_TEACHER_API_KEY in env. Missing key →
Full comment
supply ANTHROPIC_API_KEY or KOLM_TEACHER_API_KEY in env. Missing key → 503 teacher_not_wired envelope. * Spend protection: POST /v1/synthetic/generate refuses to actually call the teacher unless body.confirm === true. Without confirm we return 200 + {ok:false, error:'synthetic_costs_money', estimated_cost_usd}.
curl -X GET "https://kolm.ai/v1/synthetic/gaps/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/synthetic/generate source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/synthetic/generate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
System (9)
About this group
Public surface. No auth header required. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /.well-known/jwks.json reference-ready
NOW-3 - standards-conformant JWKS endpoint. Exposes the default receipt
Full comment
NOW-3 - standards-conformant JWKS endpoint. Exposes the default receipt signing key as an RFC 8037 OKP JWK so any third-party verifier can fetch the key (kid == fingerprint) and check the X-Inference-Signature response header the gateway emits, WITHOUT trusting kolm (IETF inference-signature drafts).
curl -X GET "https://kolm.ai/.well-known/jwks.json" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /anthropic/v1/messages reference-ready
/anthropic/v1/messages so SDKs that point BASE_URL at https://kolm.ai/anthropic
Full comment
Anthropic messages alias - same connector as /v1/messages, mounted under /anthropic/v1/messages so SDKs that point BASE_URL at https://kolm.ai/anthropic continue to work without rewriting the path.
curl -X POST "https://kolm.ai/anthropic/v1/messages" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /health reference-ready
hit /v1/health for the full snapshot including backend availability.
Full comment
hit /v1/health for the full snapshot including backend availability. ok:true is the canonical liveness signal for ship-gate, status is preserved for older readers. W890-13: extended with `git`, `gateway`, `capture_store`, `signing_key` per plan Part K-1. Each field is a string so platform health probes can pattern-match without unpacking a struct.
curl -X GET "https://kolm.ai/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
GET /metrics reference-ready
authMiddleware so a Prometheus scraper can reach it without an API
Full comment
authMiddleware so a Prometheus scraper can reach it without an API key, optionally gated by KOLM_METRICS_BEARER for prod deployments. The plain-dev-default is public; setting the env var requires `Authorization: Bearer <token>` and returns a structured 401 envelope on mismatch so misconfigured scrapers fail loud.
curl -X GET "https://kolm.ai/metrics" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /metrics/extended reference-ready
/metrics/extended
curl -X GET "https://kolm.ai/metrics/extended" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
ALL /r/:token source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X ALL "https://kolm.ai/r/<token>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
ALL /r/:token/* source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X ALL "https://kolm.ai/r/<token>/*" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /ready reference-ready
gates. /health stays green for static uptime; /ready fails when critical
Full comment
Deploy readiness: public, low-detail, and suitable for platform health gates. /health stays green for static uptime; /ready fails when critical production-only configuration is missing.
curl -X GET "https://kolm.ai/ready" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
GET /ready/deep reference-ready
/ready/deep
curl -X GET "https://kolm.ai/ready/deep" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Target Profiles (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/target-profiles reference-ready
(jetson-orin-nano, iphone-15-pro, rtx-5090, ...) to the recommended
Full comment
(jetson-orin-nano, iphone-15-pro, rtx-5090, ...) to the recommended (--target, runtime, context, est tok/s) combo. The data is the same as `kolm compile --list-target-profiles --json` and ships with the CLI; the HTTP surface is here so the docs site and Studio compile wizard can read it without shelling out.
curl -X GET "https://kolm.ai/v1/target-profiles" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/target-profiles/:name source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/target-profiles/<name>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Teacher (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/teacher/chat source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/teacher/chat" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teacher/chat/health reference-ready
kolm instance. No auth required (publishes only booleans). Lets a local
Full comment
kolm instance. No auth required (publishes only booleans). Lets a local distill worker pick which vendor to route through the proxy without burning a real call to test.
curl -X GET "https://kolm.ai/v1/teacher/chat/health" \
-H "Authorization: Bearer kolm-demo-key"
{
"status": "ok",
"uptime_s": 0
}
Teacher Versions (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/teacher-versions reference-ready array-literal expansion
:namespace path param. The dashboard pages call these endpoints without a
Full comment
:namespace path param. The dashboard pages call these endpoints without a selected namespace before the user picks one; previously they 404'd. We forward to the existing :namespace handler with namespace='default' so the account UI<->server parity test (W409f #4) passes and the page renders an empty-state from a real envelope instead of a 404.
curl -X GET "https://kolm.ai/v1/teacher-versions" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teacher-versions/:namespace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/teacher-versions/<namespace>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Team (13)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/team/accept-invite reference-ready
WC14 - token-in-body endpoint: teamAcceptBackoff locks an IP out for
Full comment
WC14 - token-in-body endpoint: teamAcceptBackoff locks an IP out for 15 min after 5 failed token attempts to bound brute-force search of the invite_token space.
curl -X POST "https://kolm.ai/v1/team/accept-invite" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/team/approvals source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/team/approvals" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/approvals source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/team/approvals" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/approvals/:id/decide source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/team/approvals/<id>/decide" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/invite source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/team/invite" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/team/invites reference-ready
/v1/team/invites - team.html invite list / create endpoint.
Full comment
/v1/team/invites - team.html invite list / create endpoint. GET returns the calling tenant's outstanding invites; POST creates one.
curl -X GET "https://kolm.ai/v1/team/invites" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/invites source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/team/invites" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/team/member/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/team/member/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/team/members source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/team/members" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/namespaces source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/team/namespaces" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/team/role source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/team/role" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/team/sync reference-ready
structured body; soft cap sets x-kolm-quota-warning.
Full comment
structured body; soft cap sets x-kolm-quota-warning. Auth flows through the standard middleware (mounted later as r.use(authMiddleware) at the section below). The tenant_record is already attached when this handler runs.
curl -X POST "https://kolm.ai/v1/team/sync" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/team/workspace source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/team/workspace" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Teams (20)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/teams reference-ready
Team list - returns active teams for the signed-in tenant with their role.
curl -X GET "https://kolm.ai/v1/teams" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams reference-ready
Team creation - creates a paid-plan workspace and makes the caller the owner.
curl -X POST "https://kolm.ai/v1/teams" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/teams/:idOrSlug reference-ready
Team delete - owner-only soft delete that removes members and pending invites.
curl -X DELETE "https://kolm.ai/v1/teams/<idOrSlug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/teams/:idOrSlug reference-ready
Team detail - returns team, member, and pending-invite data for members or admins.
curl -X GET "https://kolm.ai/v1/teams/<idOrSlug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/teams/:idOrSlug reference-ready
Team update - admin-only rename, plan, and seat-limit updates.
curl -X PATCH "https://kolm.ai/v1/teams/<idOrSlug>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teams/:idOrSlug/captures reference-ready
team activity dashboard. Every member's captured AI traffic,
Full comment
team activity dashboard. Every member's captured AI traffic, attributed (who / model / namespace / cost), plus a rollup. Any active team member may read; finer-grained capture:read RBAC is layered in Part A3.
curl -X GET "https://kolm.ai/v1/teams/<idOrSlug>/captures" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teams/:idOrSlug/export reference-ready
team-scoped data export (admin + lake:export scope). Streams the
Full comment
team-scoped data export (admin + lake:export scope). Streams the team's captured events so a team can hand an auditor or analyst the lake.
curl -X GET "https://kolm.ai/v1/teams/<idOrSlug>/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams/:idOrSlug/invite reference-ready
Team invite - admin-only invite that enforces seat limits and returns an accept URL.
curl -X POST "https://kolm.ai/v1/teams/<idOrSlug>/invite" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/teams/:idOrSlug/members/:tenant_id reference-ready
Team member removal - members may leave; admins may remove non-owner members.
curl -X DELETE "https://kolm.ai/v1/teams/<idOrSlug>/members/<tenant_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
PATCH /v1/teams/:idOrSlug/members/:tenant_id reference-ready
Team member role update - admin-only role changes, with owner changes routed via transfer.
curl -X PATCH "https://kolm.ai/v1/teams/<idOrSlug>/members/<tenant_id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teams/:idOrSlug/models reference-ready
team model registry. A member shares an artifact (a completed
Full comment
team model registry. A member shares an artifact (a completed compile job) with the team; members list it and reach it via a STABLE endpoint. Backs "train a model your team owns, then everyone uses it" (including the intense cloud/GPU training path - any completed artifact).
curl -X GET "https://kolm.ai/v1/teams/<idOrSlug>/models" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams/:idOrSlug/models source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/teams/<idOrSlug>/models" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/teams/:idOrSlug/models/:modelId source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/teams/<idOrSlug>/models/<modelId>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
POST /v1/teams/:idOrSlug/models/:modelId/endpoint source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/teams/<idOrSlug>/models/<modelId>/endpoint" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/teams/:idOrSlug/retention reference-ready
team data-retention policy (admin sets retain_days; 0 = keep forever).
curl -X GET "https://kolm.ai/v1/teams/<idOrSlug>/retention" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams/:idOrSlug/retention source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/teams/<idOrSlug>/retention" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams/:idOrSlug/transfer reference-ready
Team ownership transfer - owner-only handoff to an existing team member.
curl -X POST "https://kolm.ai/v1/teams/<idOrSlug>/transfer" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/teams/invites/:invite_id reference-ready
Team invite revoke - admin-only deletion of an outstanding invite by invite id.
curl -X DELETE "https://kolm.ai/v1/teams/invites/<invite_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/teams/invites/:token reference-ready
Team invite preview - public token lookup with invite role, expiry, and team summary.
curl -X GET "https://kolm.ai/v1/teams/invites/<token>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/teams/invites/:token/accept reference-ready
Team invite acceptance - signed-in tenant accepts a valid invite for their email.
curl -X POST "https://kolm.ai/v1/teams/invites/<token>/accept" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Telemetry (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/telemetry reference-ready
Returns the v5 (kolm) summary AND the legacy invocations snapshot the
Full comment
Returns the v5 (kolm) summary AND the legacy invocations snapshot the existing dashboard.html consumes. Dashboard keeps reading total_invocations/p50_us/cache; new surfaces (status, hero) read compiles_today/receipt_bearing_runs/k_score_median/artifacts_total/ active_tenants_24h.
curl -X GET "https://kolm.ai/v1/telemetry" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Test Device (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/test-device source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/test-device" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Test Quants (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/test-quants source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/test-quants" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Trace (10)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/trace/:trace_id/chain reference-ready
Trace chain - returns tenant-scoped parent/child span chain for a 32-hex trace id.
curl -X GET "https://kolm.ai/v1/trace/<trace_id>/chain" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trace/:trace_id/export reference-ready
Trace export - returns tenant-scoped raw spans for a 32-hex trace id.
curl -X GET "https://kolm.ai/v1/trace/<trace_id>/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trace/:trace_id/stats reference-ready
Trace stats - returns tenant-scoped span counts and timing stats for a 32-hex trace id.
curl -X GET "https://kolm.ai/v1/trace/<trace_id>/stats" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/trace/append reference-ready
Trace append - validates and stores one span under the authenticated tenant.
curl -X POST "https://kolm.ai/v1/trace/append" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/trace/compile reference-ready
Trace compile - converts a tenant trace into replayable workflow IR seeds.
curl -X POST "https://kolm.ai/v1/trace/compile" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trace/distill reference-ready
/v1/trace/distill - collection GET listing tenant reasoning-trace distill
Full comment
/v1/trace/distill - collection GET listing tenant reasoning-trace distill jobs. Real W828 wiring lives in src/trace-compile.js; this collection stub returns an empty envelope until a wave wires the distill queue through a dedicated route module.
curl -X GET "https://kolm.ai/v1/trace/distill" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/trace/translate reference-ready
Trace translate - rewrites trace IR provider/model fields for replay on another provider.
curl -X POST "https://kolm.ai/v1/trace/translate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trace/translate/detect reference-ready
Trace provider detect - detects source provider/model metadata for a tenant trace.
curl -X GET "https://kolm.ai/v1/trace/translate/detect" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trace/translate/providers reference-ready
Trace translate providers - lists supported cross-provider trace rewrite targets.
curl -X GET "https://kolm.ai/v1/trace/translate/providers" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/trace/verify reference-ready
Trace replay verify - checks compiled replay outputs against captured trace spans.
curl -X POST "https://kolm.ai/v1/trace/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Training (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/training/plan reference-ready
Training plan - drafts a training plan (model class, dataset split, eval
Full comment
Training plan - drafts a training plan (model class, dataset split, eval protocol, expected K-floor) for a given dataset. Body: { dataset_id, plus optional model_class, holdout, budget }. Used by `kolm training plan`.
curl -X POST "https://kolm.ai/v1/training/plan" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/training/token-dpo reference-ready
/v1/training/token-dpo - collection GET listing tenant token-DPO jobs.
Full comment
/v1/training/token-dpo - collection GET listing tenant token-DPO jobs. Plain envelope: no token-DPO module is wired into the request path yet, so the items[] is empty + status='pending'. The operator still gets a real envelope rather than a 404 from the TUI view.
curl -X GET "https://kolm.ai/v1/training/token-dpo" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Transparency Log (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/transparency-log/checkpoints source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/transparency-log/checkpoints" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/transparency-log/checkpoints/latest source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/transparency-log/checkpoints/latest" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/transparency-log/entries source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/transparency-log/entries" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/transparency-log/entries/:seq source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/transparency-log/entries/<seq>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/transparency-log/proof/:seq reference-ready
The RFC 9162 / RFC 6962 inclusion-proof fields (leaf_index, tree_size,
Full comment
The RFC 9162 / RFC 6962 inclusion-proof fields (leaf_index, tree_size, audit_path, root_hash, leaf_hash) are surfaced at the TOP LEVEL so a buyer can verify inclusion directly against verifyInclusionProof without reaching into a nested object. The original `proof` + `checkpoint` keys are kept for backward compatibility (older clients still read response.proof.*).
curl -X GET "https://kolm.ai/v1/transparency-log/proof/<seq>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/transparency-log/size source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/transparency-log/size" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Trust (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/trust/* source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/trust/*" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trust/:slug reference-ready
review group. Renders the paid signed report (html default, ?format=json|pdf)
Full comment
review group. Renders the paid signed report (html default, ?format=json|pdf) and verifies offline. The slug is an unguessable capability token; possession is the grant. Resolves a paid audit slug OR a subscription's stable slug (always-current). A lapsed subscription serves its last report with a banner.
curl -X GET "https://kolm.ai/v1/trust/<slug>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trust/:slug/badge.svg reference-ready
issuer key is revoked goes grey 'report revoked', outranking staleness and
Full comment
issuer key is revoked goes grey 'report revoked', outranking staleness and readiness), so it is cached for only 5 minutes - short enough that a revocation or freshness change propagates promptly. Allow-listed in src/auth.js PUBLIC_API alongside the other /v1/trust regexes.
curl -X GET "https://kolm.ai/v1/trust/<slug>/badge.svg" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trust/:slug/delta reference-ready
resolved from the audit / subscription history (resolvePriorReport); a link
Full comment
resolved from the audit / subscription history (resolvePriorReport); a link with no prior (a first-cycle Continuous report or a standalone $750 report) returns { ok:true, delta:null, note } rather than a 404. computeAuditDelta is pure + never-throws; this route never re-signs and touches no tenant data.
curl -X GET "https://kolm.ai/v1/trust/<slug>/delta" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trust/:slug/export reference-ready
CSV / .xls / Drata / Vanta / exec / crosswalk artifact straight into their
Full comment
CSV / .xls / Drata / Vanta / exec / crosswalk artifact straight into their GRC tool with no kolm account. Possession of the unguessable slug is the grant; resolveTrust only yields an envelope for a PAID audit or an active / lapsed Continuous subscription (a not-yet-generated subscription is 409).
curl -X GET "https://kolm.ai/v1/trust/<slug>/export" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/trust/:slug/questionnaire reference-ready
the unguessable slug is the grant (same capability level as the report it
Full comment
the unguessable slug is the grant (same capability level as the report it derives from); allow-listed in PUBLIC_API alongside GET /v1/trust/:slug. Answers are DERIVED from the report - a control the run never assessed is 'n/a', never an unsupported 'yes'.
curl -X GET "https://kolm.ai/v1/trust/<slug>/questionnaire" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Tunnel (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/tunnel/agent/:token reference-ready
SSE long-poll: agent attaches and receives `request` events.
curl -X GET "https://kolm.ai/v1/tunnel/agent/<token>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/tunnel/agent/:token/response reference-ready
Agent posts a response for a given request_id.
curl -X POST "https://kolm.ai/v1/tunnel/agent/<token>/response" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/tunnel/register reference-ready
The agent maintains an SSE connection to /v1/tunnel/agent/<token>, pulls
Full comment
The agent maintains an SSE connection to /v1/tunnel/agent/<token>, pulls pending requests, runs the artifact, and posts responses back. The relay never decrypts payloads (we don't terminate TLS inside the user's machine), so the trust model is: trust kolm.ai to relay bytes in transit, or use BYOC TEE for payload-blind operation.
curl -X POST "https://kolm.ai/v1/tunnel/register" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Tunnels (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/tunnels reference-ready
Tunnels list - returns the caller's active tenant tunnels (or team tunnels
Full comment
Tunnels list - returns the caller's active tenant tunnels (or team tunnels when ?team_id is supplied). Each row carries token, public_url, expires_at, and agent attach status. Used by the dashboard + `kolm tunnel list`.
curl -X GET "https://kolm.ai/v1/tunnels" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/tunnels/:token reference-ready
Tunnel close - tears down one tunnel by token. Tenant-fenced (closeTunnel
Full comment
Tunnel close - tears down one tunnel by token. Tenant-fenced (closeTunnel throws code:'forbidden' for cross-tenant tokens → 403). Disconnects the attached agent SSE stream.
curl -X DELETE "https://kolm.ai/v1/tunnels/<token>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
Usage (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/usage/budget reference-ready
Spend-cap budget status
curl -X GET "https://kolm.ai/v1/usage/budget" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Verified inference (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/verified-inference reference-ready
Verified-inference endpoint - Generator-Verifier asymmetry made shippable.
Full comment
Verified-inference endpoint - Generator-Verifier asymmetry made shippable. Sample k candidates from a frontier model, run each through a deterministic Recipe verifier (test cases), pick the first that passes. Returns a receipt. P(correct) >= 1 - (1 - p*v)^k. For p=0.91 v=1 k=8: 99.9999%. Uses the server's ANTHROPIC_API_KEY, so a tenant API key is required.
curl -X POST "https://kolm.ai/v1/verified-inference" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Verify (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/verify reference-ready
Verify - compiles caller-supplied source and runs the verify suite against
Full comment
Verify - compiles caller-supplied source and runs the verify suite against positive/negative examples. Returns the verify result block (per-case pass/fail + summary). Rate-limited via publishLimiter. Body: { source (required), positives, negatives }.
curl -X POST "https://kolm.ai/v1/verify" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/verify/:cid reference-ready
DoD step 9 closer. If the registry row carries `manifest.hashes`,
Full comment
DoD step 9 closer. If the registry row carries `manifest.hashes`, recompute the CID from those hashes (cidFromManifestHashes) and refuse to return verified=true unless the recomputed CID matches the requested CID. Surfaces `manifest_hash_mismatch` envelope with both expected_cid and actual_cid so an auditor can diff the discrepancy without trusting us.
curl -X GET "https://kolm.ai/v1/verify/<cid>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/verify/:receipt_id reference-ready
W-D wrapper-completion - GET /v1/verify/:receipt_id
Full comment
W-D wrapper-completion - GET /v1/verify/:receipt_id Public receipt verification surface. Returns the receipt JSON if known to this tenant + signature verification result. Used by the kolm-audit-1 `verify_url` field; the third-party can hit this without auth to get back the signed payload + a deterministic verify result.
curl -X GET "https://kolm.ai/v1/verify/<receipt_id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Verticals (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/verticals reference-ready
from a human workspace, not a CI api_only key.
Full comment
from a human workspace, not a CI api_only key. The fingerprint surface is intentionally non-404 - the route exists, it returns an plain "w757_not_shipped" envelope so callers can branch on the error code instead of probing for the URL.
curl -X GET "https://kolm.ai/v1/verticals" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/verticals/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/verticals/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/verticals/:id/fingerprint reference-ready
otherwise shadow this on /v1/verticals/<id>/<fingerprint>. Express orders
Full comment
otherwise shadow this on /v1/verticals/<id>/<fingerprint>. Express orders by registration, so this stays after /v1/verticals/:id but matches a strictly longer path; both are fine, the test pins both.
curl -X GET "https://kolm.ai/v1/verticals/<id>/fingerprint" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/verticals/register-stubs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/verticals/register-stubs" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Video (5)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/video/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/video/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/video/capture-detect reference-ready
Distinct paths from W771 vision-capture (/v1/vision/capture-detect,
Full comment
Distinct paths from W771 vision-capture (/v1/vision/capture-detect, /v1/vision/captures) and W772 audio capture (/v1/audio/speech, /v1/audio/transcriptions, /v1/audio/translations) so the three parallel wave agents do not collide.
curl -X POST "https://kolm.ai/v1/video/capture-detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/video/captures source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/video/captures" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/video/tokenize reference-ready
Auth-gated. Returns the worker doctor envelope -- reports python3
Full comment
Auth-gated. Returns the worker doctor envelope -- reports python3 presence + transformers/torch/decord/av/PIL availability + which tokenizer command is wired. ═══════════════════════════════════════════════════════════════════════
curl -X POST "https://kolm.ai/v1/video/tokenize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/video/tokenize/doctor source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/video/tokenize/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Vision (3)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/vision/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/vision/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/vision/capture-detect reference-ready
{ok, count, captures[]} envelope.
Full comment
{ok, count, captures[]} envelope. All three are tenant-fenced via req.tenant_record.id (W411). Plain envelopes on bad input - no silent passthrough.
curl -X POST "https://kolm.ai/v1/vision/capture-detect" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/vision/captures source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/vision/captures" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Vlm (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/vlm/tokenize reference-ready
Auth-gated. Returns the worker doctor envelope -- reports python3
Full comment
Auth-gated. Returns the worker doctor envelope -- reports python3 presence + transformers/torch/Pillow availability + which tokenizer command is wired.
curl -X POST "https://kolm.ai/v1/vlm/tokenize" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/vlm/tokenize/doctor source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/vlm/tokenize/doctor" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Vlm Distill (2)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/vlm-distill/run reference-ready
{ teacher, student_model, dataset_captures } - see src/vlm-distill.js
Full comment
{ teacher, student_model, dataset_captures } - see src/vlm-distill.js When KOLM_VLM_TEACHER_API_KEY is unset the response envelope still has ok:true (because the job was enqueued plainly) but real_run:false + missing_env:'KOLM_VLM_TEACHER_API_KEY' so the caller knows nothing was actually trained.
curl -X POST "https://kolm.ai/v1/vlm-distill/run" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/vlm-distill/runs source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/vlm-distill/runs" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Webhooks (6)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/webhooks reference-ready
Webhooks CRUD
curl -X GET "https://kolm.ai/v1/webhooks" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/webhooks source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/webhooks" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
DELETE /v1/webhooks/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X DELETE "https://kolm.ai/v1/webhooks/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true
}
GET /v1/webhooks/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/webhooks/<id>" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
PATCH /v1/webhooks/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PATCH "https://kolm.ai/v1/webhooks/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
PUT /v1/webhooks/:id source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X PUT "https://kolm.ai/v1/webhooks/<id>" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Whoami (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/whoami reference-ready
/v1/whoami alias. SDKs (OpenAI/Anthropic/LangChain) follow the
Full comment
/v1/whoami alias. SDKs (OpenAI/Anthropic/LangChain) follow the convention `GET /v1/whoami` (or `/v1/me`) for "who is this key?". The canonical kolm endpoint is GET /v1/account, but /v1/whoami forwards to the same handler so SDKs probing the conventional path get an answer instead of a 404 + bad first-impression. Auth-gated identically.
curl -X GET "https://kolm.ai/v1/whoami" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Workflows (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
GET /v1/workflows/repeated reference-ready
/v1/workflows/repeated - repeated-workflows.html surfaces the cluster
Full comment
/v1/workflows/repeated - repeated-workflows.html surfaces the cluster summary from /v1/bridges/observations (the canonical W297 source) under a more discoverable URL. Returns {workflows:[{template,count,samples}]}.
curl -X GET "https://kolm.ai/v1/workflows/repeated" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
Wrap (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/wrap/verified reference-ready
If `corpus_namespace` is set, we ask the tenant's Recall index for the
Full comment
If `corpus_namespace` is set, we ask the tenant's Recall index for the top-k chunks for the most-recent user message and prepend them as a system context block. This is the "ground every Distill call in the user's corpus" promise from the plan.
curl -X POST "https://kolm.ai/v1/wrap/verified" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Xlang (4)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/xlang/bakeoff source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/xlang/bakeoff" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/xlang/balanced-sample reference-ready
* Hosted route has NO runOnArtifact/judge wired by default
Full comment
* Hosted route has NO runOnArtifact/judge wired by default production injects via req.app.locals._w774_run_on_artifact + ._w774_judge. The plain envelope on missing wiring is the contract, not a 500. * All four routes are W411 tenant-fenced.
curl -X POST "https://kolm.ai/v1/xlang/balanced-sample" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
GET /v1/xlang/language-coverage source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X GET "https://kolm.ai/v1/xlang/language-coverage" \
-H "Authorization: Bearer kolm-demo-key"
{
"ok": true,
"request_id": "req_018x"
}
POST /v1/xlang/per-language-eval source-indexed
Route contract generated from source. Request and response use the shared JSON envelope.
curl -X POST "https://kolm.ai/v1/xlang/per-language-eval" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Yaml (1)
About this group
Authenticated surface. Send Authorization: Bearer <key> or x-api-key: <key>. Base URL: https://kolm.ai (prod) or http://localhost:8787 (self-host).
POST /v1/yaml/validate reference-ready
* 200 + { ok:false, parsed, validation } on schema errors (parse
Full comment
* 200 + { ok:false, parsed, validation } on schema errors (parse succeeded but the document violates the W732 schema - caller still gets the parsed tree so it can highlight the bad rows) * 400 + { ok:false, error:'yaml_parse_failed', detail, line } on a parser error (couldn't even read the document)
curl -X POST "https://kolm.ai/v1/yaml/validate" \
-H "Authorization: Bearer kolm-demo-key" \
-H "Content-Type: application/json" \
-d '{}'
{
"ok": true,
"request_id": "req_018x"
}
Error envelope
Every 4xx and 5xx response carries the same shape.
{
"error": {
"code": "privacy_blocked",
"message": "ssn class set to block in policy.json",
"request_id": "req_018k",
"details": { "class": "ssn", "namespace": "billing" }
}
}