Skip to content

API Reference

All API endpoints are under /api with JWT Bearer authentication (except health and auth endpoints).

Interactive documentation is available at http://localhost:3005/swagger.

These endpoints do not require authentication.

MethodEndpointDescription
GET/healthBasic health check
GET/health/detailedService status with latencies
GET/health/readyReadiness probe
GET/health/liveLiveness probe
MethodEndpointAuthDescription
POST/api/auth/registerNoRegister new user
POST/api/auth/loginNoLogin with credentials (+ optional TOTP)
POST/api/auth/logoutYesLogout and invalidate session
GET/api/auth/meYesGet current user info
POST/api/auth/passkey/registerYesRegister WebAuthn passkey
POST/api/auth/passkey/authenticateNoAuthenticate with passkey
POST/api/auth/totp/setupYesSetup TOTP 2FA
POST/api/auth/totp/enableYesEnable TOTP after verification
POST/api/auth/totp/disableYesDisable TOTP 2FA
POST/api/auth/totp/verifyYesVerify TOTP code
POST/api/auth/linkYesRedeem channel link code

All agent endpoints require authentication.

MethodEndpointDescription
GET/api/agentsList all agents
POST/api/agentsSpawn new agent
GET/api/agents/:idGet agent details
DELETE/api/agents/:idStop and remove agent
POST/api/agents/:id/messageSend message to agent
POST/api/agents/:id/pausePause agent
POST/api/agents/:id/resumeResume paused agent
GET/api/agents/:id/eventsGet agent events (cursor-based: ?after=<seq>)

The events endpoint supports cursor-based polling:

GET /api/agents/:id/events?after=<seq>

Events are stored in a ring buffer (max 200 events per agent) with sequential IDs. Pass the last seen event ID as the after parameter to receive only new events.

MethodEndpointDescription
GET/api/sessionsList sessions
GET/api/sessions/:idGet session details
GET/api/sessions/:id/messagesGet session messages
MethodEndpointDescription
GET/api/modelsList all models
POST/api/modelsRegister new model
GET/api/models/:nameGet model details
PATCH/api/models/:nameUpdate model config
DELETE/api/models/:nameDelete model
POST/api/models/:id/defaultSet as default model
GET/api/models/routingGet topic routing
GET/api/models/healthCheck provider health
GET/api/models/cli/statusCLI tool availability
GET/api/models/cli/quotaCLI quota status
GET/api/models/providers/ollama/modelsList available Ollama models
GET/api/models/providers/litellm/modelsList LiteLLM models
GET/api/models/providers/:provider/knownKnown models for a provider
POST/api/models/testTest model connectivity before registration
MethodEndpointDescription
GET/api/hooksList all hooks
POST/api/hooksCreate hook
GET/api/hooks/:idGet hook details
PUT/api/hooks/:idUpdate hook
DELETE/api/hooks/:idDelete hook
POST/api/hooks/:id/enableEnable hook
POST/api/hooks/:id/disableDisable hook
MethodEndpointDescription
GET/api/vaultList credentials
POST/api/vaultStore credential
PATCH/api/vault/:idUpdate credential
DELETE/api/vault/:idDelete credential
POST/api/vault/:id/rotateRotate credential
MethodEndpointDescription
GET/api/pipelinesList user’s pipeline runs
GET/api/pipelines/:idGet pipeline detail with stages
POST/api/pipelines/:id/stopStop a running pipeline
GET/api/pipelines/templatesList pipeline templates
POST/api/pipelines/templatesCreate pipeline template
PUT/api/pipelines/templates/:idUpdate pipeline template
DELETE/api/pipelines/templates/:idDelete pipeline template
MethodEndpointDescription
GET/api/notificationsList notifications (paginated)
POST/api/notifications/:id/readMark notification as read
POST/api/notifications/read-allMark all notifications read
MethodEndpointDescription
POST/api/voice/transcribeTranscribe audio (base64) to text
MethodEndpointDescription
GET/api/skillsList registered skills
GET/api/skills/:idGet skill details
GET/api/skills/tools/allAll tools (skills + MCP combined)
GET/api/skills/permissionsUser permission overrides
PUT/api/skills/permissionsSet permission level
DELETE/api/skills/permissions/:skillId/:actionReset permission
POST/api/skills/:skillId/tools/:toolName/executeExecute a skill tool (MCP bridge)
MethodEndpointDescription
POST/api/chatSend a chat message
POST/api/chat/approveRespond to an approval request
MethodEndpointDescription
POST/api/documents/uploadUpload files (multipart)
GET/api/documentsList documents with filters
GET/api/documents/:idGet document details with OCR text
MethodEndpointDescription
GET/api/knowledgeBrowse entries with filters
GET/api/knowledge/statsGet stats (counts by source type)
GET/api/knowledge/:idGet full entry content
POST/api/knowledge/searchSearch with query, mode, filters
DELETE/api/knowledge/:idDelete entry
POST/api/knowledge/indexIndex a file or directory
MethodEndpointDescription
POST/api/reader/readRead and extract content from URL
GET/api/reader/tasksList reader tasks
GET/api/reader/tasks/:idGet task results
MethodEndpointDescription
POST/api/research/startStart a research job
GET/api/research/jobsList research jobs
GET/api/research/jobs/:idGet job status and results
POST/api/research/jobs/:id/cancelCancel a research job
MethodEndpointDescription
GET/api/tasksList user tasks
POST/api/tasksCreate a task
PATCH/api/tasks/:idUpdate task
DELETE/api/tasks/:idDelete task
POST/api/tasks/:id/completeMark task complete
GET/api/recurring-tasksList recurring tasks
POST/api/recurring-tasksCreate recurring task
PATCH/api/recurring-tasks/:idUpdate recurring task
DELETE/api/recurring-tasks/:idDelete recurring task
MethodEndpointDescription
GET/api/email/messagesGet email messages (read-only)
POST/api/email/sendSend email (requires permission)
POST/api/email/processTrigger email processing
MethodEndpointDescription
GET/api/capabilitiesList all capabilities
GET/api/capabilities/hardwareGet hardware info and fit analysis
POST/api/capabilities/installInstall a capability (e.g., model)
MethodEndpointDescription
GET/api/expertsList all experts (system + custom)
GET/api/experts/:idGet expert details
POST/api/expertsCreate custom expert
PATCH/api/experts/:idUpdate expert
DELETE/api/experts/:idDelete expert
MethodEndpointDescription
GET/api/orgsList user’s organizations
POST/api/orgsCreate organization
GET/api/orgs/:idGet organization details
PUT/api/orgs/:id/ssoConfigure SSO/SAML settings
GET/api/saml/metadataGet SAML metadata for federation
POST/api/saml/acsSAML assertion consumer endpoint
GET/api/scim/v2/usersSCIM user provisioning endpoint
POST/api/scim/v2/usersSCIM user creation
MethodEndpointDescription
GET/api/admin/auditAudit log entries
GET/api/admin/usersList all users (admin only)
POST/api/admin/users/:id/impersonateImpersonate user (admin only)
POST/api/admin/users/:id/inviteInvite user
PATCH/api/admin/users/:idUpdate user role/permissions
MethodEndpointDescription
GET/api/webhooksList outgoing webhooks
POST/api/webhooksCreate webhook
PATCH/api/webhooks/:idUpdate webhook
DELETE/api/webhooks/:idDelete webhook
POST/api/hooks/incoming/:hookIdReceive inbound webhook (public, auth via secret)
POST/api/teams-webhookTeams/Microsoft Teams webhook handler
POST/api/whatsapp-webhookWhatsApp webhook handler

Connect to /ws?token=<jwt> for real-time events.

EventDescription
subscribeSubscribe to event channels
unsubscribeUnsubscribe from event channels
messageSend a chat message
agent.statusAgent status changes
agent.messageAgent responses
agent.tool_callTool execution events
const ws = new WebSocket(`ws://localhost:3005/ws?token=${jwtToken}`);
ws.onopen = () => {
ws.send(JSON.stringify({
type: 'subscribe',
channels: ['agent.status', 'agent.message']
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Received:', data);
};