Skip to main content
EVOKORE// SKILLS / api-reference
Agent-33markdownsha FD560557E606

api-reference

documentation

API reference

AGENT-33 exposes a versioned REST API at http://<host>:8000, prefixed with /v1. Authentication is via bearer token (JWT or API key) carried in the Authorization header, and every route enforces an explicit scope.

This document is an operator's index of the endpoints you will actually call. For the complete, always-fresh surface (every route, every parameter, every response model), open the auto-generated Swagger UI:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
  • OpenAPI JSON: http://localhost:8000/openapi.json

If you need to feed the spec into another tool (Postman, a code generator), download /openapi.json and use that.

Authentication

All routes except /health, /healthz, /readyz, and /v1/auth/token require a bearer token. Two token types are accepted, both passed the same way:

Authorization: Bearer <token>
TypeIssued viaUse for
JWTPOST /v1/auth/tokenShort-lived sessions, UI logins
API keyPOST /v1/auth/api-keysLong-lived scripted access

JWTs expire (default 1 hour, configurable via JWT_EXPIRATION_MINUTES). API keys do not expire until revoked.

Scopes

Every protected route requires one or more scopes. Tokens carry a list; if any required scope is missing the response is 403 Forbidden.

ScopePermits
adminEverything; admin-only operations
agents:readList, fetch, and search agents and packs
agents:writeCreate, update, delete agents and packs
agents:invokeInvoke an agent
workflows:readList, fetch, inspect workflows and runs
workflows:writeCreate or modify workflows
workflows:executeTrigger workflow execution
tools:executeExecute tools and record traces

The bootstrap admin holds all scopes. API keys you create receive a subset that you specify.

Auth (/v1/auth)

MethodPathScopePurpose
POST/v1/auth/tokennoneExchange {username,password} for a JWT
POST/v1/auth/api-keysadminCreate a long-lived API key
DELETE/v1/auth/api-keys/{key_id}adminRevoke an API key

Example — mint a JWT:

curl -sX POST http://localhost:8000/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin"}'

Response:

{ "access_token": "eyJ...", "token_type": "bearer" }

Example — create an API key:

curl -sX POST http://localhost:8000/v1/auth/api-keys \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject":"ci-runner",
    "scopes":["agents:invoke","workflows:execute"]
  }'

The key field in the response is only shown once. Save it.

Health (/health, /healthz, /readyz)

MethodPathAuthPurpose
GET/healthnoneFull dependency probe (Postgres, Redis, NATS, LLM, etc.)
GET/healthznoneLiveness only — used for load balancer probes
GET/readyznoneReadiness for traffic
GET/health/channelsnonePer-messaging-channel health

Use /healthz from load balancers; it does not exercise downstream services. Use /health from monitoring; the response body identifies which subsystem is degraded.

Agents (/v1/agents)

The agent registry.

MethodPathScopePurpose
GET/v1/agents/agents:readList all agents
GET/v1/agents/{name}agents:readFetch one agent
POST/v1/agents/agents:writeRegister an agent definition
PUT/v1/agents/{name}agents:writeUpdate an agent definition
DELETE/v1/agents/{name}agents:writeRemove an agent
GET/v1/agents/searchagents:readSearch by capability
GET/v1/agents/capabilities/catalognoneCapability taxonomy
POST/v1/agents/validatenoneValidate a definition without saving
POST/v1/agents/preview-promptagents:readPreview the rendered prompt
POST/v1/agents/{name}/invokeagents:invokeSingle-turn invocation
POST/v1/agents/{name}/invoke-iterativeagents:invokeMulti-turn tool loop
POST/v1/agents/{name}/invoke-iterative/streamagents:invokeSSE stream
GET/v1/agents/by-id/{agent_id}agents:readFetch by stable ID
GET/v1/agents/profiling/{agent_name}agents:readProfile data
GET/v1/agents/tool-loop/scoresagents:readTool-loop quality scores

Example — invoke an agent:

curl -sX POST http://localhost:8000/v1/agents/researcher/invoke \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputs":{"query":"Summarize attention mechanisms","depth":"brief"}}'

Example — stream an iterative invocation (SSE):

curl -N -sX POST http://localhost:8000/v1/agents/code-worker/invoke-iterative/stream \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"inputs":{"task":"refactor this function"}}'

Workflows (/v1/workflows)

DAG workflow registry and runs.

MethodPathScopePurpose
GET/v1/workflows/workflows:readList workflows
POST/v1/workflows/workflows:writeRegister a workflow
GET/v1/workflows/{name}workflows:readFetch one workflow
GET/v1/workflows/{name}/dagworkflows:readStatic DAG layout
POST/v1/workflows/{name}/executeworkflows:executeStart a run
POST/v1/workflows/{name}/scheduleworkflows:executeSchedule recurring
GET/v1/workflows/{name}/historyworkflows:readRecent runs
GET/v1/workflows/schedulesworkflows:readList schedules
DELETE/v1/workflows/schedules/{job_id}workflows:executeCancel schedule
GET/v1/workflows/runs/{run_id}workflows:readRun metadata
GET/v1/workflows/runs/{run_id}/dagworkflows:readDAG with live status
GET/v1/workflows/runs/{run_id}/eventsworkflows:readStep events
GET/v1/workflows/runs/{run_id}/artifactsworkflows:readArtifacts
POST/v1/workflows/{run_id}/resumeworkflows:executeResume from checkpoint

Example — execute:

curl -sX POST http://localhost:8000/v1/workflows/research-assistant/execute \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputs":{"topic":"hybrid retrieval","depth":"standard"}}'

Companion routes:

  • GET /v1/workflows/templates/... — built-in templates index.
  • GET /v1/workflow-marketplace/... — community marketplace search.
  • WS /v1/workflows/runs/{run_id}/ws — live event stream (websocket).
  • GET /v1/workflows/runs/{run_id}/stream — SSE event stream.

Reviews (/v1/reviews)

Two-layer review queue.

MethodPathScopePurpose
POST/v1/reviews/workflows:writeOpen a review
GET/v1/reviews/workflows:readList reviews
GET/v1/reviews/{id}workflows:readOne review
DELETE/v1/reviews/{id}workflows:writeWithdraw
POST/v1/reviews/{id}/assessworkflows:writeSubmit risk assessment
POST/v1/reviews/{id}/assign-l1workflows:writeAssign L1 reviewer
POST/v1/reviews/{id}/l1workflows:writeL1 verdict
POST/v1/reviews/{id}/assign-l2workflows:writeAssign L2 reviewer
POST/v1/reviews/{id}/l2workflows:writeL2 verdict
POST/v1/reviews/{id}/approveworkflows:writeFinal approval
POST/v1/reviews/{id}/mergeworkflows:writeMerge into mainline

Autonomy (/v1/autonomy)

Autonomy budgets and stop conditions.

MethodPathScopePurpose
POST/v1/autonomy/budgetsworkflows:writeCreate a budget
GET/v1/autonomy/budgetsworkflows:readList active budgets
GET/v1/autonomy/budgets/{id}workflows:readOne budget
DELETE/v1/autonomy/budgets/{id}workflows:writeCancel budget
POST/v1/autonomy/budgets/{id}/approveadminApprove a draft
POST/v1/autonomy/budgets/{id}/activateadminActivate
POST/v1/autonomy/budgets/{id}/completeworkflows:writeMark complete
POST/v1/autonomy/budgets/{id}/extendworkflows:writeExtend
POST/v1/autonomy/budgets/{id}/escalateworkflows:writeEscalate
POST/v1/autonomy/preflightworkflows:executePreflight check

The budget state machine is DRAFT → PENDING_APPROVAL → ACTIVE → COMPLETED (or EXPIRED/CANCELED from any of the first three states).

Packs (/v1/packs)

Pack lifecycle, registry, and trust.

MethodPathScopePurpose
GET/v1/packsagents:readList installed
GET/v1/packs/{name}agents:readDetail
POST/v1/packs/installagents:writeInstall
POST/v1/packs/{name}/upgradeagents:writeUpgrade
DELETE/v1/packs/{name}agents:writeUninstall
POST/v1/packs/{name}/enableagents:writeEnable tenant-wide
POST/v1/packs/{name}/disableagents:writeDisable
POST/v1/packs/{name}/enable-sessionagents:writeSession overlay
POST/v1/packs/{name}/disable-sessionagents:writeRemove overlay
GET/v1/packs/{name}/dry-runagents:readPreview effects
GET/v1/packs/healthagents:readPer-pack health
GET/v1/packs/auditagents:readAudit log
GET/v1/packs/trust/overviewagents:readSigning posture
POST/v1/packs/trust/verify-alladminRe-verify signatures
GET/v1/packs/hub/searchagents:readSearch registry
GET/v1/packs/hub/entry/{name}agents:readRegistry entry
GET/v1/packs/hub/revocation/{name}agents:readRevocation status

Traces (/v1/traces)

Tool-call and agent traces with failure taxonomy.

MethodPathScopePurpose
POST/v1/traces/tools:executeCreate a trace
GET/v1/traces/workflows:readList traces
GET/v1/traces/{id}workflows:readOne trace
POST/v1/traces/{id}/actionstools:executeAppend an action
POST/v1/traces/{id}/completetools:executeFinalize

Evaluations (/v1/evaluations)

Golden tasks, gates, regressions.

MethodPathScopePurpose
POST/v1/evaluations/runsworkflows:executeStart a run
GET/v1/evaluations/runs/{id}workflows:readRun detail
GET/v1/evaluations/golden-tasksworkflows:readList tasks
GET/v1/evaluations/gatesworkflows:readGate definitions
POST/v1/evaluations/gates/checkworkflows:executeRun gates
GET/v1/evaluations/regressionsworkflows:readRegression history
GET/v1/evaluations/schedulesworkflows:readScheduled gates

Releases (/v1/releases)

Release lifecycle.

MethodPathScopePurpose
GET/v1/releasesworkflows:readList releases
POST/v1/releasesadminPlan a release
POST/v1/releases/{id}/freezeadminFreeze
POST/v1/releases/{id}/rcadminPromote to RC
POST/v1/releases/{id}/validateadminValidate
POST/v1/releases/{id}/releaseadminRelease
POST/v1/releases/{id}/rollbackadminRoll back

State machine: PLANNED → FROZEN → RC → VALIDATING → RELEASED → ROLLED_BACK.

Discovery (/v1/discovery)

MethodPathScopePurpose
GET/v1/discovery/toolsagents:readSearch tools
GET/v1/discovery/skillsagents:readSearch skills
GET/v1/discovery/capabilitiesagents:readCapability map

Dashboard and observability

MethodPathScopePurpose
GET/v1/dashboard/snapshotworkflows:readAggregate UI snapshot
GET/v1/dashboard/prometheusnonePrometheus metrics
GET/v1/insights/...workflows:readOutcomes/ROI
GET/v1/outcomes/...workflows:readImpact tracking
GET/v1/model-healthworkflows:readLLM provider health
GET/v1/operations/...workflows:readOps hub
GET/v1/operator/...workflows:readOperator sessions

Chat and conversational surfaces

MethodPathScopePurpose
POST/v1/chatagents:invokeSlash-routed chat
GET/v1/sessionsworkflows:readList sessions
GET/v1/sessions/{id}workflows:readSession detail
GET/v1/context/{id}workflows:readContext window

Provider/admin routes

MethodPathScopePurpose
GET/v1/ollama/...adminOllama proxy and stats
GET/v1/openrouter/...adminOpenRouter status
GET/v1/lm-studio/...adminLM Studio status
*/v1/admin/rate-limits/...adminRate-limit management
GET/v1/config/...adminActive config view
GET/v1/migrations/...adminSchema migration status

MCP (/v1/mcp)

Model Context Protocol surface for inbound and outbound MCP integrations.

MethodPathScopePurpose
POST/v1/mcp/...variesMCP server endpoints
GET/v1/mcp/proxy/...agents:readOutbound proxy status
POST/v1/mcp/sync/...agents:writeSync skills/tools from MCP

Tools and tool catalogue

MethodPathScopePurpose
GET/v1/catalog/...agents:readTool catalogue browsing
GET/v1/tools/gateway/...tools:executeTool gateway proxy
POST/v1/tools/mutations/...tools:executePre/post mutations
GET/v1/approvals/toolsadminPending tool approvals
POST/v1/approvals/toolsadminApprove a tool

Other domain routers

PrefixPurpose
/v1/backupsSnapshot create/restore
/v1/benchmarksSkillsBench results
/v1/browserBrowser sessions
/v1/capability-packsCapability pack management
/v1/checkpointsWorkflow checkpoints
/v1/commandsCommand palette / CLI mirror
/v1/comparativeA/B comparative scoring
/v1/compatibilityVersion compatibility checks
/v1/completion-gatesCompletion gates
/v1/component-securityComponent security scans
/v1/connectorsExternal connector boundary
/v1/cronCron-style jobs
/v1/delegationInter-agent delegation
/v1/doctorIn-engine diagnostics
/v1/embeddingsEmbedding swap and rerank
/v1/executionCode execution sandboxes
/v1/explanationsRun/decision explanations
/v1/hooksPre/post hooks
/v1/improvementsContinuous improvement queue
/v1/ingestionKnowledge ingestion
/v1/knowledgeKnowledge base / RAG
/v1/marketplaceSkill/pack marketplace
/v1/memoryMemory search
/v1/moaMixture-of-agents
/v1/multimodalMultimodal endpoints (voice/image)
/v1/p69bPaused invocations
/v1/planningPlanning service
/v1/pluginsPlugin management
/v1/policyPolicy decisions
/v1/processesProcess registry
/v1/provenanceProvenance chain
/v1/ragRAG pipeline
/v1/reasoningReasoning steps
/v1/researchResearch intake
/v1/resourcesResource limits
/v1/run-ledgerRun ledger
/v1/sandboxingSandbox configuration
/v1/skillsSkill matching
/v1/skills/authoringSkill authoring
/v1/spawnerSub-agent spawner
/v1/supportSupport bundles
/v1/synthetic-envsSynthetic test environments
/v1/trainingOnline training
/v1/visualizationsVisualization data
/v1/web-researchWeb-research adapter
/v1/webhooksInbound webhooks
/v1/webhooks/deliveriesDelivery status

Error format

All errors follow FastAPI's default envelope:

{ "detail": "explanation here" }
StatusMeaning
400Bad request — JSON schema or value error
401Missing or invalid bearer token
403Token missing the required scope
404Resource not found
409State-machine conflict (e.g., budget already ACTIVE)
422Pydantic validation failure with field-level detail
429Rate limit exceeded
500Internal error — check /v1/traces
503A dependency (LLM, DB) is unavailable

429 responses include Retry-After and the relevant rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset).

Pagination

Listing endpoints accept the conventional limit and offset query parameters. The default limit is endpoint-specific (commonly 50, capped at 500). Cursor pagination is used on the high-volume endpoints (traces, events); follow the next link in the response when present.

Versioning

All routes are prefixed with /v1. Future breaking changes will ship under /v2; /v1 will continue to be served alongside it for at least one minor release cycle. The accept header is not used for versioning.

See also