Skip to content

HTTP API

The console is a static SPA backed by a Go BFF that serves the /api surface. Every route here is caller-scoped: the BFF acts with your Kubernetes identity and RBAC, never a privileged service account — you see and change exactly what your RBAC permits, and denials surface as the API server’s own 403. See RBAC & personas and Security posture.

  • Auth: a bearer token (the console session / your kubeconfig token). Unauthenticated /api calls are rejected.
  • Method + path matter (Go 1.22 ServeMux): a GET and a POST on the same path are distinct routes; a missing method → 405.
  • 501 means “not wired here” (feature-flagged off or backend unconfigured) — not an error in your request.
  • 403 is the real Kubernetes RBAC decision for the resource you named — no pre-emption by the BFF.
Method + path Purpose
GET /api/agents List agents (caller-scoped).
POST /api/agents Create an agent (config-builder apply).
GET /api/agents/{ns}/{name} Agent detail.
PUT /api/agents/{ns}/{name} Edit an agent.
DELETE /api/agents/{ns}/{name} Delete an agent.
POST /api/agents/{ns}/{name}/fork Fork an agent.
POST /api/agents/{ns}/{name}/publish Publish as a template.
POST /api/agents/{ns}/{name}/rollback Roll back to a prior version (writes the rollback annotation; see Annotations & labels).
GET /api/agents/{ns}/{name}/versions/diff Diff two agent versions.
GET /api/agents/{ns}/{name}/logs Agent logs.
GET /api/agents/{ns}/{name}/runs Runs for this agent.
GET /api/agents/{ns}/{name}/online-score Online-scoring vector for the agent.
GET / PUT /api/agents/{ns}/{name}/tracepolicy Get / set the trace redaction policy.
GET / PUT /api/agents/{ns}/{name}/sessionmemory Get / set session-memory config.
GET / PUT /api/agents/{ns}/{name}/longtermmemory Get / set long-term-memory config.
GET /api/agents/{ns}/{name}/memory Read the agent’s memory surface.
GET /api/agents/{ns}/{name}/references · GET /api/usedby What this agent references / what references it.
POST /api/agents/generate · POST /api/agents/refine · POST /api/agents/check-requirements Create-from-prompt generation / refine / requirement check.
POST /api/expand Expand simplified config to an AgentDeployment (the expand core).
GET /api/topology Agent/registry topology graph.
GET /api/templates · POST /api/templates · DELETE /api/templates/{kind}/{namespace}/{name} Template catalog.
GET /api/recipes Starter recipes.
Method + path Purpose
GET /api/runs List runs.
POST /api/runs Create a run.
GET /api/runs/{id} Run detail.
GET /api/runs/{id}/tree The run’s span/step tree.
GET /api/runs/{id}/events Live run events (SSE stream).
POST /api/runs/{id}/resume Resume a paused (e.g. approval-gated) run.
POST /api/runs/{id}/cancel Cancel a run.
GET /api/runs/{id}/fixture The run’s recorded replay fixture.
POST /api/invoke Invoke an agent (playground).
Method + path Purpose
POST /api/runs/{id}/shares Create a share link/token for a run.
GET /api/runs/{id}/shares · DELETE /api/runs/{id}/shares/{shareId} List / revoke shares.
GET /api/shared/runs/{token} Public read of a shared run (token-gated; honest 404 on unknown/expired/revoked).
GET /api/my/shares Shares you created.
Method + path Purpose
POST /api/providers Connect a provider (paste a key once; stored server-side, never in the browser).
GET /api/providers List connected providers.
GET /api/providers/{name}/models Live model list from the provider.
POST /api/providers/{name}/rotate Rotate the provider key.
DELETE /api/providers/{name} Disconnect.
GET/POST /api/modelroutes · GET/PUT/DELETE /api/modelroutes/{ns}/{name} Model routes.
GET/POST /api/secretbindings · GET/PUT/DELETE /api/secretbindings/{ns}/{name} Secret bindings.

The provider-connect endpoints are gated by bff.providerConnect.enabled (a hardened install 404s them). See Connect a model provider.

Method + path Purpose
POST/GET /api/mcpservers · DELETE /api/mcpservers/{ns}/{name} · GET /api/mcpservers/{ns}/{name}/references Register / list / deregister BYO MCP servers.
GET /api/tools · GET /api/catalog Discovered tool catalog.
POST /api/mcp/connect · POST /api/mcp/publish · POST /api/mcp/org-credential Connect / publish / set an org credential.
POST /api/mcp/oauth/grant · DELETE /api/mcp/oauth/grant/{server} Begin per-user OAuth consent / revoke a grant.
GET /api/mcp/approvals · POST /api/mcp/approvals/{ns}/{name} · POST /api/mcp/approvals/{ns}/{name}/reject The MCP approval queue (hardened installs).
GET/POST /api/mcptoolbindings · GET/PUT/DELETE /api/mcptoolbindings/{ns}/{name} MCP tool bindings.
GET/POST /api/toolregistries · GET/PUT/DELETE /api/toolregistries/{ns}/{name} Tool registries.

MCP register/catalog is gated by bff.mcp.enabled; hardened installs can require approval. See Bring your own MCP.

Method + path Purpose
GET/POST /api/agentregistries · GET/PUT/DELETE /api/agentregistries/{ns}/{name} Agent registries (meshes).
GET/POST /api/agentscalingpolicies · GET/PUT/DELETE /api/agentscalingpolicies/{ns}/{name} Scaling policies.
GET/POST /api/evalsuites · GET/PUT/DELETE /api/evalsuites/{ns}/{name} · GET /api/evalsuites/{ns}/{name}/results Eval suites + results.
GET/POST /api/promptversions · GET/PUT/DELETE /api/promptversions/{ns}/{name} · GET /api/promptversions/{ns}/{name}/diff Prompt versions.
GET /api/guardrailpolicies Guardrail policies.
GET /api/approvals · GET /api/alerts Approval queue · alert feed.
GET /api/workflows · POST /api/workflows/{name}/runs · POST /api/workflows/runs · GET /api/workflows/spec-schema Workflows + run creation.
GET/POST /api/teams · POST /api/teams/generate Agent teams.
GET /api/knowledgebases · GET /api/knowledgebases/{name} · POST .../search · POST .../documents · POST .../ingest Knowledge bases (RAG). A KnowledgeBase is CREATED as a CRD (kubectl apply), not through this API — there is no POST /api/knowledgebases.
Method + path Purpose
GET /api/datasets · GET /api/datasets/{name}/cases List datasets / cases.
POST /api/datasets/{name}/export Export a redacted dataset from traces (a run-worker job).
POST /api/datasets/{name}/cases/{caseId}/labels Append a label (append-only).
POST /api/datasets/{name}/cases/from-run Add a run as a case.
POST /api/datasets/{name}/pin Pin/version an immutable dataset snapshot.
Method + path Purpose
GET /api/traces/{id} Link/resolve a trace.
GET /api/traces/{id}/detail Trace tree detail.
GET /api/cost · GET /api/cost/breakdown · GET /api/cost/forecast · GET /api/cost/chargeback Cost views.
GET /api/feedback · POST /api/feedback Read / submit feedback.
GET /api/metrics/eval-gated The “% deploys gated by an EvalSuite” counter. Cost lives under GET /api/cost (above), not under /api/metrics.

Trace/cost/feedback routes are backed by the trace/cost adapter; unconfigured → 501.

Method + path Purpose
GET/POST /api/tenants · GET /api/tenants/{name} Tenants.
GET /api/tenants/usage · GET /api/tenants/{name}/usage Live usage (spend / rpm / inflight); 501 when no State Layer is wired.

See Tenancy operations.

Method + path Purpose
GET /api/audit?namespace=&actor=&action=&kind=&limit=&cursor= Audit log (operator-only; keyset paging). 501 if no store; 403 if unauthorized. See Audit.
GET /api/whoami · GET /api/capabilities Your identity · the console capability probe (drives nav gating).
GET /api/namespaces · PUT /api/namespaces/{name}/display-name Namespaces + display name.
GET /api/health Liveness.