Open Markdown text in a new tab

HTTP API reference

SoAI provides OpenAI-compatible and Anthropic-compatible inference endpoints alongside the authenticated APIs that power the WebUI. The inventory below lists the HTTP operations available in the current SoAI release.

Use the SoAI WebUI for routine administration. The management routes exist for integrations and automation, but they use the same access controls as their WebUI controls and can change with the product. For browser-facing tasks, start with the linked guide rather than calling a WebUI route directly.

Manage personal memory

The authenticated /api/v1/webui/users/me/memory/entries library returns stable entry IDs, opaque entry revisions, profile_form, and profile_revision. Relationships include both endpoint IDs and names. The original GET /api/v1/webui/users/me/memory snapshot retains its existing response shape.

Create a note with POST /entries under the memory route, supplying an opaque id that fits one URL path segment, name, and content. Creation does not overwrite an existing ID or title. Edit an entry with PATCH /entries/{entry_id}, an expected_revision, and an optional name or observation. An observation contains id and content; a null observation ID adds a fact, while an existing ID edits that fact alone.

Entry, observation, and relationship deletion require expected_revision in the query string. Relationship updates preserve the relationship ID and require from_entity_id, to_entity_id, relation_type, and expected_revision. One endpoint must remain connected to the addressed entry. A changed revision returns a conflict; reload and review before submitting another mutation. A lost response is not proof that a request failed, so inspect the current saved state rather than automatically repeating creation or deletion.

Structured profile facts use PUT /api/v1/webui/users/me/memory/chat-profile. Include the library's profile_revision as expected_revision to reject stale updates. Omitted fields remain unchanged in revision-checked requests. Legacy requests without this precondition retain their unconditional update behavior and existing response shape. Facts and display-name defaults save together; removing a profile entry does not remove those display-name defaults.

Choose and secure API access

Surface Use it for Authentication
/v1/* OpenAI-compatible inference, files, stored completions, and Responses. API key when keys exist.
/v1/messages* Anthropic-compatible Messages requests and token counting. The same API-key policy as /v1/*.
/api/v1/* WebUI, administration, models, plugins, hardware, tasks, and integrations. Protected management routes use a WebUI session, CSRF protection for mutations, and route-specific permissions. Provider callbacks use provider verification.
/api/v1/system/ws WebUI real-time updates and interactive sessions. Authenticated WebSocket connection.

Authentication and runtime schema

Finish the first-run setup wizard before using the compatible APIs. After setup, /v1/* is open while the API-key store has no records. Creating the first key makes API-key authentication required; removing every key deliberately restores the open state. An administrator with API key management (OPENAI_API_ADMIN) permission selects the Settings button at the right of the header, then chooses Settings and OpenAI to manage keys. See Authentication and API keys for the exact WebUI controls, quotas, assignments, and security consequences.

Authorization: Bearer <OPENAI_API_KEY>

Anthropic-compatible clients may send the same value in x-api-key or as a bearer token. If both are sent, they must match. The browser uses its signed-in WebUI session; direct state-changing calls to protected /api/v1/* routes also need the CSRF protection expected by that surface.

POST /api/v1/webui/skills/import-batch and GET /api/v1/webui/skills/import-batches/{upload_id} require MCP usage (MCP_USE). The WebUI uses these routes for all skill uploads. Library contents and conversation selections remain private to their owning account.

Fetch the live OpenAPI document from /api/v1/openapi.json or /v1/openapi.json. Both paths return the same schema and use the compatible API access policy. The document describes request parameters and response shapes more precisely than this route list.

Inference and management surfaces

The OpenAI-compatible surface uses ordinary REST responses. Where an endpoint supports stream=true, it emits OpenAI Server-Sent Events with data: {...} frames followed by data: [DONE]. Do not send WebSocket envelopes on those streams.

The Anthropic-compatible Messages surface requires anthropic-version: 2023-06-01. Its streaming response uses Anthropic named Server-Sent Events. It accepts the Messages and token-counting requests listed below; Claude Code explains its WebUI model setup and client configuration.

Responses is a full lifecycle surface rather than a create-only endpoint, with creation, retrieval, cancellation, deletion, input-item retrieval, input-token counting, and compaction. Read OpenAI-compatible Responses API before using stored or background responses.

Provider errors and retry guidance

A model that cannot satisfy a request's required capability returns HTTP 422 with error.type set to invalid_request_error and error.param set to model. For embeddings, select a model that supports embeddings. A virtual model remains usable when an eligible member supports the request; a request whose capability combination matches no single member is rejected with that explanation.

An unknown model ID returns HTTP 400 with error.code set to model_not_found and error.param set to model. Install or register the requested model, or choose an ID from /v1/models. A failed download does not make its intended model available to the API.

Provider failures use the standard error response object. When the provider identifies a rejected parameter, error.param names it; the safe error message includes available recovery guidance and a sanitized provider explanation. Authentication failures return HTTP 401, while permission failures return HTTP 403 with permission_error. Billing failures remain distinct from temporary rate limits.

A valid provider cooldown is returned in Retry-After when the HTTP response has not started. SoAI honors that minimum during eligible retries, including delays longer than 30 seconds. A retry that would consume the remaining recovery budget is declined. Once streaming has started, a terminal error uses the existing stream format; the HTTP status and headers cannot change. Partial output remains available and is not replayed automatically.

Model capability overrides

Managing capabilities requires MODEL_ADMIN permission. The /api/v1/models/{universal_id}/capabilities/openai route retains these operations:

Method Effect
PATCH Updates one capability's disabled override using category, token, and enabled. Setting enabled to true removes its disabled override.
PUT Replaces the enabled and disabled overrides atomically. Send the complete overrides object and the last observed expected snapshot; a stale snapshot returns HTTP 409 without overwriting the newer change.
DELETE Removes the saved capability overrides.

The model collection includes a read-only openai_base_profile derived from model and plugin evidence before saved overrides and dependency suppression. It supplies the base capability values for Auto.

Conversation titles

Creating a conversation with POST /api/v1/webui/conversations preserves its supplied title by default. Set the optional boolean title_auto_update_allowed to true to allow first-message and automatic title updates. Saving a title with PATCH /api/v1/webui/conversations/{conv_id}/title disables automatic replacement, even when the saved text is unchanged. Conversation metadata responses and title update events include the committed title, permission, and last_modified_at_ms together. Clones preserve the source permission; imported conversations and existing saved conversations keep their names. Clients receiving older payloads should preserve known permission when the optional field is absent.

Conversation input queue

A steer sent to /api/v1/webui/conversations/{conv_id}/input-queue returns HTTP 409 when no running turn can accept it. Set fallback_to_prompt to true to have SoAI queue it as an ordinary prompt instead; the response's input_type shows which one was stored. The field is optional and only valid for steers.

WebUI-first management guides

Task Use this guide
Application updates and recovery preparation Updating SoAI
Backups, downloaded archives, and restoration Backup and Restore
Core configuration fields, defaults, and validation Configuration
Files, uploads, previews, transfers, and batch work File explorer
Model downloads, registration, providers, and catalog state Models catalog
Monitoring, hardware controls, metrics, and logs Monitoring and observability
Plugin installation, providers, cloning, and runtime state Install and manage plugins
Running work, cancellation requests, and user notifications Tasks and notifications
Skill imports, supporting files, and conversation selections Skills
Scheduled agent work, recurrence, limits, and run history Automations
Telegram, Discord, and WhatsApp accounts Connect messaging apps to SoAI
Users, access policy, collaboration settings, and sessions Administration overview and Users, roles, and sessions

Skill library and conversation selection

The authenticated WebUI skill routes manage a human account's private skill library and the saved selection of an ordinary conversation. They do not enable personal skills for external inference calls. Import takes a multipart file and an upload_id; reuse that ID only for the same bytes when recovering an uncertain result, and query its receipt before retrying. Selection updates supply expected_revision and skill_ids. A stale revision returns 409 with the current selection so the client can review the conflict instead of overwriting it.

Transport and network boundaries

/api/v1/system/ws is the WebUI WebSocket endpoint. It carries subscribed real-time resources and interactive sessions; it is not a general replacement for OpenAI streaming, MCP streamable HTTP, or the REST API. See Monitoring and observability for the freshness and reconnect behavior users see in the WebUI.

SoAI also has a separate port-discovery listener. It binds the first available port from 7950 through 7960; GET / on that listener reports the main API port and scheme. That endpoint does not belong to the main FastAPI schema below.

Reverse proxies and private access

Keep SoAI on the private network boundary defined in Security hardening. A reverse proxy does not make public internet exposure a recommended deployment. If a proxy serves private clients, it must preserve WebSocket upgrades for /api/v1/system/ws and must not buffer compatible API streams. If the proxy passes forwarded headers, configure SERVER.HTTP.PROXY.ENABLE_HEADERS and restrict SERVER.HTTP.PROXY.TRUSTED_NETWORKS to the proxy networks. Continue with Network and TLS and the Hardening checklist.

Complete HTTP inventory

This table covers every OpenAPI operation in the current Core route composition, including authenticated WebUI APIs. It intentionally excludes the separate port-discovery listener and the WebSocket endpoint because neither is an OpenAPI HTTP operation.

Actions and control

Method Endpoint Operation
POST /api/v1/actions/discover-models Discover models
POST /api/v1/actions/plugins/check-for-updates Check for backend updates
POST /api/v1/actions/plugins/update-all-backends Update all plugin backends
POST /api/v1/actions/plugins/{plugin_name}/check-for-updates Check backend update
POST /api/v1/actions/plugins/{plugin_name}/disable Disable plugin
POST /api/v1/actions/plugins/{plugin_name}/enable Enable plugin
POST /api/v1/actions/plugins/{plugin_name}/stop Stop plugin
POST /api/v1/actions/processes/{pid}/kill Kill process
POST /api/v1/actions/software/check-for-updates Check for software updates
POST /api/v1/actions/stop-all-plugins Stop all plugins

Anthropic API surface

Method Endpoint Operation
POST /v1/messages Messages
POST /v1/messages/count_tokens Count tokens

Automations

Method Endpoint Operation
GET /api/v1/automations List automations
POST /api/v1/automations Create automation
GET /api/v1/automations/mcp/tools List automation MCP tools
GET /api/v1/automations/occurrences Get automation occurrences
POST /api/v1/automations/occurrences/delete Delete automation occurrences
GET /api/v1/automations/runs List automation runs
GET /api/v1/automations/runs/active List active automation runs
GET /api/v1/automations/runs/{run_id} Get automation run
GET /api/v1/automations/schedule-preview Preview schedule
DELETE /api/v1/automations/{automation_id} Delete automation
GET /api/v1/automations/{automation_id} Get automation
PATCH /api/v1/automations/{automation_id} Update automation
POST /api/v1/automations/{automation_id}/run-now Run automation now

Backup management

Method Endpoint Operation
GET /api/v1/backups List backups
POST /api/v1/backups Create backup
DELETE /api/v1/backups/{backup_id} Delete backup
GET /api/v1/backups/{backup_id}/export Export backup
POST /api/v1/backups/{backup_id}/restore Restore backup
POST /api/v1/backups/{backup_id}/verify Verify backup

Configuration management

Method Endpoint Operation
GET /api/v1/configs List all configs
GET /api/v1/configs/{config_name} Get specific config
PATCH /api/v1/configs/{config_name} Patch specific config

Dynamic routing

Method Endpoint Operation
GET /api/v1/routing/config Get routing config
GET /api/v1/routing/virtual-models List virtual models
POST /api/v1/routing/virtual-models Create virtual model
DELETE /api/v1/routing/virtual-models/{name} Virtual model delete
GET /api/v1/routing/virtual-models/{name} Virtual model get
PATCH /api/v1/routing/virtual-models/{name} Virtual model update
PATCH /api/v1/routing/virtual-models/{name}/enabled Virtual model set enabled

File explorer

Method Endpoint Operation
POST /api/v1/file-explorer/batch-copy Batch copy entries
POST /api/v1/file-explorer/batch-copy-task Start batch copy task
POST /api/v1/file-explorer/batch-delete Batch delete entries
POST /api/v1/file-explorer/batch-delete-task Start batch delete task
POST /api/v1/file-explorer/batch-metadata Get metadata batch
POST /api/v1/file-explorer/batch-move Batch move entries
POST /api/v1/file-explorer/batch-move-task Start batch move task
POST /api/v1/file-explorer/copy Copy entry
DELETE /api/v1/file-explorer/delete Delete entry
GET /api/v1/file-explorer/download Download file
POST /api/v1/file-explorer/download-selection Download selection
POST /api/v1/file-explorer/hash Start hash task
GET /api/v1/file-explorer/list List directory
POST /api/v1/file-explorer/listings Start listing
DELETE /api/v1/file-explorer/listings/{listing_id} Release listing
GET /api/v1/file-explorer/listings/{listing_id} Get listing page
GET /api/v1/file-explorer/listings/{listing_id}/locate Locate listing entry
GET /api/v1/file-explorer/metadata Get metadata
POST /api/v1/file-explorer/mkdir Create directory
POST /api/v1/file-explorer/move Move entry
GET /api/v1/file-explorer/preview Preview file
GET /api/v1/file-explorer/read Read text file
GET /api/v1/file-explorer/search Search directory
POST /api/v1/file-explorer/upload Upload file
POST /api/v1/file-explorer/upload-batch Upload batch
PUT /api/v1/file-explorer/write Write text file

Hardware management

Method Endpoint Operation
GET /api/v1/hardware/capabilities Get system capabilities
GET /api/v1/hardware/export Export hardware history CSV
GET /api/v1/hardware/gpu/capabilities Get GPU capabilities
POST /api/v1/hardware/gpu/settings Set GPU settings
GET /api/v1/hardware/gpu/slots List GPU slots API
DELETE /api/v1/hardware/gpu/slots/{slot} Clear GPU slot API
POST /api/v1/hardware/gpu/slots/{slot}/apply Apply GPU slot API
PATCH /api/v1/hardware/gpu/slots/{slot}/boot Toggle GPU slot boot API
POST /api/v1/hardware/gpu/slots/{slot}/preview Preview GPU slot API
POST /api/v1/hardware/gpu/slots/{slot}/store Store GPU slot API
GET /api/v1/hardware/gpu/soaibench/history/export Export SoAI Bench history CSV API
GET /api/v1/hardware/gpu/soaibench/runs List SoAI Bench history API
POST /api/v1/hardware/gpu/soaibench/runs Start SoAI Bench run API
DELETE /api/v1/hardware/gpu/soaibench/runs/{run_id} Delete SoAI Bench local run API
GET /api/v1/hardware/gpu/soaibench/runs/{run_id} Get SoAI Bench run API
POST /api/v1/hardware/gpu/soaibench/runs/{run_id}/publication Publish SoAI Bench run API
GET /api/v1/hardware/gpu/soaibench/runs/{run_id}/publication/preview Preview SoAI Bench publication API
POST /api/v1/hardware/gpu/soaibench/runs/{run_id}/stop Stop SoAI Bench run API
GET /api/v1/hardware/history Get hardware history
GET /api/v1/hardware/processes List processes
GET /api/v1/hardware/snapshot Get hardware snapshot

Messaging and platforms

Method Endpoint Operation
POST /api/v1/messaging/telegram/webhook Telegram webhook
GET /api/v1/messaging/whatsapp/webhook WhatsApp webhook verify
POST /api/v1/messaging/whatsapp/webhook WhatsApp webhook

Metrics monitoring

Method Endpoint Operation
GET /api/v1/metrics Get system metrics
GET /api/v1/metrics/capabilities Get metrics capabilities
GET /api/v1/metrics/export Export metrics history CSV
GET /api/v1/metrics/history Get metrics history

Model Context Protocol

Method Endpoint Operation
GET /api/v1/mcp/client/interactions List MCP client interactions
POST /api/v1/mcp/client/interactions/{task_id}/resolve Resolve MCP client interaction
GET /api/v1/mcp/client/roots Get MCP client roots
PUT /api/v1/mcp/client/roots Update MCP client roots
GET /api/v1/mcp/connections List MCP connections
GET /api/v1/mcp/oauth/callback MCP OAuth callback
GET /api/v1/mcp/oauth/client-metadata.json MCP OAuth client metadata
GET /api/v1/mcp/prompts List MCP prompts
GET /api/v1/mcp/resources MCP resources list
GET /api/v1/mcp/search-api-keys List MCP search API keys
DELETE /api/v1/mcp/search-api-keys/{provider} Delete MCP search API key
PUT /api/v1/mcp/search-api-keys/{provider} Set MCP search API key
GET /api/v1/mcp/servers List MCP servers
POST /api/v1/mcp/servers Add MCP server
DELETE /api/v1/mcp/servers/{server_id} Remove MCP server
PATCH /api/v1/mcp/servers/{server_id} Update MCP server
POST /api/v1/mcp/servers/{server_id}/connect Connect MCP server
POST /api/v1/mcp/servers/{server_id}/disconnect Disconnect MCP server
POST /api/v1/mcp/servers/{server_id}/oauth/clear Clear MCP OAuth
POST /api/v1/mcp/servers/{server_id}/oauth/start Start MCP OAuth
GET /api/v1/mcp/servers/{server_id}/oauth/status Get MCP OAuth status
GET /api/v1/mcp/status Get MCP status
GET /api/v1/mcp/tools List MCP tools
DELETE /mcp MCP server streamable HTTP delete
GET /mcp MCP server streamable HTTP stream
POST /mcp MCP server streamable HTTP endpoint
GET /mcp/whoami MCP whoami

Model management

Method Endpoint Operation
GET /api/v1/models List models
POST /api/v1/models/download Download model
GET /api/v1/models/manual-install Get model manual install path
DELETE /api/v1/models/{universal_id} Delete model
GET /api/v1/models/{universal_id} Get model details
DELETE /api/v1/models/{universal_id}/alias Model delete alias
PATCH /api/v1/models/{universal_id}/alias Model update alias
DELETE /api/v1/models/{universal_id}/capabilities/openai Model reset OpenAI capabilities
PATCH /api/v1/models/{universal_id}/capabilities/openai Model update OpenAI capabilities
PUT /api/v1/models/{universal_id}/capabilities/openai Model replace OpenAI capabilities
PATCH /api/v1/models/{universal_id}/enabled Model set enabled
DELETE /api/v1/models/{universal_id}/parameters Model delete parameters
GET /api/v1/models/{universal_id}/parameters Get model parameters
PATCH /api/v1/models/{universal_id}/parameters Model update parameters

OpenAI API surface

Method Endpoint Operation
POST /v1/audio/speech Handle text to speech
POST /v1/audio/transcriptions Handle audio transcription
POST /v1/audio/translations Handle audio translation
GET /v1/chat/completions List chat completions
POST /v1/chat/completions Handle chat completions
DELETE /v1/chat/completions/{completion_id} Delete chat completion
GET /v1/chat/completions/{completion_id} Get chat completion
POST /v1/chat/completions/{completion_id} Update chat completion
GET /v1/chat/completions/{completion_id}/messages Get chat completion messages
POST /v1/completions Handle completions
POST /v1/embeddings Handle embeddings
POST /v1/images/edits Handle image edit
POST /v1/images/generations Handle image generation
POST /v1/images/variations Handle image variation
GET /v1/models List models OpenAI
DELETE /v1/models/{model} Delete model OpenAI
GET /v1/models/{model} Get model details OpenAI
POST /v1/responses Handle responses
POST /v1/responses/compact Responses compact
POST /v1/responses/input_tokens Responses input tokens
DELETE /v1/responses/{response_id} Delete response
GET /v1/responses/{response_id} Get response
POST /v1/responses/{response_id}/cancel Cancel response
GET /v1/responses/{response_id}/input_items Get response input items

OpenAI files

Method Endpoint Operation
GET /v1/files List files
POST /v1/files Upload file
DELETE /v1/files/{file_id} Delete file
GET /v1/files/{file_id} Retrieve file
GET /v1/files/{file_id}/content Retrieve file content

Plugin and provider management

Method Endpoint Operation
GET /api/v1/plugins Get plugin list
GET /api/v1/plugins/capabilities-manifest Get plugin capabilities manifest
POST /api/v1/plugins/download Download plugin
GET /api/v1/plugins/manual-install Get plugin manual install path
POST /api/v1/plugins/upload Upload plugin
DELETE /api/v1/plugins/{plugin_name} Delete plugin
PUT /api/v1/plugins/{plugin_name}/backend-variant-selection Save backend variant selection
GET /api/v1/plugins/{plugin_name}/backend-variants Get backend variants
POST /api/v1/plugins/{plugin_name}/clone Clone plugin
POST /api/v1/plugins/{plugin_name}/install-backend Install backend
GET /api/v1/plugins/{plugin_name}/logo/{archive_sha256}.png Get plugin logo
HEAD /api/v1/plugins/{plugin_name}/logo/{archive_sha256}.png Get plugin logo
GET /api/v1/plugins/{plugin_name}/model-search Search remote models for plugin
GET /api/v1/plugins/{plugin_name}/models/{model_id}/variants Get model variants for plugin
POST /api/v1/plugins/{plugin_name}/override-incompatibility Override incompatibility
GET /api/v1/plugins/{plugin_name}/providers Provider list for plugin
POST /api/v1/plugins/{plugin_name}/providers Create provider for plugin
DELETE /api/v1/plugins/{plugin_name}/providers/{provider_id} Provider delete external
PATCH /api/v1/plugins/{plugin_name}/providers/{provider_id} Provider update external
POST /api/v1/plugins/{plugin_name}/remove-backend Remove backend
POST /api/v1/plugins/{plugin_name}/update-backend Update backend

Search

Method Endpoint Operation
GET /api/v1/search Global search

Software management

Method Endpoint Operation
GET /api/v1/software/update-diagnostics/{task_id} Get update diagnostics
GET /api/v1/software/update-preparation Get update preparation
POST /api/v1/software/update-soai Update SoAI software

System and monitoring

Method Endpoint Operation
DELETE /api/v1/system/access-control/policy Clear access control policy
GET /api/v1/system/access-control/policy Get access control policy
PUT /api/v1/system/access-control/policy Update access control policy
POST /api/v1/system/admin/configuration/reset Configuration reset system
POST /api/v1/system/admin/factory-reset Factory reset system
GET /api/v1/system/connect-pairing System connect pairing
GET /api/v1/system/database/operations/{operation_id} Get database operation status
POST /api/v1/system/hardware/history/reset Reset hardware history
GET /api/v1/system/health System health check
GET /api/v1/system/info System info
PUT /api/v1/system/instance-name Update instance name
GET /api/v1/system/license System license
GET /api/v1/system/limits Get system limits
GET /api/v1/system/logs/sources Get log sources
GET /api/v1/system/logs/{source_name} Get logs snapshot
POST /api/v1/system/metrics/reset Reset all metrics
GET /api/v1/system/plugins/{plugin_name}/check-circuit-breaker Check plugin circuit breaker
POST /api/v1/system/plugins/{plugin_name}/reset-circuit-breaker Reset plugin circuit breaker
POST /api/v1/system/power/hibernate Hibernate host system
GET /api/v1/system/power/operations/active Get active power operation
GET /api/v1/system/power/operations/{operation_id} Get power operation
POST /api/v1/system/power/operations/{operation_id}/cancel Cancel power operation
POST /api/v1/system/power/reboot Reboot host system
POST /api/v1/system/power/restart-application Restart SoAI application
POST /api/v1/system/power/shutdown Shutdown host system
POST /api/v1/system/power/shutdown-application Shutdown SoAI application
POST /api/v1/system/power/suspend Suspend host system
GET /api/v1/system/requirements System requirements
GET /api/v1/system/security Get system security
GET /api/v1/system/security/hardening Get security hardening audit
GET /api/v1/system/states Get state definitions
GET /api/v1/system/status Get system status
GET /api/v1/system/status/main Get SoAI main status

Task management

Method Endpoint Operation
GET /api/v1/tasks List tasks
GET /api/v1/tasks/active List active tasks
POST /api/v1/tasks/cancel-all Cancel all tasks
GET /api/v1/tasks/cancellations Get cancellation registry snapshot
POST /api/v1/tasks/cancellations/reset Reset cancellation registry
POST /api/v1/tasks/cancellations/sweep Sweep cancellation registry
POST /api/v1/tasks/software-update/log Log software update
GET /api/v1/tasks/{task_id} Get task
POST /api/v1/tasks/{task_id}/cancel Cancel task

WebUI and user management

Method Endpoint Operation
POST /api/v1/webui/auth/login Login
POST /api/v1/webui/auth/logout Logout
POST /api/v1/webui/auth/session-rotation/recover Recover session rotation
DELETE /api/v1/webui/chat/presets Reset chat presets
GET /api/v1/webui/chat/presets List chat presets
POST /api/v1/webui/chat/presets Create chat preset
DELETE /api/v1/webui/chat/presets/{preset_id} Delete chat preset
PATCH /api/v1/webui/chat/presets/{preset_id} Rename chat preset
PUT /api/v1/webui/chat/presets/{preset_id} Replace chat preset
DELETE /api/v1/webui/conversations Delete all conversations
GET /api/v1/webui/conversations List my conversations
POST /api/v1/webui/conversations Create new conversation
GET /api/v1/webui/conversations/archived List archived conversations
GET /api/v1/webui/conversations/archived/search Search archived conversations
POST /api/v1/webui/conversations/batch-delete Delete selected conversations
POST /api/v1/webui/conversations/export/pdf Start conversation PDF export
GET /api/v1/webui/conversations/export/pdf/{task_id}/download Download conversation PDF export
DELETE /api/v1/webui/conversations/{conv_id} Delete a conversation
GET /api/v1/webui/conversations/{conv_id} Get single conversation
POST /api/v1/webui/conversations/{conv_id}/absolute-paths/resolve Resolve absolute paths
POST /api/v1/webui/conversations/{conv_id}/agent/compact/regenerate Regenerate agent compaction
POST /api/v1/webui/conversations/{conv_id}/agent/compact/remove-boundary Remove agent compaction boundary
POST /api/v1/webui/conversations/{conv_id}/agent/compact/start Start agent compaction
PATCH /api/v1/webui/conversations/{conv_id}/agent/plan Patch agent plan
PATCH /api/v1/webui/conversations/{conv_id}/agent/todo Patch agent todo
POST /api/v1/webui/conversations/{conv_id}/agent/tools/shell/stop Stop shell tool call
POST /api/v1/webui/conversations/{conv_id}/agent/turns/{turn_id}/cancel Cancel agent turn
PATCH /api/v1/webui/conversations/{conv_id}/archived Patch conversation archived
GET /api/v1/webui/conversations/{conv_id}/assistant-turns/{assistant_turn_at_ms}/variants/{model_variant_index}/stream-state Get assistant turn variant stream state
POST /api/v1/webui/conversations/{conv_id}/attachments Stage attachment
DELETE /api/v1/webui/conversations/{conv_id}/attachments/{attachment_id} Delete attachment
GET /api/v1/webui/conversations/{conv_id}/attachments/{attachment_id} Get attachment
GET /api/v1/webui/conversations/{conv_id}/attachments/{attachment_id}/content Get attachment content
POST /api/v1/webui/conversations/{conv_id}/attention/rendered Acknowledge conversation attention rendered
POST /api/v1/webui/conversations/{conv_id}/clone Clone conversation
PATCH /api/v1/webui/conversations/{conv_id}/color Patch conversation color
POST /api/v1/webui/conversations/{conv_id}/comparison-turns/preflight Preflight comparison turn
DELETE /api/v1/webui/conversations/{conv_id}/draft Delete conversation draft
GET /api/v1/webui/conversations/{conv_id}/draft Get conversation draft
PUT /api/v1/webui/conversations/{conv_id}/draft Put conversation draft
POST /api/v1/webui/conversations/{conv_id}/export/json Export conversation JSON
PATCH /api/v1/webui/conversations/{conv_id}/favorite Patch conversation favorite
GET /api/v1/webui/conversations/{conv_id}/input-queue List input queue items
POST /api/v1/webui/conversations/{conv_id}/input-queue Enqueue input queue item
POST /api/v1/webui/conversations/{conv_id}/input-queue/resume Resume input queue
DELETE /api/v1/webui/conversations/{conv_id}/input-queue/{item_id} Delete input queue item
GET /api/v1/webui/conversations/{conv_id}/interactions/focus Resolve conversation interaction focus
GET /api/v1/webui/conversations/{conv_id}/interactions/pending List pending conversation interactions
GET /api/v1/webui/conversations/{conv_id}/interactions/{interaction_type}/pending Get pending conversation interaction
POST /api/v1/webui/conversations/{conv_id}/interactions/{interaction_type}/{task_id}/resolve Resolve conversation interaction
POST /api/v1/webui/conversations/{conv_id}/knowledge-attachments/claim Claim knowledge attachments
GET /api/v1/webui/conversations/{conv_id}/knowledge-attachments/draft List draft knowledge attachments
DELETE /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id} Remove draft knowledge attachment
GET /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id} Get knowledge attachment
POST /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id}/cancel Cancel knowledge attachment
GET /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id}/items List knowledge attachment items
POST /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id}/items/query Query knowledge attachment items
POST /api/v1/webui/conversations/{conv_id}/knowledge-attachments/{knowledge_attachment_id}/items/{item_id}/preview Preview knowledge attachment item
GET /api/v1/webui/conversations/{conv_id}/mcp/config Get MCP config
PATCH /api/v1/webui/conversations/{conv_id}/mcp/config Update MCP config
GET /api/v1/webui/conversations/{conv_id}/mcp/tools List MCP tools
POST /api/v1/webui/conversations/{conv_id}/messages Append conversation messages
PUT /api/v1/webui/conversations/{conv_id}/messages Update conversation messages
POST /api/v1/webui/conversations/{conv_id}/messages/delete Delete conversation message
POST /api/v1/webui/conversations/{conv_id}/messages/regenerate Regenerate conversation message
GET /api/v1/webui/conversations/{conv_id}/messages/regenerate/latest-status Get latest conversation regeneration status
GET /api/v1/webui/conversations/{conv_id}/messages/regenerate/status Get conversation regeneration status
POST /api/v1/webui/conversations/{conv_id}/messages/resubmit Resubmit conversation user message
GET /api/v1/webui/conversations/{conv_id}/messages/running-activity Get conversation running activity
GET /api/v1/webui/conversations/{conv_id}/messages/sync-cursor Get conversation message sync cursor
POST /api/v1/webui/conversations/{conv_id}/messages/truncate Truncate conversation messages
GET /api/v1/webui/conversations/{conv_id}/messages/window Get conversation message window
GET /api/v1/webui/conversations/{conv_id}/rag/config Get RAG config
PATCH /api/v1/webui/conversations/{conv_id}/rag/config Update RAG config
GET /api/v1/webui/conversations/{conv_id}/rag/documents List RAG documents
POST /api/v1/webui/conversations/{conv_id}/rag/documents Upload RAG document
POST /api/v1/webui/conversations/{conv_id}/rag/documents/batch Upload RAG documents batch
DELETE /api/v1/webui/conversations/{conv_id}/rag/documents/{doc_id} Delete RAG document
POST /api/v1/webui/conversations/{conv_id}/rag/ingest-file-explorer Ingest file explorer folder
POST /api/v1/webui/conversations/{conv_id}/rag/reindex Reindex RAG
POST /api/v1/webui/conversations/{conv_id}/rag/search Search RAG
POST /api/v1/webui/conversations/{conv_id}/search Execute web search
GET /api/v1/webui/conversations/{conv_id}/search/config Get web search config
PATCH /api/v1/webui/conversations/{conv_id}/search/config Update web search config
PATCH /api/v1/webui/conversations/{conv_id}/settings Update conversation model settings
GET /api/v1/webui/conversations/{conv_id}/skills Get selection
PUT /api/v1/webui/conversations/{conv_id}/skills Save selection
POST /api/v1/webui/conversations/{conv_id}/soai-links/resolve Resolve SoAI links
POST /api/v1/webui/conversations/{conv_id}/soai-paths/browse Browse SoAI path
GET /api/v1/webui/conversations/{conv_id}/soai-paths/content Get SoAI path content
POST /api/v1/webui/conversations/{conv_id}/soai-paths/download Download SoAI path
POST /api/v1/webui/conversations/{conv_id}/soai-paths/open Open SoAI path
POST /api/v1/webui/conversations/{conv_id}/soai-paths/preview Preview SoAI path
POST /api/v1/webui/conversations/{conv_id}/soai-paths/read Read SoAI path
POST /api/v1/webui/conversations/{conv_id}/soai-paths/token Token SoAI path
GET /api/v1/webui/conversations/{conv_id}/stream-status Get conversation stream status
POST /api/v1/webui/conversations/{conv_id}/stream/cancel Cancel conversation stream
PATCH /api/v1/webui/conversations/{conv_id}/title Update conversation metadata
GET /api/v1/webui/conversations/{conv_id}/workspace-path Get conversation workspace path config
PATCH /api/v1/webui/conversations/{conv_id}/workspace-path Patch conversation workspace path config
POST /api/v1/webui/conversations/{target_conv_id}/knowledge-attachments/use Use knowledge attachment items
POST /api/v1/webui/knowledge-attachments/reusable List reusable knowledge attachments
POST /api/v1/webui/licensing/activation Activate
POST /api/v1/webui/licensing/commercial-conversion Convert commercial
POST /api/v1/webui/licensing/deactivation Deactivate
PUT /api/v1/webui/licensing/declaration Change declaration
POST /api/v1/webui/licensing/deployment-reclassification Reclassify deployment
GET /api/v1/webui/licensing/governing-documents/{flow} Governing documents
POST /api/v1/webui/licensing/license/accept Accept current license
POST /api/v1/webui/licensing/offline-import Import offline
POST /api/v1/webui/licensing/offline-request Export offline
POST /api/v1/webui/licensing/operation-reconciliation Reconcile operation
POST /api/v1/webui/licensing/os-evaluation-conversion Convert OS evaluation
POST /api/v1/webui/licensing/os-evaluation-reversion Revert OS evaluation
GET /api/v1/webui/licensing/status Licensing status
POST /api/v1/webui/licensing/term-renewal Retrieve term
GET /api/v1/webui/mcp-access-tokens Handle list MCP access tokens
POST /api/v1/webui/mcp-access-tokens Handle create MCP access token
POST /api/v1/webui/mcp-access-tokens/{token_id}/revoke Handle revoke MCP access token
GET /api/v1/webui/mcp/tool-icons List WebUI tool icons
GET /api/v1/webui/messaging/accounts List messaging accounts
POST /api/v1/webui/messaging/accounts Create messaging account
DELETE /api/v1/webui/messaging/accounts/{account_id} Delete messaging account
GET /api/v1/webui/messaging/accounts/{account_id} Get messaging account
PUT /api/v1/webui/messaging/accounts/{account_id} Update messaging account
POST /api/v1/webui/messaging/accounts/{account_id}/lifecycle Set messaging account lifecycle
GET /api/v1/webui/messaging/mcp/tools List messaging MCP tools
DELETE /api/v1/webui/notifications Clear notifications
GET /api/v1/webui/notifications List notifications
POST /api/v1/webui/notifications/mark-read Mark notifications read
DELETE /api/v1/webui/notifications/{notification_id} Delete notification
POST /api/v1/webui/notifications/{notification_id}/open Open notification
GET /api/v1/webui/ocr/languages Get ocr languages
DELETE /api/v1/webui/openai-api-keys Handle delete all OpenAI API keys
GET /api/v1/webui/openai-api-keys Handle list OpenAI API keys
POST /api/v1/webui/openai-api-keys Handle create OpenAI API key
GET /api/v1/webui/openai-api-keys/quota/status Handle list OpenAI API key quota status
DELETE /api/v1/webui/openai-api-keys/{key_id} Handle delete OpenAI API key
DELETE /api/v1/webui/openai-api-keys/{key_id}/assignment Handle unassign user from key
PATCH /api/v1/webui/openai-api-keys/{key_id}/assignment Handle assign user to key
GET /api/v1/webui/openai-api-keys/{key_id}/quota Handle get OpenAI API key quota
PATCH /api/v1/webui/openai-api-keys/{key_id}/quota Handle update OpenAI API key quota
POST /api/v1/webui/openai-api-keys/{key_id}/revoke Handle revoke OpenAI API key
POST /api/v1/webui/openai-api-keys/{key_id}/rotate Handle rotate OpenAI API key
GET /api/v1/webui/previews/link_preview Link preview
GET /api/v1/webui/previews/page_screenshot Page screenshot
GET /api/v1/webui/previews/proxy Proxy media
GET /api/v1/webui/previews/text_preview Text preview
DELETE /api/v1/webui/prompt-history Clear prompt history
GET /api/v1/webui/prompt-history List prompt history
GET /api/v1/webui/prompts Handle list prompts
POST /api/v1/webui/prompts Handle create prompt
POST /api/v1/webui/prompts/batch-delete Batch delete prompts
DELETE /api/v1/webui/prompts/{prompt_id} Handle delete prompt
GET /api/v1/webui/prompts/{prompt_id} Handle get prompt
PATCH /api/v1/webui/prompts/{prompt_id} Handle update prompt
DELETE /api/v1/webui/sessions Revoke all sessions
GET /api/v1/webui/sessions List sessions
PATCH /api/v1/webui/sessions/current Rename current android session
DELETE /api/v1/webui/sessions/{jti} Revoke session
GET /api/v1/webui/skills List skills
POST /api/v1/webui/skills/import Upload skill
POST /api/v1/webui/skills/import-batch Upload skill batch
GET /api/v1/webui/skills/import-batches/{upload_id} Skill import batch receipt
GET /api/v1/webui/skills/imports/{upload_id} Skill import receipt
DELETE /api/v1/webui/skills/{skill_id} Remove skill
GET /api/v1/webui/skills/{skill_id} Skill details
GET /api/v1/webui/skills/{skill_id}/resources Skill resource
GET /api/v1/webui/software-update-notice Get update notice
POST /api/v1/webui/software-update-notice/{task_id}/acknowledge Acknowledge update notice
GET /api/v1/webui/terminal/policy Get terminal policy
GET /api/v1/webui/users List all users
POST /api/v1/webui/users Create new user
GET /api/v1/webui/users/me Read users me
GET /api/v1/webui/users/me/calendar/accounts List accounts
POST /api/v1/webui/users/me/calendar/accounts Create account
DELETE /api/v1/webui/users/me/calendar/accounts/{account_id} Delete account
PATCH /api/v1/webui/users/me/calendar/accounts/{account_id} Update account
POST /api/v1/webui/users/me/calendar/accounts/{account_id}/oauth/clear Clear OAuth
POST /api/v1/webui/users/me/calendar/accounts/{account_id}/oauth/start Start OAuth
GET /api/v1/webui/users/me/calendar/accounts/{account_id}/oauth/status Get OAuth status
POST /api/v1/webui/users/me/calendar/accounts/{account_id}/sync Sync account
POST /api/v1/webui/users/me/calendar/accounts/{account_id}/test Test account
GET /api/v1/webui/users/me/mail/accounts List accounts
POST /api/v1/webui/users/me/mail/accounts Create account
DELETE /api/v1/webui/users/me/mail/accounts/{account_id} Delete account
PATCH /api/v1/webui/users/me/mail/accounts/{account_id} Update account
POST /api/v1/webui/users/me/mail/accounts/{account_id}/oauth/clear Clear OAuth
POST /api/v1/webui/users/me/mail/accounts/{account_id}/oauth/start Start OAuth
GET /api/v1/webui/users/me/mail/accounts/{account_id}/oauth/status Get OAuth status
POST /api/v1/webui/users/me/mail/accounts/{account_id}/sync Sync account
POST /api/v1/webui/users/me/mail/accounts/{account_id}/test Test account
GET /api/v1/webui/users/me/memory Get my memory
PUT /api/v1/webui/users/me/memory/chat-profile Update my chat memory profile
GET /api/v1/webui/users/me/memory/entries Get my memory library
POST /api/v1/webui/users/me/memory/entries Create my memory entry
DELETE /api/v1/webui/users/me/memory/entries/{entry_id} Delete my memory entry
GET /api/v1/webui/users/me/memory/entries/{entry_id} Get my memory entry
PATCH /api/v1/webui/users/me/memory/entries/{entry_id} Update my memory entry
DELETE /api/v1/webui/users/me/memory/entries/{entry_id}/observations/{observation_id} Delete my memory observation
DELETE /api/v1/webui/users/me/memory/entries/{entry_id}/relations/{relation_id} Delete my memory relation
PATCH /api/v1/webui/users/me/memory/entries/{entry_id}/relations/{relation_id} Update my memory relation
PATCH /api/v1/webui/users/me/password Change current user password
POST /api/v1/webui/users/me/password-vault/reset Reset my password vault
GET /api/v1/webui/users/me/preferences Get my preferences
PATCH /api/v1/webui/users/me/preferences Update my preferences
POST /api/v1/webui/users/me/preferences/reset Reset my preferences
POST /api/v1/webui/users/me/tool-approval-permissions/reset Reset my tool approval permissions
PATCH /api/v1/webui/users/me/username Rename current username
POST /api/v1/webui/users/mutations/{operation_id}/status User mutation status
GET /api/v1/webui/users/workspace-browser/list List global file explorer root
POST /api/v1/webui/users/workspace-browser/locate Locate host directory
GET /api/v1/webui/users/workspace-browser/roots List host filesystem roots
GET /api/v1/webui/users/workspace-browser/search Search global file explorer root
DELETE /api/v1/webui/users/{user_id} Delete user by admin
PATCH /api/v1/webui/users/{user_id} Update user role by admin
PATCH /api/v1/webui/users/{user_id}/password Update user password by admin
PATCH /api/v1/webui/users/{user_id}/username Rename username by admin
PATCH /api/v1/webui/users/{user_id}/workspace-path Update user workspace path by admin
DELETE /api/v1/webui/wallpaper Delete wallpaper
GET /api/v1/webui/wallpaper Get wallpaper info
POST /api/v1/webui/wallpaper/download Download wallpaper
POST /api/v1/webui/wallpaper/upload Upload wallpaper
POST /api/v1/webui/wizard/complete Complete wizard
POST /api/v1/webui/wizard/license/accept Accept license
POST /api/v1/webui/wizard/licensing/activation Activate
POST /api/v1/webui/wizard/licensing/evaluation Start evaluation
GET /api/v1/webui/wizard/licensing/evaluation-terms Evaluation terms
GET /api/v1/webui/wizard/licensing/governing-documents/{flow} Governing documents
POST /api/v1/webui/wizard/licensing/offline-import Import offline certificate
POST /api/v1/webui/wizard/licensing/offline-request Export wizard offline request
POST /api/v1/webui/wizard/licensing/operation-reconciliation Reconcile operation
GET /api/v1/webui/wizard/licensing/personal-purchase-terms Personal purchase terms
GET /api/v1/webui/wizard/status Wizard status
PUT /api/v1/webui/wizard/use Set use

These additional HTTP operations are present only when SoAI OS is the launched edition. They are unavailable in a Core installation. Use the SoAI OS WebUI pages and runbooks for host changes; several operations are destructive or depend on host capabilities.

SoAI OS host management

Method Endpoint Operation
GET /api/v1/os/capabilities Get OS capabilities
GET /api/v1/os/drivers/dkms Get DKMS status
POST /api/v1/os/drivers/install Install driver
GET /api/v1/os/drivers/secure-boot Get secure boot
GET /api/v1/os/drivers/status Get drivers status
POST /api/v1/os/drivers/uninstall Uninstall driver
GET /api/v1/os/maintenance/logs Get system logs
POST /api/v1/os/maintenance/restart Schedule restart
GET /api/v1/os/maintenance/services/{name} Get service status
POST /api/v1/os/maintenance/services/{name} Control service
POST /api/v1/os/maintenance/shutdown Schedule shutdown
GET /api/v1/os/maintenance/status Get maintenance status
GET /api/v1/os/maintenance/time Get time sync status
GET /api/v1/os/network/connections List connections
DELETE /api/v1/os/network/connections/{connection_id} Delete connection
PUT /api/v1/os/network/connections/{connection_id} Modify connection
POST /api/v1/os/network/connections/{connection_id}/activate Activate connection
POST /api/v1/os/network/connections/{connection_id}/deactivate Deactivate connection
GET /api/v1/os/network/connections/{connection_id}/profile Get connection profile
GET /api/v1/os/network/devices List devices
POST /api/v1/os/network/safe-apply/{task_id}/commit Commit safe apply
POST /api/v1/os/network/safe-apply/{task_id}/rollback Rollback safe apply
GET /api/v1/os/network/status Get network status
POST /api/v1/os/ssh/disable Disable SSH
POST /api/v1/os/ssh/enable Enable SSH
POST /api/v1/os/ssh/safe-disable/{task_id}/commit Commit safe disable
POST /api/v1/os/ssh/safe-disable/{task_id}/rollback Rollback safe disable
GET /api/v1/os/ssh/status Get SSH status
GET /api/v1/os/status Get OS status
GET /api/v1/os/storage/devices List devices
GET /api/v1/os/storage/devices/{device} Get device
GET /api/v1/os/storage/devices/{device}/partitions List partitions
POST /api/v1/os/storage/format-recoveries/{request_id}/release Release format recovery
GET /api/v1/os/storage/fstab Get fstab entries
POST /api/v1/os/storage/fstab Add fstab entry
DELETE /api/v1/os/storage/fstab/{mount_point} Remove fstab entry
POST /api/v1/os/storage/partitions Create partition
POST /api/v1/os/storage/partitions/{partition}/format Format partition
POST /api/v1/os/storage/partitions/{partition}/mount Mount partition
POST /api/v1/os/storage/partitions/{partition}/unmount Unmount partition
GET /api/v1/os/storage/status Get storage status
GET /api/v1/os/updates/check Check updates
GET /api/v1/os/updates/history Get update history
POST /api/v1/os/updates/install Install updates
GET /api/v1/os/updates/packages List installed packages
GET /api/v1/os/updates/reboot-required Get reboot required
GET /api/v1/os/updates/status Get updates status
GET /api/v1/os/updates/upgradable-packages Get upgradable packages
POST /api/v1/os/users/lock Lock user
GET /api/v1/os/users/mapping Get user mapping
POST /api/v1/os/users/ssh-keys Sync SSH keys
GET /api/v1/os/users/status Get user sync status
POST /api/v1/os/users/sync Sync user

Related documentation