Skip to content

SDK, HTTP and CLI conventions ​

This page covers how to connect to OpenViking and the conventions shared across all API endpoints.

Connection Modes ​

OpenViking clients connect to an OpenViking Server over HTTP.

ModeUse CaseDescription
HTTPConnect to OpenViking ServerConnects to a remote server via HTTP API
CLIShell scripting, agent tool-useConnects to server via CLI commands

Client-Server Mode ​

Client-Server mode connects to an OpenViking server via HTTP API, supporting multi-tenancy, remote access, and other features. See the deployment documentation for how to start the OpenViking server.

Python SDK Client ​

Install the standalone SDK in the Python environment that runs your code:

bash
python -m pip install --upgrade openviking-sdk
python
from openviking_sdk import SyncHTTPClient

client = SyncHTTPClient(
    url="http://localhost:1933",
    api_key="your-key",
    timeout=120.0,
)
client.initialize()

Go SDK Client ​

The Go SDK is an HTTP-only client for Client-Server mode. It is published from the main repository as the sdk/go module.

bash
go get github.com/volcengine/OpenViking/sdk/go
go
client, err := openviking.NewClient(openviking.Config{
    BaseURL: "http://localhost:1933",
    APIKey:  "your-key",
})
if err != nil {
    return err
}
defer client.CloseIdleConnections()

The Go SDK sends the same identity headers as the Python HTTP client:

Config fieldHTTP header
APIKeyX-API-Key
AccountX-OpenViking-Account
UserX-OpenViking-User
ActorPeerIDX-OpenViking-Actor-Peer

For normal api_key deployments, APIKey is enough because the server derives tenant identity from the key. Set Account and User only for trusted deployments or gateways that explicitly forward tenant identity.

It does not implement legacy agent_id compatibility. See sdk/go/README.md for package-level examples.

JavaScript/TypeScript SDK Client ​

The JavaScript/TypeScript SDK is an HTTP-only client for Node.js 18+. It ships ESM, CommonJS and TypeScript declarations.

bash
npm install @openviking/sdk
ts
import { OpenVikingClient } from "@openviking/sdk";

const client = new OpenVikingClient({
  baseUrl: "http://localhost:1933",
  apiKey: "your-key",
});

const results = await client.search("deployment guide", {
  targetUri: "viking://resources",
});

It uses the same identity headers and response envelope as the Python and Go HTTP clients. See sdk/typescript/README.md for package-level examples.

The Python HTTP client reads connection information from ovcli.conf; explicit constructor values override the corresponding settings. ovcli.conf is a configuration file shared between the HTTP client and CLI. Default path: ~/.openviking/ovcli.conf. You can also specify the path via environment variable:

bash
export OPENVIKING_CLI_CONFIG_FILE=/path/to/ovcli.conf

Configuration file example using a user/admin key:

json
{
  "url": "http://localhost:1933",
  "api_key": "your-user-or-admin-key"
}

Configuration field description:

FieldDescriptionDefault
urlServer address(required)
api_keyAPI Keynull (no auth)
accountAccount header; used in trusted and dev modes, ignored in api_key modenull
userUser header; used in trusted and dev modes, ignored in api_key modenull
timeoutHTTP request timeout in seconds60.0
outputDefault output format: "table" or "json""table"

See the Configuration Guide for details.

Using Python SDK Client Without Configuration File ​

SyncHTTPClient and AsyncHTTPClient work without an ovcli.conf file. Install the standalone SDK in the Python environment that runs your code:

bash
python -m pip install --upgrade openviking-sdk
python
import openviking_sdk as ov

client = ov.SyncHTTPClient(
    url="http://localhost:1933",
    api_key="your-key",
    timeout=30.0,
    extra_headers={},
)
client.initialize()

The SDK still reads an existing ovcli.conf when you pass explicit parameters. Explicit values override the corresponding settings; other settings may come from environment variables or the file. Invalid configuration can therefore fail client construction. The default timeout is 60 seconds. See client configuration for the file location.

HTTP Call Examples ​

  • CLI, SyncHTTPClient, and AsyncHTTPClient automatically upload local files or directories before calling the server API.
  • Python HTTP clients can opt into shared temporary uploads through ovcli.conf (upload.mode = "shared"). The Rust ov CLI does not read that field; set OPENVIKING_UPLOAD_MODE=shared for ov instead.
  • Raw HTTP calls don't get this convenience layer. When using curl or other HTTP clients, you need to first call POST /api/v1/resources/temp_upload, then pass the returned temp_file_id to the target API.
  • temp_upload defaults to upload_mode=local. Use upload_mode=shared only when you explicitly want distributed shared temporary uploads.
  • For raw HTTP imports of local directories, you need to first zip them into a .zip file and upload using the above method; the server does not accept direct host directory paths.
  • POST /api/v1/resources can directly accept remote URLs, but does not accept host local paths like ./doc.md or /tmp/doc.md.

Direct HTTP (curl) call example:

bash
curl http://localhost:1933/api/v1/fs/ls?uri=viking:// \
  -H "X-API-Key: your-key"

CLI Mode ​

The OpenViking CLI command is ov (installed with npm install -g @openviking/cli). It connects to an OpenViking server and provides shell commands for common operations. The CLI also reads connection information from ovcli.conf (shared with the HTTP client).

Basic usage:

bash
ov [global options] <command> [arguments] [command options]

Global options (must be placed before the command name):

OptionDescription
--output, -oOutput format: table (default), json
--versionShow CLI version

Example:

bash
ov -o json ls viking://resources/

Lifecycle ​

Client-Server Mode ​

python
import openviking_sdk as ov

client = ov.SyncHTTPClient(url="http://localhost:1933")
client.initialize()

# ... use client ...

client.close()

The CLI is called directly via the command line, requiring the ovcli.conf file to be configured first, with no additional client initialization needed:

ov -o json ls viking://resources/

Authentication ​

See the Authentication Guide for full details.

  • Authorization Bearer header: Authorization: Bearer your-key (recommended)
  • X-API-Key header: X-API-Key: your-key
  • Authentication is skipped only in dev mode, which is selected automatically when server.root_api_key is unset and auth_mode is not set. Other modes (api_key, trusted, OIDC, LDAP) resolve identity according to their configuration.
  • The /health and /ready endpoints never require authentication.

Response Format ​

Regular JSON API responses use the following envelope. File downloads, SSE, Metrics, and WebDAV use the formats documented for those endpoints:

Success Response ​

json
{
  "status": "ok",
  "result": { ... }
}

The top-level status describes whether the HTTP API request succeeded. Some successful operations return domain-level status fields inside result, such as "status": "success", "status": "accepted", or task states. Those fields are not API transport errors.

Error Response ​

json
{
  "status": "error",
  "error": {
    "code": "NOT_FOUND",
    "message": "Resource not found: viking://resources/nonexistent/"
  }
}

HTTP errors always use the top-level error envelope. Synchronous processing failures, such as resource parsing or synchronous reindex failures, are returned as non-2xx responses with status="error" and an error object. Clients should not look for result.status="error" to detect request failure.

Request validation failures, including malformed JSON, missing required fields, and invalid parameter values, return HTTP 400 with error.code="INVALID_ARGUMENT". The response never uses FastAPI's raw {"detail": ...} error format; when field-level validation information is available, it is exposed under error.details.validation_errors.

Python HTTP SDKs (SyncHTTPClient and AsyncHTTPClient) raise the corresponding OpenVikingError subclass for this envelope. For example, PROCESSING_ERROR is raised as ProcessingError.

CLI Output Format ​

Table Mode (Default) ​

List data is rendered as tables; non-list data falls back to formatted JSON:

bash
ov ls viking://resources/
# name          size  mode  isDir  uri
# .abstract.md  100   420   False  viking://resources/.abstract.md

JSON Mode (--output json) ​

By default, -o json uses compact output with an {ok, result} wrapper:

bash
ov -o json ls viking://resources/
# {"ok":true,"result":[{"name":"...","size":100,...},...]}

Use --compact=false to return the unwrapped result as formatted JSON:

bash
ov -o json --compact=false ls viking://resources/

The default output format can be set in ovcli.conf:

json
{
  "url": "http://localhost:1933",
  "output": "json"
}

Compact Mode (--compact, -c, enabled by default) ​

  • When --output=json: Compact JSON format + {ok, result} wrapper, suitable for scripts
  • When --output=table: Simplified representation for table output (e.g., removing empty columns)

JSON output - success:

json
{"ok": true, "result": ...}

JSON output - error:

json
{"ok": false, "error": {"code": "NOT_FOUND", "message": "Resource not found", "details": {}}}

Special Cases ​

  • In table mode, read, abstract, and overview print text directly. mkdir, rm, and mv print a confirmation message.
  • In JSON mode, these commands use the JSON output format described above.

Exit Codes ​

Note: Exit codes are return codes from the CLI (command line tool), not HTTP API status codes.

CodeMeaningTrigger
0SuccessCommand completed successfully
1Runtime errorCommand execution failed, including API or connection errors
2Arguments or configuration errorInvalid command-line arguments, configuration loading failed, missing required credentials, or --sudo used with an unsupported command

The current Rust CLI reports connection failures with exit code 1; it does not use a separate connection-error exit code 3.

Error Codes ​

CodeHTTP StatusDescription
OK200Success
INVALID_ARGUMENT400Invalid parameter
INVALID_URI400Invalid Viking URI format
NOT_FOUND404Resource not found
ALREADY_EXISTS409Resource already exists
UNAUTHENTICATED401Missing or invalid API key
PERMISSION_DENIED403Insufficient permissions
RESOURCE_EXHAUSTED429Rate limit exceeded
FAILED_PRECONDITION412Precondition failed
CONFLICT409Operation conflicts with an in-progress task or existing state
DEADLINE_EXCEEDED504Operation timed out
UNAVAILABLE503Service unavailable
PROCESSING_ERROR500Resource or semantic processing failed
INTERNAL500Internal server error
UNIMPLEMENTED501Feature not implemented
EMBEDDING_FAILED500Embedding generation failed
VLM_FAILED500VLM call failed
SESSION_EXPIRED410Session no longer exists
NOT_INITIALIZED-Service or component not initialized (need to call initialize() first)

File/directory type misuse, copying or removing a directory without recursive=true, and a definitively nonexistent HTTP source hostname return INVALID_ARGUMENT (400). Path-lock contention, including encrypted writes, returns CONFLICT (409); corrupt lock tokens, lock I/O failures, and stored-data decryption failures return INTERNAL (500). An unavailable HTTP source or temporary network failure returns UNAVAILABLE (503), while a fetch timeout returns DEADLINE_EXCEEDED (504).


API Endpoints ​

This catalog follows the routes actually mounted by the server. Each group heading links to its detailed reference. Detail pages show an HTTP, Python SDK, TypeScript SDK, Go SDK, or CLI tab only when that surface is genuinely available; a raw HTTP workaround is not presented as an SDK.

System Status ​

MethodPathDescription
GET/healthBasic health check (no authentication)
GET/readyAGFS, VectorDB, API key manager, and embedding readiness (no authentication)
GET/api/v1/system/statusSystem status
POST/api/v1/system/waitWait for background processing
POST/api/v1/system/consistencyCheck filesystem and vector-index consistency

Resources and Filesystem ​

MethodPathDescription
POST/api/v1/resources/temp_uploadUpload a temporary file for a later import
POST/api/v1/resourcesAdd a resource from a URL or temporary upload
GET/api/v1/fs/lsList a directory
GET/api/v1/fs/treeGet a directory tree
GET/api/v1/fs/statGet resource status
GET/api/v1/fs/attrsGet logical extended attributes
POST/api/v1/fs/attrs/set_tagsSet retrieval tags (compatibility alias)
POST/api/v1/fs/mkdirCreate a directory
DELETE/api/v1/fsDelete a resource
POST/api/v1/fs/cpCopy a file or directory together with its vector records
POST/api/v1/fs/mvMove or rename a resource

ACL ​

MethodPathDescription
GET/api/v1/aclGet direct, inherited, and effective ACLs
PUT/api/v1/aclReplace a resource's direct ACL
DELETE/api/v1/aclClear a resource's direct ACL
POST/api/v1/acl/grantSet one principal's direct level
POST/api/v1/acl/revokeRemove one principal's direct grant

Content ​

MethodPathDescription
GET/api/v1/content/readRead full content (L2)
GET/api/v1/content/abstractRead an abstract (L0)
GET/api/v1/content/overviewRead an overview (L1)
GET/api/v1/content/downloadDownload original file bytes
POST/api/v1/content/writeWrite content and refresh semantic indexes
POST/api/v1/content/batch-writeWrite multiple files and refresh their indexes
POST/api/v1/content/set_tagsSet retrieval tags
POST/api/v1/content/reindexRebuild semantic or vector indexes

Skills ​

MethodPathDescription
GET/api/v1/skillsList skills
POST/api/v1/skillsAdd a skill
POST/api/v1/skills/findSearch skills
POST/api/v1/skills/validateValidate skill data
GET/api/v1/skills/{skill_name}Get a skill
PUT/api/v1/skills/{skill_name}Update a skill
DELETE/api/v1/skills/{skill_name}Delete a skill

Sessions, Memory, and Agent Evolution ​

MethodPathDescription
POST/api/v1/sessionsCreate a session
GET/api/v1/sessionsList sessions
GET/api/v1/sessions/{session_id}Get a session
PATCH/api/v1/sessions/{session_id}/configUpdate mutable session configuration
GET/api/v1/sessions/{session_id}/tool-resultsList tool results
GET/api/v1/sessions/{session_id}/tool-results/{tool_result_id}Read a tool result
GET/api/v1/sessions/{session_id}/tool-results/{tool_result_id}/searchSearch within a tool result
GET/api/v1/sessions/{session_id}/contextGet assembled context
GET/api/v1/sessions/{session_id}/archives/{archive_id}Get a session archive
DELETE/api/v1/sessions/{session_id}Delete a session
POST/api/v1/sessions/{session_id}/commitArchive a session and extract memory
POST/api/v1/sessions/{session_id}/messagesAdd one message
POST/api/v1/sessions/{session_id}/messages/batchAdd messages in a batch
POST/api/v1/search/recallDeprecated: thin preset over the search endpoint with mode="context"
GET/api/v1/agent-evolution/experiences/trajectoriesList trajectories that consumed an Experience
GET/api/v1/agent-evolution/experiences/outcomesAggregate outcomes of trajectories that consumed an Experience

Retrieval ​

MethodPathDescription
POST/api/v1/search/findSemantic search
POST/api/v1/search/searchContext-aware search; mode="context" returns assembled, injection-ready context
POST/api/v1/search/grepContent pattern search
POST/api/v1/search/globFile pattern matching

Watches, Snapshots, and OVPack ​

MethodPathDescription
GET/api/v1/watchesList watches or query by to_uri
GET/api/v1/watches/{task_id}Get a watch by task ID
PATCH/api/v1/watchesUpdate a watch by to_uri
PATCH/api/v1/watches/{task_id}Update a watch by task ID
DELETE/api/v1/watchesDelete a watch by to_uri
DELETE/api/v1/watches/{task_id}Delete a watch by task ID
POST/api/v1/watches/triggerTrigger a watch by to_uri
POST/api/v1/watches/{task_id}/triggerTrigger a watch by task ID
POST/api/v1/snapshot/commitCreate a snapshot
GET/api/v1/snapshot/logRead snapshot history
GET/api/v1/snapshot/versionsList versions of a Compile output file
POST/api/v1/snapshot/restoreRestore a historical snapshot
GET/api/v1/snapshot/showInspect a snapshot or one of its files
GET/api/v1/snapshot/diffCompare snapshots
GET/api/v1/snapshot/diff-pathsPage changed source files
GET/api/v1/snapshot/ignoreRead snapshot ignore rules
PUT/api/v1/snapshot/ignoreReplace snapshot ignore rules
DELETE/api/v1/snapshot/ignoreClear snapshot ignore rules
POST/api/v1/pack/exportExport an .ovpack
POST/api/v1/pack/importImport an .ovpack
POST/api/v1/pack/backupBack up public scopes
POST/api/v1/pack/restoreRestore a backup package

Background Tasks, Runtime Observer, and Metrics ​

MethodPathDescription
POST/api/v1/compileCreate an OV-owned Compile task
GET/api/v1/compile/capabilitiesCheck Compile availability
GET/api/v1/compile/submissions/{key}Find a task by submission key
GET/api/v1/tasks/{task_id}Get a background task
POST/api/v1/tasks/{task_id}/cancelCancel a background task
GET/api/v1/tasksList background tasks
GET/api/v1/observer/queueQueue status
GET/api/v1/observer/vikingdbVikingDB status
GET/api/v1/observer/modelsModel status
GET/api/v1/observer/lockLock status
GET/api/v1/observer/retrievalRetrieval status
GET/api/v1/observer/filesystemFilesystem status
GET/api/v1/observer/systemAggregate runtime status
GET/metricsPrometheus metrics

Administration and Privacy Configuration ​

MethodPathDescription
GET/api/v1/admin/configurationGet explicit Cluster runtime configuration
PATCH/api/v1/admin/configurationUpdate Cluster runtime configuration
POST/api/v1/admin/configuration/test-modelTest a draft model or embedding connection without saving it
POST/api/v1/admin/restartRequest a graceful restart of a supported server process (ROOT only)
GET/api/v1/admin/accounts/{account_id}/configurationGet explicit Account runtime configuration
PATCH/api/v1/admin/accounts/{account_id}/configurationUpdate Account runtime configuration
GET/api/v1/admin/agent-evolutionGet Agent Evolution status (deprecated)
PUT/api/v1/admin/agent-evolutionUpdate Agent Evolution status (deprecated)
GET/api/v1/admin/accounts/{account_id}/settingsGet legacy account settings (deprecated)
PATCH/api/v1/admin/accounts/{account_id}/settingsUpdate legacy account settings (deprecated)
GET/api/v1/admin/accounts/{account_id}/memory-templatesList editable memory templates, defaults and effective values
GET/api/v1/admin/accounts/{account_id}/memory-templates/{memory_type}Read one memory template
PUT/api/v1/admin/accounts/{account_id}/memory-templates/{memory_type}Complete and publish one memory template
DELETE/api/v1/admin/accounts/{account_id}/memory-templates/{memory_type}Remove a memory template override and restore deployment defaults
POST/api/v1/admin/accountsCreate an account and its first administrator
GET/api/v1/admin/accountsList accounts
POST/api/v1/admin/migrateMigrate legacy identity data
GET/api/v1/admin/accounts/{account_id}Get credential-free metadata for one account
DELETE/api/v1/admin/accounts/{account_id}Delete an account
POST/api/v1/admin/accounts/{account_id}/usersRegister a user
GET/api/v1/admin/accounts/{account_id}/usersList users
GET/api/v1/admin/accounts/{account_id}/users/{user_id}Get one user's credential-free membership info (user_id, role)
GET/api/v1/admin/accounts/{account_id}/users/{user_id}/settingsGet a user's memory policy
PATCH/api/v1/admin/accounts/{account_id}/users/{user_id}/settingsUpdate a user's memory policy
DELETE/api/v1/admin/accounts/{account_id}/users/{user_id}Remove a user
PUT/api/v1/admin/accounts/{account_id}/users/{user_id}/rolePromote a user to ADMIN
POST/api/v1/admin/accounts/{account_id}/users/{user_id}/keyRegenerate a user key
POST/api/v1/admin/accounts/{account_id}/groupsCreate a group
GET/api/v1/admin/accounts/{account_id}/groupsList groups
DELETE/api/v1/admin/accounts/{account_id}/groups/{group_id}Delete a group
GET/api/v1/admin/accounts/{account_id}/groups/{group_id}/membersList group members
PUT/api/v1/admin/accounts/{account_id}/groups/{group_id}/members/{user_id}Add a group member
DELETE/api/v1/admin/accounts/{account_id}/groups/{group_id}/members/{user_id}Remove a group member
GET/api/v1/privacy-configsList privacy configuration categories
GET/api/v1/privacy-configs/treeList current targets and field metadata as a tree without values
POST/api/v1/privacy-configs/scanScan or repair registered values in content
GET/api/v1/privacy-configs/{category}List category targets
GET/api/v1/privacy-configs/{category}/{target_key}Get the active configuration
GET/api/v1/privacy-configs/{category}/{target_key}/fieldsList safe active-field metadata without values
GET/api/v1/privacy-configs/{category}/{target_key}/fieldGet a field reference or explicitly reveal its value
POST/api/v1/privacy-configs/resolveExplicitly reveal a field by reference or URI
GET/api/v1/privacy-configs/{category}/{target_key}/versionsList configuration versions
GET/api/v1/privacy-configs/{category}/{target_key}/versions/{version}Get one version
POST/api/v1/privacy-configs/{category}/{target_key}Write and activate a new version
PATCH/api/v1/privacy-configs/{category}/{target_key}Atomically merge fields; create if missing
POST/api/v1/privacy-configs/{category}/{target_key}/activateActivate a version
DELETE/api/v1/privacy-configs/{category}/{target_key}Delete a target and every version
DELETE/api/v1/privacy-configs/{category}/{target_key}/fieldRemove the active field
DELETE/api/v1/privacy-configs/selectorDelete a target or field by URI/reference

OpenViking Gateway Management ​

When the gateway runs inside the server, use the server's port; when it runs standalone, use the gateway's own port. The OpenViking API key decides which account the caller can reach. If the deployer set a gateway management key, changing upstreams and context profiles also requires it. Every user can issue gateway keys for themselves. The access matrix and error reasons are in the Gateway Management API.

MethodPathDescription
GET/gateway/admin/accessRead the caller's permissions and deployment warnings
GET/gateway/admin/guidesRead the gateway address clients use
GET/gateway/admin/toolsList the OpenViking tools available to the caller
GET/gateway/admin/upstreams/{identifier}Read one upstream
GET/gateway/admin/policies/{identifier}Read one context profile
GET/gateway/admin/keys/{identifier}Read one gateway key (without the secret)
GET/gateway/admin/overviewRead the usage overview within the caller's scope
GET/gateway/admin/logsRead the request logs the caller can see
GET/gateway/admin/upstreamsList the account's upstreams
PUT / DELETE/gateway/admin/upstreams/{identifier}Create/replace or delete an upstream
POST/gateway/admin/upstreams/{identifier}/testTest an upstream connection or model
POST/gateway/admin/upstreams/import-vlmImport the server's VLM settings as upstreams (embedded only)
GET/gateway/admin/policiesList the account's context profiles
PUT / DELETE/gateway/admin/policies/{identifier}Create/replace or delete a context profile
GET / POST/gateway/admin/keysList the gateway keys the caller can see, or issue a new one
DELETE/gateway/admin/keys/{identifier}Revoke a gateway key
POST/gateway/admin/keys/{identifier}/capture/resetStart saving a conversation again
DELETE/gateway/admin/users/{user_id}/dataAdmin or root: delete a user's gateway data
DELETE/gateway/admin/account/dataRoot: delete an account's gateway data

OpenViking Assets, WebDAV, Agent Runtime API, and VikingBot API ​

MethodPathDescription
POST/api/v1/openviking-assets/resolveParse and validate a Catalog and Manifest, returning a normalized asset plan
POST/api/v1/openviking-assets/preflightRead-only access check for a Git repository and ref
OPTIONS/webdav/resources, /webdav/resources/{resource_path}Query WebDAV capabilities
PROPFIND/webdav/resources, /webdav/resources/{resource_path}Query resource properties
GET / HEAD/webdav/resources, /webdav/resources/{resource_path}Read a file or directory
PUT/webdav/resources, /webdav/resources/{resource_path}Write a UTF-8 text file
DELETE/webdav/resources, /webdav/resources/{resource_path}Delete a file or directory
MKCOL/webdav/resources, /webdav/resources/{resource_path}Create a directory
MOVE/webdav/resources, /webdav/resources/{resource_path}Move or rename a resource
POST/api/v1/compileCreate an asynchronous Compile task
GET/api/v1/compile/configRead target settings
POST/api/v1/compile/config/updateUpdate target settings
GET/api/v1/compile/configsList visible targets
GET/api/v1/compile/operationsList target operations
GET/api/v1/compile/operations/{operation_id}/outputsList operation outputs and version references
POST/api/v1/compile/embeddingsEmbed transient Compile routing texts
GET/api/v1/compile/capabilitiesCheck Compile availability
GET/api/v1/compile/submissions/{key}Find a task by submission key
GET/bot/v1/healthVikingBot health check
POST/bot/v1/chatNon-streaming VikingBot chat
POST/bot/v1/chat/streamStreaming VikingBot chat
POST/bot/v1/feedbackSubmit feedback for a VikingBot answer
POST/bot/v1/sessions/{session_id}/interruptInterrupt an active or queued VikingBot session
POST/bot/v1/sessions/{session_id}/steerSend additional input to an active streaming session
POST/bot/v1/compileRetired; returns migration guidance for the new endpoint
GET/bot/v1/compile/{task_id}Retired; returns Task API migration guidance
POST/bot/v1/compile/{task_id}/cancelRetired; returns Task cancellation API migration guidance

Find an API by Task ​

Choose a reference page by operation type:

GroupWhat to look for
Core DataResources, content, filesystem, skills, sessions, and memory
RetrievalSemantic retrieval and code retrieval
Data LifecycleWatches, snapshots, and OVPack
Operations & ObservabilitySystem, tasks, Observer, and Metrics
Identity & GovernanceAdministration, ACL, and privacy configuration
Protocols & ExtensionsOpenViking Assets, WebDAV, Agent Runtime API, and VikingBot API

Open source under the AGPL-3.0 License. Font licenses