API Reference
The DjinnBot API server runs at http://localhost:8000 and provides a REST API for all operations. All endpoints are prefixed with /v1/.
When authentication is enabled (
AUTH_ENABLED=true), most endpoints require a valid JWT access token or API key in the Authorization: Bearer <token> header. The ENGINE_INTERNAL_TOKEN is also accepted as a service-level API key.Status
GET /v1/statusReturns server health, Redis connection status, and summary statistics.
Pipelines
GET /v1/pipelines # List all pipeline definitions
GET /v1/pipelines/{id} # Get a specific pipelineRuns
GET /v1/runs # List runs (?pipeline_id= filter)
GET /v1/runs/{id} # Get run details
POST /v1/runs # Create a new run
POST /v1/runs/{id}/cancel # Cancel a running pipeline
POST /v1/runs/{id}/restart # Restart a failed runCreate Run Request
{
"pipeline_id": "engineering",
"task_description": "Build a REST API for a todo app",
"human_context": "Optional additional guidance",
"project_name": "my-project"
}Steps
GET /v1/steps/{run_id} # List steps for a run
GET /v1/steps/{run_id}/{step_id} # Get step details
GET /v1/steps/{run_id}/{step_id}/output # Get step outputAgents
GET /v1/agents # List all agents
GET /v1/agents/{id} # Get agent details
GET /v1/agents/{id}/runs # Get agent run history
PUT /v1/agents/{id}/config # Update agent configurationAgent Tools
GET /v1/agent-tools/{agent_id} # List tool overrides
PUT /v1/agent-tools/{agent_id}/{tool} # Set tool override (enable/disable)
DELETE /v1/agent-tools/{agent_id}/{tool} # Remove tool overrideChat
POST /v1/chat/sessions # Create a chat session
GET /v1/chat/sessions # List active sessions
GET /v1/chat/sessions/{id} # Get session details
POST /v1/chat/sessions/{id}/message # Send a message
DELETE /v1/chat/sessions/{id} # End a sessionAttachments
POST /v1/attachments/upload # Upload a file attachment
GET /v1/attachments/{id} # Get attachment metadata
GET /v1/attachments/{id}/content # Download attachment contentProjects
GET /v1/projects # List projects
POST /v1/projects # Create a project
GET /v1/projects/{id} # Get project details
PUT /v1/projects/{id} # Update a project
GET /v1/projects/{id}/tasks # List tasks
POST /v1/projects/{id}/tasks # Create a task
PUT /v1/projects/{id}/tasks/{tid} # Update a task
POST /v1/projects/{id}/tasks/{tid}/claim # Claim a task
POST /v1/projects/{id}/tasks/{tid}/transition # Move task
PUT /v1/projects/{id}/vision # Set project visionMemory
GET /v1/memory/vaults # List all vaults
GET /v1/memory/vaults/{agent_id} # Get vault contents
GET /v1/memory/search # Search memories
?agent_id=eric&query=architecture&limit=5
GET /v1/memory/shared # Search shared knowledgeMemory Scores
GET /v1/memory-scores/{agent_id} # Get memory scores
PUT /v1/memory-scores/{agent_id}/{entry} # Update memory score
GET /v1/memory-scores/settings # Get scoring settings
PUT /v1/memory-scores/settings # Update scoring settingsSkills
GET /v1/skills # List all skills
GET /v1/skills/{name} # Get skill content
POST /v1/skills # Create a skill
PUT /v1/skills/{name} # Update a skill
DELETE /v1/skills/{name} # Delete a skill
PATCH /v1/skills/{name}/enabled # Toggle enabled stateMCP
GET /v1/mcp # List MCP servers
GET /v1/mcp/{id} # Get server details
POST /v1/mcp # Register a new server
PUT /v1/mcp/{id} # Update server config
DELETE /v1/mcp/{id} # Remove a server
GET /v1/mcp/config.json # Get merged config
PATCH /v1/mcp/{id}/status # Update server status
PATCH /v1/mcp/{id}/tools # Update discovered tools
GET /v1/mcp/logs # Stream MCP proxy logsSettings
GET /v1/settings # Get all settings
PUT /v1/settings # Update settings
GET /v1/settings/providers # List LLM providers
PUT /v1/settings/providers/{id} # Update provider config
GET /v1/settings/providers/keys/all # Get all provider API keysSecrets
GET /v1/secrets # List secrets (names only)
POST /v1/secrets # Store a secret
DELETE /v1/secrets/{name} # Delete a secret
POST /v1/secrets/{id}/grant/{agent_id} # Grant to agent
DELETE /v1/secrets/{id}/grant/{agent_id} # Revoke from agent
GET /v1/secrets/agents/{agent_id} # List agent's secrets (masked)
GET /v1/secrets/agents/{agent_id}/env # Get plaintext (engine only)Pulse Routines
GET /v1/pulse-routines/{agent_id} # List routines
POST /v1/pulse-routines/{agent_id} # Create routine
PUT /v1/pulse-routines/{agent_id}/{id} # Update routine
DELETE /v1/pulse-routines/{agent_id}/{id} # Delete routineSwarm Execution
POST /v1/swarm/execute # Launch a swarm
GET /v1/swarm/{id} # Get swarm status
GET /v1/swarm/{id}/tasks # List swarm tasks
POST /v1/swarm/{id}/cancel # Cancel a swarmSpawn Executor
POST /v1/spawn-executor/execute # Spawn a one-off agent execution
GET /v1/spawn-executor/{id} # Get execution statusLLM Call Logs
GET /v1/llm-calls # List LLM calls (filterable)
?agent_id=&run_id=&provider=&limit=50
GET /v1/llm-calls/summary # Aggregate usage summary
GET /v1/llm-calls/{id} # Get call detailsUser Usage
GET /v1/usage # Personal usage summary
GET /v1/usage/history # Usage history over timeUsers
GET /v1/users # List users (admin)
POST /v1/users # Create a user (admin)
GET /v1/users/{id} # Get user details
PUT /v1/users/{id} # Update a user
DELETE /v1/users/{id} # Delete a userUser Providers
GET /v1/settings/user-providers # List personal provider keys
PUT /v1/settings/user-providers/{provider} # Set personal API key
DELETE /v1/settings/user-providers/{provider} # Remove personal keyAdmin
GET /v1/admin/api-usage # API usage analytics
GET /v1/admin/notifications # System notifications
POST /v1/admin/notifications/{id}/dismiss # Dismiss notification
GET /v1/admin/containers # List containers
GET /v1/admin/containers/{id}/logs # Stream container logs
POST /v1/admin/pull-image # Pull a Docker image
GET /v1/admin/users # User managementBrowser Cookies
GET /v1/browser/cookies # List cookie sets
POST /v1/browser/cookies # Upload cookie file
GET /v1/browser/cookies/{cookie_set_id} # Get cookie set
DELETE /v1/browser/cookies/{cookie_set_id} # Delete cookie set
GET /v1/browser/cookies/agents/{agent_id} # List grants for agent
POST /v1/browser/cookies/agents/{agent_id}/{id}/grant # Grant access
DELETE /v1/browser/cookies/agents/{agent_id}/{id} # Revoke accessCode Knowledge Graph
GET /v1/projects/{id}/knowledge-graph/status # Index status
POST /v1/projects/{id}/knowledge-graph/index # Trigger indexing
GET /v1/projects/{id}/knowledge-graph/index/{job_id} # Job progress
GET /v1/projects/{id}/knowledge-graph/graph-data # Full graph data
GET /v1/projects/{id}/knowledge-graph/communities # Community list
GET /v1/projects/{id}/knowledge-graph/processes # Process list
POST /v1/projects/{id}/knowledge-graph/query # Search graph
GET /v1/projects/{id}/knowledge-graph/context/{symbol} # Symbol context
POST /v1/projects/{id}/knowledge-graph/impact # Impact analysis
GET /v1/projects/{id}/knowledge-graph/changes # Map git changes
POST /v1/projects/{id}/knowledge-graph/cypher # Raw Cypher queryDocuments
GET /v1/documents # List ingested documents
GET /v1/documents/{id}/toc # Get table of contents
GET /v1/documents/{id}/section # Read a specific section
GET /v1/documents/search # Search across document chunksWorkflow Policies
GET /v1/projects/{id}/workflow-policy # Get policy
PUT /v1/projects/{id}/workflow-policy # Update policy
POST /v1/projects/{id}/tasks/{tid}/resolve-workflow # Resolve workflow for taskRun History (Internal)
GET /v1/internal/run-history # Query execution history
?project_id=&task_id=&agent_id=&status=&since=&limit=Used by agents via the get_run_history tool to query their own execution history.
Ingest
POST /v1/ingest/transcript # Submit a meeting transcript for Grace
POST /v1/ingest/document # Submit a document for processingWaitlist
POST /v1/waitlist # Join the waitlist
GET /v1/waitlist # List waitlist entries (admin)Voice & TTS
GET /v1/tts/voices # List Fish Audio voices
GET /v1/tts/voices/{voice_id} # Get voice details
GET /v1/tts/voicebox/profiles # List Voicebox voice profiles
GET /v1/tts/voicebox/health # Check Voicebox connectivity
POST /v1/internal/tts/synthesize # Generate speech (internal, called by engine)
GET /v1/tts-calls # Query TTS call logs
GET /v1/agents/{id}/tts-settings # Get agent TTS settings
PUT /v1/agents/{id}/tts-settings # Update agent TTS settings
GET /v1/admin/tts-settings # Get global TTS settings (admin)
PUT /v1/admin/tts-settings # Update global TTS settings (admin)OIDC Providers
GET /v1/auth/oidc # List configured OIDC providers
POST /v1/auth/oidc # Create an OIDC provider
PUT /v1/auth/oidc/{id} # Update an OIDC provider
DELETE /v1/auth/oidc/{id} # Delete an OIDC provider
GET /v1/auth/oidc/{slug}/authorize # Start OIDC login flow
POST /v1/auth/oidc/{slug}/callback # OIDC callback handlerOnboarding
POST /v1/onboarding/sessions # Create an onboarding session
GET /v1/onboarding/sessions/{id} # Get onboarding session
POST /v1/onboarding/sessions/{id}/message # Send message to onboarding agentEvents (SSE)
GET /v1/events/stream # Server-Sent Events stream
?run_id=run_123 # Filter to a specific runReturns real-time events including:
run_created,run_complete,run_failedstep_queued,step_started,step_complete,step_failedagent_output(streaming text chunks)agent_thinking(reasoning blocks)tool_call_start,tool_call_endswarm_task_started,swarm_task_completellm_call(per-API-call token and cost data)activity(live activity feed events)
Auth
POST /v1/auth/login # Email/password login
POST /v1/auth/login/2fa # 2FA verification
POST /v1/auth/refresh # Refresh access token
POST /v1/auth/logout # Logout (invalidate refresh)
POST /v1/auth/setup # Initial admin account creation
GET /v1/auth/me # Current user info
POST /v1/auth/2fa/enable # Enable 2FA
POST /v1/auth/2fa/verify # Verify 2FA setup
POST /v1/auth/2fa/disable # Disable 2FA
POST /v1/auth/api-keys # Create API key
GET /v1/auth/api-keys # List API keys
DELETE /v1/auth/api-keys/{id} # Revoke API keyGitHub
POST /v1/github/webhooks # Receive GitHub webhooks
GET /v1/github/repos # List accessible repos
GET /v1/github/app/status # GitHub App connection statusLifecycle
GET /v1/lifecycle/timeline # Agent activity timeline
GET /v1/lifecycle/sessions # Active sessionsUpdates
GET /v1/updates/check # Check for DjinnBot updates
GET /v1/updates/version # Current version info