kolm.ai / docs / api

API operating reference

The kolm.ai REST surface. 929 wired routes across 214 groups, auto-extracted from route source files and re-rendered on every wave. Every endpoint is JSON in, JSON out, bearer-auth on protected routes, and rate-limited per tenant.

capture and routeProvider-compatible chat, messages, responses, gateway dispatch and capture ingestion endpoints.
compile and verifyBuild jobs, artifacts, receipts, signatures, OpenAPI references and verifier routes.
train and evaluateDatasets, labels, bakeoffs, quality prediction, K-score and distillation workflows.
deploy and governDevices, fleets, trust links, transparency logs, usage controls and enterprise governance routes.

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.

01Create workspace and keyPOST /v1/signup

Returns the first workspace envelope, selected plan, API key once, and control-center destination.

02Route model trafficPOST /v1/route/chat/completions

OpenAI-compatible traffic enters the capture and confidence-aware routing path.

03Control data movementGET /v1/account/api-control-center

Operators declare sources, policy, egress, redaction, routing, eval gates, targets, and exports.

04Compile portable behaviorPOST /v1/compile

Stable behavior turns into artifacts, manifests, hashes, receipts, and runtime target metadata.

05Export proof and limitsGET /v1/evidence/readiness

Read receipts and readiness gates before promoting production-final claims.

Base URL & auth

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:

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

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"
}

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"
}

POST /v1/federated/share-approvals reference-ready

Federated approval share - emits hash-only approval rows for an opted-in namespace.

curl -X POST "https://kolm.ai/v1/federated/share-approvals" \
  -H "Authorization: Bearer kolm-demo-key" \
  -H "Content-Type: application/json" \
  -d '{}'
{
  "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"
}

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"
}

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"
}

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"
}

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"
}

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" }
  }
}