Files
OmniRoute/docs/reference/openapi.yaml
Diego Rodrigues de Sa e Souza c73d025632 feat(openapi): API endpoints content audit — 100% coverage, security tiers, i18n (#2701)
Integrated into release/v3.8.4
2026-05-26 00:28:03 -03:00

7098 lines
172 KiB
YAML

openapi: 3.1.0
info:
title: OmniRoute API
version: 3.8.4
description: |
OmniRoute is a local-first AI API proxy router. It provides an OpenAI-compatible
endpoint that routes requests to multiple AI providers with load balancing,
failover, and usage tracking.
## Base URLs
- **Local**: `http://localhost:20128`
## Authentication
All proxy endpoints require a Bearer token (API key managed via the dashboard).
Management endpoints are protected when `requireLogin` is enabled.
contact:
name: OmniRoute
license:
name: MIT
servers:
- url: http://localhost:20128
description: Local development
# Vendor extensions — OmniRoute security tier annotations (OpenAPI 3.x compatible)
x-tier-definitions:
loopback-only:
description: "Route is enforced as loopback-only (127.0.0.1, ::1) regardless of auth.
Cannot be authenticated remotely. Spawn-capable routes are classified here.
Reference: docs/security/ROUTE_GUARD_TIERS.md"
always-protected:
description: "Route requires authentication unconditionally, even when REQUIRE_API_KEY=false.
Destructive/irreversible operations are classified here.
Reference: docs/security/ROUTE_GUARD_TIERS.md"
internal:
description: "Internal route not part of the public API surface.
Hidden from /dashboard/api-endpoints by default."
tags:
- name: Chat
description: OpenAI-compatible chat completions
- name: Messages
description: Anthropic-compatible messages
- name: Responses
description: OpenAI Responses API
- name: Embeddings
description: Text embedding generation
- name: Images
description: Image generation
- name: Audio
description: Audio speech and transcription
- name: Moderations
description: Content moderation
- name: Rerank
description: Document reranking
- name: Models
description: Available model listing
- name: Providers
description: Provider connection management
- name: Provider Nodes
description: Provider node configuration
- name: API Keys
description: API key management
- name: Combos
description: Routing combo management
- name: Settings
description: Application settings
- name: Compression
description: Prompt compression, RTK filters, Caveman rules, and compression combos
- name: Usage
description: Usage analytics and logs
- name: Translator
description: Format translation debug & testing
- name: CLI Tools
description: CLI tool configuration management
- name: OAuth
description: OAuth flows for provider authentication
- name: System
description: System management (restart, shutdown, backup)
- name: Pricing
description: Model pricing configuration
- name: Cloud
description: Cloud worker authentication and sync
- name: Fallback
description: Fallback chain management
- name: Telemetry
description: Telemetry and token health monitoring
- name: MCP
description: Model Context Protocol server (LOCAL_ONLY — loopback access only)
- name: Webhooks
description: Webhook endpoint management and testing
- name: Tunnels
description: Tunnel (ngrok, Cloudflare, Tailscale) management
- name: Skills
description: Skill framework — install, list, execute
- name: Memory
description: Persistent conversational memory (FTS5 + Qdrant)
- name: Logs
description: Application and request log access
- name: Version Manager
description: Version check and update management
- name: Analytics
description: Internal analytics and routing statistics
- name: A2A
description: Agent-to-Agent JSON-RPC 2.0 protocol
- name: Evals
description: Evaluation suites
- name: Files
description: File uploads and management
- name: Batches
description: Batch request processing
paths:
# ─── Proxy Endpoints ──────────────────────────────────────────
/api/v1/chat/completions:
post:
tags: [Chat]
summary: Create chat completion
description: OpenAI-compatible chat completions endpoint. Routes to configured providers.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionRequest"
responses:
"200":
description: Chat completion response (or SSE stream)
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionResponse"
text/event-stream:
schema:
type: string
"401":
$ref: "#/components/responses/Unauthorized"
"502":
description: All upstream providers failed
/api/v1/providers/{provider}/chat/completions:
post:
tags: [Chat]
summary: Create chat completion (provider-specific)
description: Routes to a specific provider by name.
security:
- BearerAuth: []
parameters:
- name: provider
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionRequest"
responses:
"200":
description: Chat completion response
"401":
$ref: "#/components/responses/Unauthorized"
/api/v1/api/chat:
post:
tags: [Chat]
summary: Ollama-compatible chat endpoint
description: Provides compatibility with Ollama's /api/chat format.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Chat response (JSON or streaming)
/api/v1/messages:
post:
tags: [Messages]
summary: Create message (Anthropic-compatible)
description: Anthropic Messages API endpoint. Routes to Claude providers.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/MessagesRequest"
responses:
"200":
description: Message response (or SSE stream)
"401":
$ref: "#/components/responses/Unauthorized"
/api/v1/messages/count_tokens:
post:
tags: [Messages]
summary: Count tokens for a message
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Token count
/api/v1/responses:
post:
tags: [Responses]
summary: Create response (OpenAI Responses API)
description: OpenAI Responses API endpoint.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Response object or SSE stream
"401":
$ref: "#/components/responses/Unauthorized"
/api/v1/responses/{...path}:
get:
tags: [Responses]
summary: Responses API catch-all (GET)
description: Generic Responses API passthrough for sub-paths.
parameters:
- name: path
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
responses:
"200":
description: Responses API result
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Responses]
summary: Responses API catch-all (POST)
parameters:
- name: path
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Responses API result
"401":
$ref: "#/components/responses/Unauthorized"
/api/v1/embeddings:
post:
tags: [Embeddings]
summary: Create embeddings
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [input, model]
properties:
input:
oneOf:
- type: string
- type: array
items:
type: string
model:
type: string
responses:
"200":
description: Embedding vectors
/api/v1/providers/{provider}/embeddings:
post:
tags: [Embeddings]
summary: Create embeddings (provider-specific)
security:
- BearerAuth: []
parameters:
- name: provider
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Embedding vectors
/api/v1/images/generations:
post:
tags: [Images]
summary: Generate images
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [prompt]
properties:
prompt:
type: string
model:
type: string
n:
type: integer
default: 1
size:
type: string
default: 1024x1024
responses:
"200":
description: Generated images
/api/v1/providers/{provider}/images/generations:
post:
tags: [Images]
summary: Generate images (provider-specific)
security:
- BearerAuth: []
parameters:
- name: provider
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Generated images
/api/v1/audio/speech:
post:
tags: [Audio]
summary: Generate speech audio
description: Text-to-speech endpoint. Routes to configured TTS providers.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [input]
properties:
input:
type: string
model:
type: string
voice:
type: string
responses:
"200":
description: Audio data
/api/v1/audio/transcriptions:
post:
tags: [Audio]
summary: Transcribe audio
description: Audio-to-text transcription endpoint.
security:
- BearerAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required: [file]
properties:
file:
type: string
format: binary
model:
type: string
responses:
"200":
description: Transcription result
/api/v1/moderations:
post:
tags: [Moderations]
summary: Create moderation
description: Content moderation endpoint. Routes to configured moderation providers.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [input]
properties:
input:
oneOf:
- type: string
- type: array
items:
type: string
responses:
"200":
description: Moderation result
/api/v1/rerank:
post:
tags: [Rerank]
summary: Rerank documents
description: Document reranking endpoint.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [query, documents]
properties:
query:
type: string
documents:
type: array
items:
type: string
model:
type: string
responses:
"200":
description: Reranked documents
/api/v1:
get:
tags: [System]
summary: API v1 root endpoint
description: Returns basic API info and status.
security:
- BearerAuth: []
responses:
"200":
description: API info
/api/v1/models:
get:
tags: [Models]
summary: List available models
description: Returns all models available across configured providers.
security:
- BearerAuth: []
responses:
"200":
description: Model list
content:
application/json:
schema:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: "#/components/schemas/Model"
/api/v1/providers/{provider}/models:
get:
tags: [Models]
summary: List models for a specific provider
description: Returns only models for the selected provider with provider prefix removed from each model id.
security:
- BearerAuth: []
parameters:
- in: path
name: provider
required: true
schema:
type: string
description: Provider id or alias (for example `openai`, `claude`, `cc`).
responses:
"200":
description: Provider-scoped model list
content:
application/json:
schema:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: "#/components/schemas/Model"
"400":
description: Unknown provider
/api/models:
get:
tags: [Models]
summary: List models (management)
responses:
"200":
description: Internal model list with aliases
/api/models/alias:
post:
tags: [Models]
summary: Create or update a model alias
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Alias created/updated
/api/models/catalog:
get:
tags: [Models]
summary: Get full model catalog
responses:
"200":
description: Complete catalog with all providers
# ─── Management Endpoints ──────────────────────────────────────
/api/providers:
get:
tags: [Providers]
summary: List provider connections
responses:
"200":
description: Provider connection list
content:
application/json:
schema:
type: object
properties:
connections:
type: array
items:
$ref: "#/components/schemas/ProviderConnection"
post:
tags: [Providers]
summary: Create provider connection
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderConnectionCreate"
responses:
"201":
description: Created provider connection
/api/providers/{id}:
get:
tags: [Providers]
summary: Get provider connection
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Provider connection details
"404":
description: Provider not found
patch:
tags: [Providers]
summary: Update provider connection
parameters:
- $ref: "#/components/parameters/ResourceId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderConnectionCreate"
responses:
"200":
description: Updated provider
delete:
tags: [Providers]
summary: Delete provider connection
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Provider deleted
/api/providers/{id}/test:
post:
tags: [Providers]
summary: Test provider connection
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Test result
/api/providers/{id}/models:
get:
tags: [Providers]
summary: List models for a provider
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Provider model list
/api/providers/test-batch:
post:
tags: [Providers]
summary: Test multiple providers at once
responses:
"200":
description: Batch test results
/api/providers/validate:
post:
tags: [Providers]
summary: Validate provider credentials
responses:
"200":
description: Validation result
/api/providers/client:
get:
tags: [Providers]
summary: Get client-side provider info
responses:
"200":
description: Provider info for frontend
/api/provider-nodes:
get:
tags: [Provider Nodes]
summary: List provider nodes
responses:
"200":
description: Provider node list
post:
tags: [Provider Nodes]
summary: Create provider node
responses:
"201":
description: Created node
/api/provider-nodes/{id}:
patch:
tags: [Provider Nodes]
summary: Update provider node
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Updated node
delete:
tags: [Provider Nodes]
summary: Delete provider node
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Node deleted
/api/provider-nodes/validate:
post:
tags: [Provider Nodes]
summary: Validate a provider node
responses:
"200":
description: Validation result
/api/provider-models:
get:
tags: [Provider Nodes]
summary: List provider models
responses:
"200":
description: Provider model list
/api/keys:
get:
tags: [API Keys]
summary: List API keys
responses:
"200":
description: API key list
content:
application/json:
schema:
type: object
properties:
keys:
type: array
items:
$ref: "#/components/schemas/ApiKey"
post:
tags: [API Keys]
summary: Create API key
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [label]
properties:
label:
type: string
responses:
"201":
description: Created API key (includes full key value)
/api/keys/{id}:
delete:
tags: [API Keys]
summary: Delete API key
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Key deleted
/api/combos:
get:
tags: [Combos]
summary: List routing combos
responses:
"200":
description: Combo list
post:
tags: [Combos]
summary: Create routing combo
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ComboCreate"
responses:
"201":
description: Created combo
/api/combos/{id}:
patch:
tags: [Combos]
summary: Update combo
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Updated combo
delete:
tags: [Combos]
summary: Delete combo
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Combo deleted
/api/combos/metrics:
get:
tags: [Combos]
summary: Get combo metrics
responses:
"200":
description: Metrics for combos
/api/combos/test:
post:
tags: [Combos]
summary: Test a combo configuration
responses:
"200":
description: Test result
/api/settings:
get:
tags: [Settings]
summary: Get application settings
responses:
"200":
description: Current settings
patch:
tags: [Settings]
summary: Update settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated settings
/api/settings/compression:
get:
tags: [Compression]
summary: Get global compression settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: Current compression settings
put:
tags: [Compression]
summary: Update global compression settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
defaultMode:
type: string
enum: [off, lite, standard, aggressive, ultra, rtk, stacked]
autoTriggerMode:
type: string
enum: [off, lite, standard, aggressive, ultra, rtk, stacked]
autoTriggerTokens:
type: integer
minimum: 0
rtkConfig:
type: object
additionalProperties: true
stackedPipeline:
type: array
items:
type: object
responses:
"200":
description: Updated compression settings
/api/compression/preview:
post:
tags: [Compression]
summary: Preview compression for a message payload
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [messages, mode]
properties:
mode:
type: string
enum: [off, lite, standard, aggressive, ultra, rtk, stacked]
messages:
type: array
items:
type: object
required: [role, content]
properties:
role:
type: string
content:
oneOf:
- type: string
- type: array
items: {}
config:
type: object
additionalProperties: true
responses:
"200":
description: Compression preview with diff, validation, and stats
/api/compression/language-packs:
get:
tags: [Compression]
summary: List Caveman compression language packs
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Available languages and rule-pack metadata
/api/compression/rules:
get:
tags: [Compression]
summary: List Caveman compression rule metadata
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Caveman rule metadata
/api/context/rtk/config:
get:
tags: [Compression]
summary: Get RTK compression settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: Current RTK config
put:
tags: [Compression]
summary: Update RTK compression settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
intensity:
type: string
enum: [minimal, standard, aggressive]
customFiltersEnabled:
type: boolean
trustProjectFilters:
type: boolean
rawOutputRetention:
type: string
enum: [never, failures, always]
rawOutputMaxBytes:
type: integer
responses:
"200":
description: Updated RTK config
/api/context/rtk/filters:
get:
tags: [Compression]
summary: List RTK filters and load diagnostics
security:
- ManagementSessionAuth: []
responses:
"200":
description: RTK filter catalog and diagnostics
/api/context/rtk/test:
post:
tags: [Compression]
summary: Run RTK compression preview for text
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [text]
properties:
text:
type: string
command:
type: string
config:
type: object
additionalProperties: true
responses:
"200":
description: Detection and RTK compression result
/api/context/rtk/raw-output/{id}:
get:
tags: [Compression]
summary: Read retained redacted RTK raw output
security:
- ManagementSessionAuth: []
parameters:
- in: path
name: id
required: true
schema:
type: string
pattern: "^[a-f0-9]{24}$"
responses:
"200":
description: Raw output text
"404":
description: Raw output not found
/api/settings/payload-rules:
get:
tags: [Settings]
summary: Get payload rules configuration
description: |
Returns the current payload rules used to mutate outgoing request payloads before they
are sent upstream.
Requires a dashboard management session cookie when management auth is enabled.
security:
- ManagementSessionAuth: []
responses:
"200":
description: Current payload rules configuration
content:
application/json:
schema:
$ref: "#/components/schemas/PayloadRulesConfig"
"401":
$ref: "#/components/responses/ManagementAuthenticationRequired"
"403":
$ref: "#/components/responses/ManagementInvalidToken"
"500":
description: Failed to read payload rules configuration
content:
application/json:
schema:
$ref: "#/components/schemas/ApiErrorResponse"
put:
tags: [Settings]
summary: Update payload rules configuration
description: |
Persists and hot reloads payload rules. The legacy input field `default-raw` is accepted
on writes and normalized to `defaultRaw` in responses/runtime state.
Requires a dashboard management session cookie when management auth is enabled.
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdatePayloadRulesRequest"
responses:
"200":
description: Updated payload rules configuration
content:
application/json:
schema:
$ref: "#/components/schemas/PayloadRulesConfig"
"400":
$ref: "#/components/responses/ValidationError"
"401":
$ref: "#/components/responses/ManagementAuthenticationRequired"
"403":
$ref: "#/components/responses/ManagementInvalidToken"
"500":
description: Failed to update payload rules configuration
content:
application/json:
schema:
$ref: "#/components/schemas/ApiErrorResponse"
/api/settings/combo-defaults:
get:
tags: [Settings]
summary: Get combo default settings
responses:
"200":
description: Default combo settings
/api/settings/proxy:
get:
tags: [Settings]
summary: Get proxy settings
responses:
"200":
description: Current proxy settings
patch:
tags: [Settings]
summary: Update proxy settings
responses:
"200":
description: Updated proxy settings
/api/settings/proxy/test:
post:
tags: [Settings]
summary: Test proxy connection
responses:
"200":
description: Test result
/api/settings/require-login:
post:
tags: [Settings]
summary: Toggle login requirement
responses:
"200":
description: Updated
/api/settings/ip-filter:
get:
tags: [Settings]
summary: Get IP filter configuration
description: Returns the current IP filter settings including blacklist, whitelist, and temp bans.
responses:
"200":
description: IP filter configuration
put:
tags: [Settings]
summary: Update IP filter configuration
description: |
Configure IP filtering with blacklist/whitelist modes, add/remove individual IPs, and manage temp bans.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
mode:
type: string
enum: [blacklist, whitelist]
blacklist:
type: array
items:
type: string
whitelist:
type: array
items:
type: string
addBlacklist:
type: string
removeBlacklist:
type: string
addWhitelist:
type: string
removeWhitelist:
type: string
tempBan:
type: object
properties:
ip:
type: string
durationMs:
type: integer
reason:
type: string
removeBan:
type: string
responses:
"200":
description: Updated IP filter configuration
/api/settings/system-prompt:
get:
tags: [Settings]
summary: Get system prompt configuration
description: Returns the current system prompt injection settings.
responses:
"200":
description: System prompt configuration
put:
tags: [Settings]
summary: Update system prompt configuration
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
prompt:
type: string
enabled:
type: boolean
responses:
"200":
description: Updated system prompt configuration
/api/settings/thinking-budget:
get:
tags: [Settings]
summary: Get thinking budget configuration
description: Returns the current thinking/reasoning budget settings for AI models.
responses:
"200":
description: Thinking budget configuration
put:
tags: [Settings]
summary: Update thinking budget configuration
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mode:
type: string
description: Thinking mode (e.g., auto, manual, disabled)
customBudget:
type: integer
minimum: 0
maximum: 131072
effortLevel:
type: string
enum: [none, low, medium, high]
responses:
"200":
description: Updated thinking budget configuration
/api/settings/database:
get:
tags: [Settings]
summary: Get database settings
description: Returns SQLite database configuration (WAL mode, journal, paths).
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Database settings
"401":
$ref: "#/components/responses/Unauthorized"
patch:
tags: [Settings]
summary: Update database settings
description: Updates SQLite WAL or journal mode settings. Requires restart to take effect.
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
"401":
$ref: "#/components/responses/Unauthorized"
put:
tags: [Settings]
summary: Update database settings (alias for PATCH)
description: >-
Alias for PATCH /api/settings/database. Updates SQLite WAL or journal mode
settings. Requires restart to take effect.
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
"401":
$ref: "#/components/responses/Unauthorized"
/api/settings/database/refresh-stats:
post:
tags: [Settings]
summary: Refresh database statistics
description: Runs ANALYZE to refresh SQLite query planner statistics.
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Stats refreshed
"401":
$ref: "#/components/responses/Unauthorized"
/api/settings/database/vacuum:
post:
tags: [Settings]
summary: Vacuum database
description: Runs VACUUM FULL on the SQLite database to reclaim disk space. Destructive — cannot be interrupted.
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Vacuum completed
"401":
$ref: "#/components/responses/Unauthorized"
/api/rate-limit:
get:
tags: [Settings]
summary: Get rate limit configuration
responses:
"200":
description: Rate limit settings
post:
tags: [Settings]
summary: Update rate limit configuration
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated rate limit settings
/api/tags:
get:
tags: [System]
summary: List Ollama-compatible model tags
description: Returns models in Ollama /api/tags format for Ollama client compatibility
responses:
"200":
description: Ollama model tags
# ─── Usage & Analytics ─────────────────────────────────────────
/api/usage/analytics:
get:
tags: [Usage]
summary: Get usage analytics
parameters:
- name: period
in: query
schema:
type: string
enum: [day, week, month]
default: day
responses:
"200":
description: Usage analytics data
/api/usage/call-logs:
get:
tags: [Usage]
summary: Get call logs
parameters:
- name: limit
in: query
schema:
type: integer
default: 50
- name: offset
in: query
schema:
type: integer
default: 0
responses:
"200":
description: Paginated call logs
/api/usage/call-logs/{id}:
get:
tags: [Usage]
summary: Get a specific call log
parameters:
- $ref: "#/components/parameters/ResourceId"
responses:
"200":
description: Call log detail
/api/usage/{connectionId}:
get:
tags: [Usage]
summary: Get usage for a specific connection
parameters:
- name: connectionId
in: path
required: true
schema:
type: string
responses:
"200":
description: Connection usage data
/api/usage/history:
get:
tags: [Usage]
summary: Get usage history
responses:
"200":
description: Historical usage data
/api/usage/logs:
get:
tags: [Usage]
summary: Get usage logs
responses:
"200":
description: Usage log entries
/api/usage/proxy-logs:
get:
tags: [Usage]
summary: Get proxy logs
responses:
"200":
description: Proxy log entries
/api/usage/request-logs:
get:
tags: [Usage]
summary: Get request logs
responses:
"200":
description: Request log entries
/api/usage/budget:
get:
tags: [Usage]
summary: Get usage budget status
description: Returns current budget limits and consumption.
responses:
"200":
description: Budget status
post:
tags: [Usage]
summary: Configure usage budget
description: Set or update budget limits for usage tracking.
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated budget configuration
# ─── Pricing ───────────────────────────────────────────────────
/api/pricing:
get:
tags: [Pricing]
summary: Get model pricing
responses:
"200":
description: Current pricing configuration
post:
tags: [Pricing]
summary: Set model pricing
responses:
"200":
description: Updated pricing
/api/pricing/defaults:
get:
tags: [Pricing]
summary: Get default pricing
responses:
"200":
description: Default pricing data
/api/pricing/models:
get:
tags: [Pricing]
summary: Get pricing per model
description: Returns pricing information organized by model.
responses:
"200":
description: Per-model pricing data
# ─── Translator ────────────────────────────────────────────────
/api/translator/detect:
post:
tags: [Translator]
summary: Detect request format
description: Detects the API format of a request body (OpenAI, Claude, Gemini, etc.)
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [body]
properties:
body:
type: object
responses:
"200":
description: Detected format
/api/translator/translate:
post:
tags: [Translator]
summary: Translate between formats
description: Converts a request between API formats (e.g. Claude → OpenAI)
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [sourceFormat, targetFormat, body]
properties:
step:
type: string
sourceFormat:
type: string
targetFormat:
type: string
provider:
type: string
body:
type: object
responses:
"200":
description: Translated request
/api/translator/send:
post:
tags: [Translator]
summary: Send translated request to provider
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [provider, body]
properties:
provider:
type: string
body:
type: object
responses:
"200":
description: Provider response (may be SSE stream)
/api/translator/history:
get:
tags: [Translator]
summary: Get translation history
description: Returns recent translation events for the Live Monitor
responses:
"200":
description: Translation history entries
# ─── CLI Tools ─────────────────────────────────────────────────
/api/cli-tools/backups:
get:
tags: [CLI Tools]
summary: List CLI tool backups
responses:
"200":
description: Backup list
post:
tags: [CLI Tools]
summary: Create CLI tool backup
responses:
"200":
description: Backup created
/api/cli-tools/runtime/{toolId}:
get:
tags: [CLI Tools]
summary: Get runtime status for a CLI tool
description: >-
Gets runtime status for a CLI tool.
LOCAL_ONLY — spawn-capable route, blocked unconditionally from non-loopback.
CVE class: GHSA-fhh6-4qxv-rpqj.
x-loopback-only: true
parameters:
- name: toolId
in: path
required: true
schema:
type: string
responses:
"200":
description: Runtime status
"403":
description: Forbidden — request not from loopback
/api/cli-tools/guide-settings/{toolId}:
get:
tags: [CLI Tools]
summary: Get guide settings for a tool
parameters:
- name: toolId
in: path
required: true
schema:
type: string
responses:
"200":
description: Guide settings
/api/cli-tools/antigravity-mitm:
get:
tags: [CLI Tools]
summary: Get Antigravity MITM proxy settings
responses:
"200":
description: MITM proxy configuration
post:
tags: [CLI Tools]
summary: Update Antigravity MITM proxy settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated MITM proxy configuration
delete:
tags: [CLI Tools]
summary: Reset Antigravity MITM proxy settings
responses:
"200":
description: MITM proxy settings reset
/api/cli-tools/antigravity-mitm/alias:
get:
tags: [CLI Tools]
summary: Get Antigravity MITM alias configuration
responses:
"200":
description: Alias configuration
put:
tags: [CLI Tools]
summary: Update Antigravity MITM alias configuration
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated alias configuration
/api/cli-tools/claude-settings:
get:
tags: [CLI Tools]
summary: Get Claude CLI settings
responses:
"200":
description: Claude CLI configuration
post:
tags: [CLI Tools]
summary: Apply Claude CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Claude CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset Claude CLI settings
responses:
"200":
description: Claude CLI settings reset
/api/cli-tools/cline-settings:
get:
tags: [CLI Tools]
summary: Get Cline CLI settings
responses:
"200":
description: Cline CLI configuration
post:
tags: [CLI Tools]
summary: Apply Cline CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Cline CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset Cline CLI settings
responses:
"200":
description: Cline CLI settings reset
/api/cli-tools/codex-profiles:
get:
tags: [CLI Tools]
summary: Get Codex profiles
responses:
"200":
description: Codex profile list
post:
tags: [CLI Tools]
summary: Create Codex profile
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Profile created
put:
tags: [CLI Tools]
summary: Update Codex profile
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Profile updated
delete:
tags: [CLI Tools]
summary: Delete Codex profile
responses:
"200":
description: Profile deleted
/api/cli-tools/codex-settings:
get:
tags: [CLI Tools]
summary: Get Codex CLI settings
responses:
"200":
description: Codex CLI configuration
post:
tags: [CLI Tools]
summary: Apply Codex CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Codex CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset Codex CLI settings
responses:
"200":
description: Codex CLI settings reset
/api/cli-tools/droid-settings:
get:
tags: [CLI Tools]
summary: Get Droid CLI settings
responses:
"200":
description: Droid CLI configuration
post:
tags: [CLI Tools]
summary: Apply Droid CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Droid CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset Droid CLI settings
responses:
"200":
description: Droid CLI settings reset
/api/cli-tools/kilo-settings:
get:
tags: [CLI Tools]
summary: Get Kilo CLI settings
responses:
"200":
description: Kilo CLI configuration
post:
tags: [CLI Tools]
summary: Apply Kilo CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Kilo CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset Kilo CLI settings
responses:
"200":
description: Kilo CLI settings reset
/api/cli-tools/openclaw-settings:
get:
tags: [CLI Tools]
summary: Get OpenClaw CLI settings
responses:
"200":
description: OpenClaw CLI configuration
post:
tags: [CLI Tools]
summary: Apply OpenClaw CLI settings
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: OpenClaw CLI settings applied
delete:
tags: [CLI Tools]
summary: Reset OpenClaw CLI settings
responses:
"200":
description: OpenClaw CLI settings reset
/api/cli-tools/apply:
post:
tags: [CLI Tools]
summary: Apply CLI tool configuration
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Configuration applied
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/config:
get:
tags: [CLI Tools]
summary: Get CLI tools global configuration
x-internal: true
security:
- BearerAuth: []
responses:
"200":
description: CLI tools configuration
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [CLI Tools]
summary: Update CLI tools global configuration
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Configuration updated
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/detect:
get:
tags: [CLI Tools]
summary: Detect locally installed CLI tools
description: Scans the local system and returns a map of detected CLI tools and their versions.
security:
- BearerAuth: []
responses:
"200":
description: Map of detected tools with version info
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/hermes-agent-settings:
get:
tags: [CLI Tools]
summary: Get Hermes agent CLI settings
x-internal: true
security:
- BearerAuth: []
responses:
"200":
description: Hermes agent CLI configuration
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [CLI Tools]
summary: Apply Hermes agent CLI settings
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Hermes agent CLI settings applied
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/keys:
get:
tags: [CLI Tools]
summary: Get CLI tool API keys
x-internal: true
security:
- BearerAuth: []
responses:
"200":
description: CLI tool API key configuration
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [CLI Tools]
summary: Set CLI tool API keys
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: CLI tool API keys updated
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/openclaw/auto-order:
get:
tags: [CLI Tools]
summary: Get OpenClaw auto-order configuration
x-internal: true
security:
- BearerAuth: []
responses:
"200":
description: OpenClaw auto-order configuration
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [CLI Tools]
summary: Update OpenClaw auto-order configuration
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: OpenClaw auto-order configuration updated
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/qwen-settings:
get:
tags: [CLI Tools]
summary: Get Qwen CLI settings
x-internal: true
security:
- BearerAuth: []
responses:
"200":
description: Qwen CLI configuration
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [CLI Tools]
summary: Apply Qwen CLI settings
x-internal: true
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Qwen CLI settings applied
"401":
$ref: "#/components/responses/Unauthorized"
/api/cli-tools/status:
get:
tags: [CLI Tools]
summary: CLI tools service status
description: Returns health and status of the CLI tools subsystem.
security:
- BearerAuth: []
responses:
"200":
description: CLI tools status
"401":
$ref: "#/components/responses/Unauthorized"
/api/upstream-proxy/{providerId}:
get:
tags: [Internal]
summary: Upstream proxy passthrough (GET)
description: Proxies GET requests to the upstream provider. Internal use only.
x-internal: true
parameters:
- name: providerId
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
responses:
"200":
description: Proxied response from upstream provider
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Internal]
summary: Upstream proxy passthrough (POST)
x-internal: true
parameters:
- name: providerId
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Proxied response from upstream provider
"401":
$ref: "#/components/responses/Unauthorized"
put:
tags: [Internal]
summary: Upstream proxy passthrough (PUT)
x-internal: true
parameters:
- name: providerId
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Proxied response from upstream provider
"401":
$ref: "#/components/responses/Unauthorized"
delete:
tags: [Internal]
summary: Upstream proxy passthrough (DELETE)
x-internal: true
parameters:
- name: providerId
in: path
required: true
schema:
type: string
security:
- BearerAuth: []
responses:
"200":
description: Proxied response from upstream provider
"401":
$ref: "#/components/responses/Unauthorized"
# ─── MCP Server (LOCAL_ONLY — spawn-capable) ─────────────────────
# These routes start/control the MCP server subprocess. They are
# enforced as loopback-only by routeGuard.ts regardless of auth state.
# CVE class: GHSA-fhh6-4qxv-rpqj — never expose to non-loopback traffic.
/api/mcp/sse:
get:
tags: [MCP]
summary: MCP Server-Sent Events stream
description: >-
SSE transport for the MCP server. Streams tool call results and events.
LOCAL_ONLY — blocked unconditionally from non-loopback IPs.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: SSE event stream
content:
text/event-stream:
schema:
type: string
"403":
description: Forbidden — request not from loopback
/api/mcp/stream:
get:
tags: [MCP]
summary: MCP HTTP streaming transport
description: >-
HTTP streaming (chunked) transport for the MCP server.
LOCAL_ONLY — blocked unconditionally from non-loopback IPs.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: Chunked stream
"403":
description: Forbidden — request not from loopback
post:
tags: [MCP]
summary: MCP HTTP streaming transport (POST)
description: >-
HTTP streaming (chunked) transport for the MCP server — POST variant.
LOCAL_ONLY — blocked unconditionally from non-loopback IPs.
x-loopback-only: true
security:
- BearerAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: MCP response
"403":
description: Forbidden — request not from loopback
/api/mcp/status:
get:
tags: [MCP]
summary: MCP server status
description: Returns running/stopped state of the MCP server process. LOCAL_ONLY.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: MCP server status object
"403":
description: Forbidden — request not from loopback
/api/mcp/tools:
get:
tags: [MCP]
summary: List MCP tools
description: Returns the registered tool manifest. LOCAL_ONLY.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: Tool list
"403":
description: Forbidden — request not from loopback
/api/mcp/audit:
get:
tags: [MCP]
summary: MCP audit log
description: Returns recent MCP tool invocation log entries. LOCAL_ONLY.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: Audit log entries
"403":
description: Forbidden — request not from loopback
/api/mcp/audit/stats:
get:
tags: [MCP]
summary: MCP audit statistics
description: Returns aggregate MCP tool usage statistics. LOCAL_ONLY.
x-loopback-only: true
security:
- BearerAuth: []
responses:
"200":
description: Audit stats
"403":
description: Forbidden — request not from loopback
# ─── OAuth ─────────────────────────────────────────────────────
/api/oauth/{provider}/{action}:
get:
tags: [OAuth]
summary: OAuth flow handler
description: Handles OAuth authorization and callback for providers
parameters:
- name: provider
in: path
required: true
schema:
type: string
- name: action
in: path
required: true
schema:
type: string
enum: [authorize, callback, refresh, status]
responses:
"200":
description: OAuth flow response
"302":
description: Redirect to provider auth page
/api/oauth/cursor/auto-import:
get:
tags: [OAuth]
summary: Auto-import Cursor OAuth credentials
description: Automatically detects and imports Cursor credentials from local config.
responses:
"200":
description: Import result
/api/oauth/cursor/import:
get:
tags: [OAuth]
summary: Get Cursor import status
responses:
"200":
description: Current import status
post:
tags: [OAuth]
summary: Import Cursor OAuth credentials
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Credentials imported
/api/oauth/kiro/auto-import:
get:
tags: [OAuth]
summary: Auto-import Kiro OAuth credentials
description: Automatically detects and imports Kiro credentials from local config.
responses:
"200":
description: Import result
/api/oauth/kiro/import:
get:
tags: [OAuth]
summary: Get Kiro import status
responses:
"200":
description: Current import status
post:
tags: [OAuth]
summary: Import Kiro OAuth credentials
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Credentials imported
/api/oauth/kiro/social-authorize:
get:
tags: [OAuth]
summary: Initiate Kiro social OAuth authorization
description: Starts the social OAuth flow for Kiro.
responses:
"302":
description: Redirect to OAuth provider
/api/oauth/kiro/social-exchange:
post:
tags: [OAuth]
summary: Exchange Kiro social OAuth token
description: Exchanges the authorization code for access tokens.
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Token exchange result
# ─── Cloud ─────────────────────────────────────────────────────
/api/cloud/auth:
post:
tags: [Cloud]
summary: Authenticate with cloud worker
description: Authenticates with the OmniRoute cloud worker for remote access.
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Authentication result
/api/cloud/credentials/update:
put:
tags: [Cloud]
summary: Update cloud worker credentials
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Credentials updated
/api/cloud/model/resolve:
post:
tags: [Cloud]
summary: Resolve model via cloud
description: Resolves a model request through the cloud worker.
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Resolved model info
/api/cloud/models/alias:
get:
tags: [Cloud]
summary: Get cloud model aliases
responses:
"200":
description: Cloud model alias list
put:
tags: [Cloud]
summary: Update cloud model alias
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Alias updated
# ─── Fallback ──────────────────────────────────────────────────
/api/fallback/chains:
get:
tags: [Fallback]
summary: List fallback chains
description: Returns all registered fallback chains for model routing.
responses:
"200":
description: Fallback chain list
post:
tags: [Fallback]
summary: Create fallback chain
description: Registers a fallback routing chain for a model.
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [model, chain]
properties:
model:
type: string
chain:
type: array
items:
type: object
properties:
provider:
type: string
priority:
type: integer
enabled:
type: boolean
responses:
"200":
description: Fallback chain created
delete:
tags: [Fallback]
summary: Delete fallback chain
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [model]
properties:
model:
type: string
responses:
"200":
description: Fallback chain deleted
# ─── Webhooks ─────────────────────────────────────────────────────
/api/webhooks:
get:
tags: [Webhooks]
summary: List webhooks
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Webhook list
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Webhooks]
summary: Create webhook
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
events:
type: array
items:
type: string
secret:
type: string
responses:
"201":
description: Webhook created
"401":
$ref: "#/components/responses/Unauthorized"
/api/webhooks/{id}:
get:
tags: [Webhooks]
summary: Get webhook
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Webhook details
"404":
description: Not found
"401":
$ref: "#/components/responses/Unauthorized"
patch:
tags: [Webhooks]
summary: Update webhook
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Webhook updated
"401":
$ref: "#/components/responses/Unauthorized"
delete:
tags: [Webhooks]
summary: Delete webhook
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Webhook deleted
"401":
$ref: "#/components/responses/Unauthorized"
/api/webhooks/{id}/test:
post:
tags: [Webhooks]
summary: Test webhook delivery
description: Sends a test event payload to the webhook URL.
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Test delivery result
"401":
$ref: "#/components/responses/Unauthorized"
# ─── Tunnels ──────────────────────────────────────────────────────
/api/tunnels/ngrok:
get:
tags: [Tunnels]
summary: Get ngrok tunnel status
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: ngrok tunnel status
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Tunnels]
summary: Start/configure ngrok tunnel
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Tunnel started
"401":
$ref: "#/components/responses/Unauthorized"
delete:
tags: [Tunnels]
summary: Stop ngrok tunnel
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Tunnel stopped
/api/tunnels/cloudflared:
get:
tags: [Tunnels]
summary: Get Cloudflare Tunnel status
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Cloudflare tunnel status
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Tunnels]
summary: Start/configure Cloudflare Tunnel
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Tunnel started
delete:
tags: [Tunnels]
summary: Stop Cloudflare Tunnel
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Tunnel stopped
/api/tunnels/tailscale:
get:
tags: [Tunnels]
summary: Get Tailscale status
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Tailscale status
"401":
$ref: "#/components/responses/Unauthorized"
/api/tunnels/tailscale/install:
post:
tags: [Tunnels]
summary: Install Tailscale
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Install initiated
/api/tunnels/tailscale/login:
post:
tags: [Tunnels]
summary: Tailscale login / auth key
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
authKey:
type: string
responses:
"200":
description: Login result
/api/tunnels/tailscale/start-daemon:
post:
tags: [Tunnels]
summary: Start Tailscale daemon
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Daemon started
/api/tunnels/tailscale/enable:
post:
tags: [Tunnels]
summary: Enable Tailscale routing
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Routing enabled
/api/tunnels/tailscale/disable:
post:
tags: [Tunnels]
summary: Disable Tailscale routing
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Routing disabled
/api/tunnels/tailscale/check:
get:
tags: [Tunnels]
summary: Check Tailscale connectivity
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Connectivity check result
# ─── Skills ───────────────────────────────────────────────────────
/api/skills:
get:
tags: [Skills]
summary: List installed skills
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Skill list
"401":
$ref: "#/components/responses/Unauthorized"
/api/skills/{id}:
get:
tags: [Skills]
summary: Get skill details
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Skill details
"404":
description: Skill not found
"401":
$ref: "#/components/responses/Unauthorized"
delete:
tags: [Skills]
summary: Uninstall skill
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Skill uninstalled
/api/skills/install:
post:
tags: [Skills]
summary: Install skill from ZIP or URL
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
source:
type: string
description: URL or base64 ZIP
responses:
"201":
description: Skill installed
"401":
$ref: "#/components/responses/Unauthorized"
/api/skills/marketplace:
get:
tags: [Skills]
summary: Browse skill marketplace
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Available skills
/api/skills/marketplace/install:
post:
tags: [Skills]
summary: Install skill from marketplace
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
skillId:
type: string
responses:
"201":
description: Skill installed
/api/skills/executions:
get:
tags: [Skills]
summary: List skill execution history
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Execution history
# ─── System ────────────────────────────────────────────────────
/api/auth/login:
post:
tags: [System]
summary: Authenticate user
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [password]
properties:
password:
type: string
responses:
"200":
description: JWT token returned
"401":
description: Invalid password
/api/auth/logout:
post:
tags: [System]
summary: Log out
responses:
"200":
description: Session cleared
/api/init:
get:
tags: [System]
summary: Initialize application
responses:
"200":
description: Init status
/api/restart:
post:
tags: [System]
summary: Restart the application
responses:
"200":
description: Restart initiated
/api/shutdown:
post:
tags: [System]
summary: Shutdown the OmniRoute service
description: >-
Initiates a graceful shutdown. Always requires authentication regardless of
the `requireLogin` setting — classified as ALWAYS_PROTECTED in routeGuard.ts.
x-always-protected: true
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"202":
description: Shutdown initiated
"401":
$ref: "#/components/responses/Unauthorized"
/api/db-backups:
get:
tags: [System]
summary: List database backups
responses:
"200":
description: Backup list
post:
tags: [System]
summary: Create database backup
responses:
"200":
description: Backup created
/api/db-backups/export:
post:
tags: [System]
summary: Export database to file
description: Creates a snapshot export of the SQLite database.
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Export file path or download
"401":
$ref: "#/components/responses/Unauthorized"
/api/db-backups/exportAll:
post:
tags: [System]
summary: Export all data to ZIP
description: Exports the full database including attachments to a ZIP archive.
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: ZIP archive
"401":
$ref: "#/components/responses/Unauthorized"
/api/db-backups/import:
post:
tags: [System]
summary: Import database from backup
description: >-
Restores database from a backup file. Destructive — overwrites current data.
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
"200":
description: Import successful
"401":
$ref: "#/components/responses/Unauthorized"
/api/storage/health:
get:
tags: [System]
summary: Check storage health
responses:
"200":
description: Storage health status
/api/sync/cloud:
post:
tags: [System]
summary: Sync with cloud
responses:
"200":
description: Sync result
/api/sync/initialize:
post:
tags: [System]
summary: Initialize cloud sync
responses:
"200":
description: Sync initialized
# ─── Resilience & Monitoring ────────────────────────────────────
/api/resilience:
get:
tags: [System]
summary: Get resilience configuration
responses:
"200":
description: Request queue, connection cooldown, provider breaker, and wait settings
patch:
tags: [System]
summary: Update resilience configuration
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Updated resilience configuration
/api/resilience/reset:
post:
tags: [System]
summary: Reset circuit breakers
responses:
"200":
description: Circuit breakers reset
/api/monitoring/health:
get:
tags: [System]
summary: System health check
description: Returns system health including uptime, memory, circuit breakers, rate limits
responses:
"200":
description: Health status
/api/rate-limits:
get:
tags: [System]
summary: Get per-account rate limit status
responses:
"200":
description: Rate limit status by account
/api/sessions:
get:
tags: [System]
summary: Get active sessions
responses:
"200":
description: Active session list
/api/cache:
get:
tags: [System]
summary: Get cache statistics
responses:
"200":
description: Semantic cache and idempotency stats
delete:
tags: [System]
summary: Clear all caches
responses:
"200":
description: Caches cleared
/api/cache/stats:
get:
tags: [System]
summary: Get detailed cache statistics
description: Returns detailed statistics for all cache layers.
responses:
"200":
description: Detailed cache stats
delete:
tags: [System]
summary: Clear cache statistics
responses:
"200":
description: Cache stats cleared
# ─── Telemetry & Token Health ───────────────────────────────────
/api/telemetry/summary:
get:
tags: [Telemetry]
summary: Get telemetry summary
description: Returns aggregated telemetry data including request metrics and performance stats.
responses:
"200":
description: Telemetry summary data
/api/token-health:
get:
tags: [Telemetry]
summary: Get token health status
description: Returns health status of OAuth tokens across all providers.
responses:
"200":
description: Token health status
# ─── Evals & Policies ──────────────────────────────────────────
/api/evals:
get:
tags: [System]
summary: List eval suites
responses:
"200":
description: Eval suite list
post:
tags: [System]
summary: Run evaluation
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Eval results
/api/evals/{suiteId}:
get:
tags: [System]
summary: Get eval suite details
parameters:
- name: suiteId
in: path
required: true
schema:
type: string
responses:
"200":
description: Eval suite details
/api/policies:
get:
tags: [System]
summary: List routing policies
responses:
"200":
description: Policy list
post:
tags: [System]
summary: Create routing policy
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Created policy
delete:
tags: [System]
summary: Delete routing policy
responses:
"200":
description: Policy deleted
/api/compliance/audit-log:
get:
tags: [System]
summary: Get compliance audit log
parameters:
- name: limit
in: query
schema:
type: integer
default: 100
responses:
"200":
description: Audit log entries
# ─── v1beta (Gemini-Compatible) ─────────────────────────────────
/api/v1beta/models:
get:
tags: [Models]
summary: List models (Gemini format)
description: Returns models in Gemini v1beta format for native SDK compatibility
security:
- BearerAuth: []
responses:
"200":
description: Model list in Gemini format
/api/v1beta/models/{...path}:
post:
tags: [Models]
summary: Gemini generateContent
description: Gemini-compatible generateContent endpoint
security:
- BearerAuth: []
parameters:
- name: path
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Generated content
# ─── OpenAPI Spec ──────────────────────────────────────────────
/api/openapi/spec:
get:
tags: [System]
summary: Get OpenAPI specification catalog
description: >-
Returns a structured JSON catalog parsed from this `openapi.yaml`,
including info, servers, tags, schemas, and a flat list of endpoints
(method, path, tags, summary, security, parameters, responses).
Used by the in-app API explorer.
responses:
"200":
description: Parsed OpenAPI catalog
content:
application/json:
schema:
type: object
properties:
info:
type: object
servers:
type: array
items:
type: object
tags:
type: array
items:
type: object
endpoints:
type: array
items:
type: object
properties:
method:
type: string
path:
type: string
tags:
type: array
items:
type: string
summary:
type: string
description:
type: string
security:
type: boolean
parameters:
type: array
items:
type: object
requestBody:
type: boolean
responses:
type: array
items:
type: string
schemas:
type: array
items:
type: string
"404":
description: openapi.yaml file not found on disk
"500":
description: Failed to parse OpenAPI spec
# ─── Memory ───────────────────────────────────────────────────────
/api/memory:
get:
tags: [Memory]
summary: List memory entries
description: Returns conversational memory entries (FTS5 + Qdrant).
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Memory entries
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Memory]
summary: Create memory entry
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
content:
type: string
tags:
type: array
items:
type: string
responses:
"201":
description: Memory entry created
"401":
$ref: "#/components/responses/Unauthorized"
/api/memory/{id}:
get:
tags: [Memory]
summary: Get memory entry
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Memory entry
"404":
description: Not found
patch:
tags: [Memory]
summary: Update memory entry
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Memory entry updated
delete:
tags: [Memory]
summary: Delete memory entry
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Memory entry deleted
/api/memory/health:
get:
tags: [Memory]
summary: Memory system health
description: Returns health of FTS5 index and Qdrant vector store.
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Memory health status
# ─── Logs ─────────────────────────────────────────────────────────
/api/logs/console:
get:
tags: [Logs]
summary: Get application console logs
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Console log entries
"401":
$ref: "#/components/responses/Unauthorized"
/api/logs/active:
get:
tags: [Logs]
summary: Get active request logs
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Active request log entries
/api/logs/detail:
get:
tags: [Logs]
summary: Get detailed log entries
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: query
schema:
type: string
responses:
"200":
description: Detailed log entry
/api/logs/export:
get:
tags: [Logs]
summary: Export logs as file
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Log file download
# ─── v1 Missing Routes ────────────────────────────────────────────
/api/v1/completions:
post:
tags: [Chat]
summary: Legacy completions (text)
description: OpenAI legacy text completions endpoint.
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Completion response
/api/v1/batches:
get:
tags: [Batches]
summary: List batch jobs
security:
- BearerAuth: []
responses:
"200":
description: Batch job list
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags: [Batches]
summary: Create batch job
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Batch job created
/api/v1/batches/{id}:
get:
tags: [Batches]
summary: Get batch job
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Batch job details
delete:
tags: [Batches]
summary: Cancel batch job
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Batch cancelled
/api/v1/batches/{id}/cancel:
post:
tags: [Batches]
summary: Cancel batch job (explicit)
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Batch cancelled
/api/v1/files:
get:
tags: [Files]
summary: List uploaded files
security:
- BearerAuth: []
responses:
"200":
description: File list
post:
tags: [Files]
summary: Upload file
security:
- BearerAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
purpose:
type: string
responses:
"201":
description: File uploaded
/api/v1/files/{id}:
get:
tags: [Files]
summary: Get file metadata
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: File metadata
delete:
tags: [Files]
summary: Delete file
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: File deleted
/api/v1/files/{id}/content:
get:
tags: [Files]
summary: Get file content
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: File content
/api/v1/images/edits:
post:
tags: [Images]
summary: Edit image
security:
- BearerAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"200":
description: Edited image
/api/v1/music/generations:
post:
tags: [Audio]
summary: Generate music
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Generated music
/api/v1/videos/generations:
post:
tags: [Images]
summary: Generate video
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Generated video
/api/v1/quotas/check:
get:
tags: [API Keys]
summary: Check quota usage
security:
- BearerAuth: []
responses:
"200":
description: Quota status
/api/v1/registered-keys:
get:
tags: [API Keys]
summary: List registered API keys
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Registered keys
post:
tags: [API Keys]
summary: Register API key
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Key registered
/api/v1/registered-keys/{id}:
get:
tags: [API Keys]
summary: Get registered key
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Key details
delete:
tags: [API Keys]
summary: Delete registered key
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Key deleted
/api/v1/registered-keys/{id}/revoke:
post:
tags: [API Keys]
summary: Revoke registered key
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Key revoked
# ─── Usage Extensions ─────────────────────────────────────────────
/api/usage/quota:
get:
tags: [Usage]
summary: Get quota usage
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Quota usage stats
/api/usage/utilization:
get:
tags: [Usage]
summary: Get provider utilization metrics
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Utilization data
/api/usage/combo-health:
get:
tags: [Usage]
summary: Get combo health metrics
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Combo health metrics
/api/usage/provider-limits:
get:
tags: [Usage]
summary: Get provider rate limit status
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Provider limit status
/api/usage/budget/bulk:
patch:
tags: [Usage]
summary: Bulk update usage budgets
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Budgets updated
# ─── Provider Extensions ──────────────────────────────────────────
/api/providers/bulk:
post:
tags: [Providers]
summary: Bulk provider operations
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk operation result
/api/providers/{id}/refresh:
post:
tags: [Providers]
summary: Refresh provider connection
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Provider refreshed
/api/providers/{id}/sync-models:
post:
tags: [Providers]
summary: Sync provider models
security:
- BearerAuth: []
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Models synced
/api/providers/expiration:
get:
tags: [Providers]
summary: Get provider credential expiration status
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Expiration status
/api/providers/quota-windows:
get:
tags: [Providers]
summary: Get provider quota windows
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Quota window data
# ─── Settings Extensions ──────────────────────────────────────────
/api/settings/feature-flags:
get:
tags: [Settings]
summary: Get feature flags
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Feature flags
patch:
tags: [Settings]
summary: Update feature flags
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Flags updated
/api/settings/memory:
get:
tags: [Settings]
summary: Get memory settings
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Memory settings
patch:
tags: [Settings]
summary: Update memory settings
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
/api/settings/model-aliases:
get:
tags: [Settings]
summary: Get model aliases
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Model alias map
post:
tags: [Settings]
summary: Create model alias
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Alias created
delete:
tags: [Settings]
summary: Delete model alias
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Alias deleted
/api/settings/export-json:
get:
tags: [Settings]
summary: Export settings as JSON
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Settings JSON export
/api/settings/import-json:
post:
tags: [Settings]
summary: Import settings from JSON
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings imported
/api/settings/purge-call-logs:
post:
tags: [Settings]
summary: Purge call logs
description: Deletes all call log records. Destructive.
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Logs purged
/api/settings/purge-logs:
post:
tags: [Settings]
summary: Purge all logs
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Logs purged
/api/settings/cache-config:
get:
tags: [Settings]
summary: Get cache configuration
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Cache config
patch:
tags: [Settings]
summary: Update cache configuration
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Config updated
/api/settings/task-routing:
get:
tags: [Settings]
summary: Get task routing settings
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Task routing config
patch:
tags: [Settings]
summary: Update task routing settings
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
# ─── Internal Routes (x-internal: true — hidden from dashboard by default) ─
/api/analytics/auto-routing:
get:
tags: [Analytics]
x-internal: true
summary: Auto-routing decision analytics
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Auto-routing analytics
/api/analytics/compression:
get:
tags: [Analytics]
x-internal: true
summary: Compression analytics
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Compression analytics
/api/analytics/diversity:
get:
tags: [Analytics]
x-internal: true
summary: Provider diversity analytics
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Diversity analytics
/api/assess:
post:
tags: [System]
x-internal: true
summary: Assess request (internal)
security:
- BearerAuth: []
responses:
"200":
description: Assessment result
/api/admin/concurrency:
get:
tags: [System]
x-internal: true
summary: Admin concurrency status
security:
- ManagementSessionAuth: []
responses:
"200":
description: Concurrency info
/api/copilot/chat:
post:
tags: [Chat]
x-internal: true
summary: Copilot chat relay (internal)
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Chat response
/api/gamification/leaderboard:
get:
tags: [System]
x-internal: true
summary: Local gamification leaderboard
security:
- ManagementSessionAuth: []
responses:
"200":
description: Leaderboard
/api/gamification/federation/leaderboard:
get:
tags: [System]
x-internal: true
summary: Federated gamification leaderboard
security:
- ManagementSessionAuth: []
responses:
"200":
description: Federation leaderboard
/api/gamification/federation/score:
post:
tags: [System]
x-internal: true
summary: Submit federation score
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Score submitted
/api/gamification/anomalies:
get:
tags: [System]
x-internal: true
summary: Gamification anomaly detection
security:
- ManagementSessionAuth: []
responses:
"200":
description: Anomaly data
/api/gamification/invite:
get:
tags: [System]
x-internal: true
summary: Get invite code
security:
- ManagementSessionAuth: []
responses:
"200":
description: Invite code
post:
tags: [System]
x-internal: true
summary: Create invite
security:
- ManagementSessionAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"201":
description: Invite created
/api/gamification/invite/redeem:
post:
tags: [System]
x-internal: true
summary: Redeem invite code
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Invite redeemed
/api/gamification/notifications:
get:
tags: [System]
x-internal: true
summary: Gamification notifications
security:
- ManagementSessionAuth: []
responses:
"200":
description: Notifications
/api/gamification/rotate:
post:
tags: [System]
x-internal: true
summary: Rotate gamification key
security:
- ManagementSessionAuth: []
responses:
"200":
description: Key rotated
/api/gamification/servers:
get:
tags: [System]
x-internal: true
summary: Gamification server list
security:
- ManagementSessionAuth: []
responses:
"200":
description: Server list
/api/gamification/stream:
get:
tags: [System]
x-internal: true
summary: Gamification event stream
security:
- ManagementSessionAuth: []
responses:
"200":
description: SSE stream
/api/gamification/transfer:
post:
tags: [System]
x-internal: true
summary: Transfer gamification data
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Transfer result
/api/health/degradation:
get:
tags: [System]
x-internal: true
summary: Degradation health check
security:
- ManagementSessionAuth: []
responses:
"200":
description: Degradation status
/api/network/info:
get:
tags: [System]
x-internal: true
summary: Network info
security:
- ManagementSessionAuth: []
responses:
"200":
description: Network info
/api/playground/simulate-route:
post:
tags: [System]
x-internal: true
summary: Simulate routing decision (playground)
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Routing simulation result
/api/provider-metrics:
get:
tags: [Providers]
x-internal: true
summary: Raw provider performance metrics
security:
- ManagementSessionAuth: []
responses:
"200":
description: Metrics
/api/relay/tokens:
get:
tags: [System]
x-internal: true
summary: List relay tokens
security:
- ManagementSessionAuth: []
responses:
"200":
description: Relay tokens
post:
tags: [System]
x-internal: true
summary: Create relay token
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Token created
/api/relay/tokens/{id}:
delete:
tags: [System]
x-internal: true
summary: Delete relay token
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Token deleted
/api/search/providers:
get:
tags: [Providers]
x-internal: true
summary: Search providers (internal)
security:
- ManagementSessionAuth: []
responses:
"200":
description: Search results
/api/search/stats:
get:
tags: [System]
x-internal: true
summary: Search subsystem stats
security:
- ManagementSessionAuth: []
responses:
"200":
description: Stats
/api/sync/bundle:
get:
tags: [System]
x-internal: true
summary: Get sync bundle
security:
- ManagementSessionAuth: []
responses:
"200":
description: Sync bundle
/api/sync/tokens:
get:
tags: [System]
x-internal: true
summary: List sync tokens
security:
- ManagementSessionAuth: []
responses:
"200":
description: Sync tokens
post:
tags: [System]
x-internal: true
summary: Create sync token
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Token created
/api/sync/tokens/{id}:
delete:
tags: [System]
x-internal: true
summary: Delete sync token
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Token deleted
/api/synced-available-models:
get:
tags: [Models]
x-internal: true
summary: Synced available models (internal cache)
security:
- ManagementSessionAuth: []
responses:
"200":
description: Model list
/api/system/env/repair:
post:
tags: [System]
x-internal: true
summary: Repair environment configuration
security:
- ManagementSessionAuth: []
responses:
"200":
description: Repair result
/api/system/version:
get:
tags: [System]
x-internal: true
summary: Get system version info
security:
- ManagementSessionAuth: []
responses:
"200":
description: Version info
/api/v1/accounts/{id}/limits:
get:
tags: [API Keys]
x-internal: true
summary: Get account limits (internal)
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Account limits
/api/v1/agents/credentials:
get:
tags: [A2A]
x-internal: true
summary: Get agent credentials
security:
- BearerAuth: []
responses:
"200":
description: Agent credentials
post:
tags: [A2A]
x-internal: true
summary: Create agent credentials
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Credentials created
/api/v1/agents/health:
get:
tags: [A2A]
x-internal: true
summary: Agent health check
security:
- BearerAuth: []
responses:
"200":
description: Agent health
/api/v1/agents/tasks:
get:
tags: [A2A]
x-internal: true
summary: List agent tasks
security:
- BearerAuth: []
responses:
"200":
description: Agent tasks
post:
tags: [A2A]
x-internal: true
summary: Create agent task
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Task created
/api/v1/agents/tasks/{id}:
get:
tags: [A2A]
x-internal: true
summary: Get agent task
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Task details
patch:
tags: [A2A]
x-internal: true
summary: Update agent task
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Task updated
/api/v1/batches/delete-completed:
post:
tags: [Batches]
x-internal: true
summary: Delete completed batch jobs
security:
- BearerAuth: []
responses:
"200":
description: Completed batches deleted
/api/v1/chatgpt-web/image/{id}:
get:
tags: [Images]
x-internal: true
summary: Retrieve ChatGPT web image (internal)
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Image data
/api/v1/combos:
get:
tags: [Combos]
x-internal: true
summary: List combos (v1 proxy)
security:
- BearerAuth: []
responses:
"200":
description: Combo list
/api/v1/issues/report:
post:
tags: [System]
x-internal: true
summary: Submit issue report
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Issue reported
/api/v1/management/proxies:
get:
tags: [Providers]
x-internal: true
summary: Management proxy list
security:
- BearerAuth: []
- ManagementSessionAuth: []
responses:
"200":
description: Proxy list
post:
tags: [Providers]
x-internal: true
summary: Create management proxy
security:
- BearerAuth: []
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Proxy created
/api/v1/management/proxies/assignments:
get:
tags: [Providers]
x-internal: true
summary: List proxy assignments
security:
- ManagementSessionAuth: []
responses:
"200":
description: Assignments
/api/v1/management/proxies/bulk-assign:
post:
tags: [Providers]
x-internal: true
summary: Bulk assign proxies
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk assignment result
/api/v1/management/proxies/health:
get:
tags: [Providers]
x-internal: true
summary: Management proxy health
security:
- ManagementSessionAuth: []
responses:
"200":
description: Health status
/api/v1/providers/{provider}/limits:
get:
tags: [Providers]
x-internal: true
summary: Get provider-specific rate limits (v1)
security:
- BearerAuth: []
parameters:
- name: provider
in: path
required: true
schema:
type: string
responses:
"200":
description: Rate limits
/api/v1/relay/chat/completions:
post:
tags: [Chat]
x-internal: true
summary: Relay chat completions (internal)
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Relay response
/api/v1/search:
get:
tags: [System]
x-internal: true
summary: Internal search endpoint
security:
- BearerAuth: []
responses:
"200":
description: Search results
/api/v1/search/analytics:
get:
tags: [Analytics]
x-internal: true
summary: Search analytics
security:
- BearerAuth: []
responses:
"200":
description: Search analytics
/api/v1/web/fetch:
post:
tags: [System]
x-internal: true
summary: Web fetch proxy (internal)
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Fetched content
/api/v1/ws:
get:
tags: [System]
x-internal: true
summary: WebSocket upgrade endpoint
security:
- BearerAuth: []
responses:
"101":
description: WebSocket upgrade
/api/version-manager/status:
get:
tags: [Version Manager]
x-internal: true
summary: Version manager status
security:
- ManagementSessionAuth: []
responses:
"200":
description: Version manager state
/api/version-manager/check-update:
get:
tags: [Version Manager]
x-internal: true
summary: Check for updates
security:
- ManagementSessionAuth: []
responses:
"200":
description: Update availability
/api/version-manager/install:
post:
tags: [Version Manager]
x-internal: true
summary: Install update
security:
- ManagementSessionAuth: []
requestBody:
required: false
content:
application/json:
schema:
type: object
responses:
"200":
description: Install initiated
/api/version-manager/start:
post:
tags: [Version Manager]
x-internal: true
summary: Start version manager
security:
- ManagementSessionAuth: []
responses:
"200":
description: Started
/api/version-manager/stop:
post:
tags: [Version Manager]
x-internal: true
summary: Stop version manager
security:
- ManagementSessionAuth: []
responses:
"200":
description: Stopped
/api/version-manager/restart:
post:
tags: [Version Manager]
x-internal: true
summary: Restart version manager
security:
- ManagementSessionAuth: []
responses:
"200":
description: Restarted
/api/models/openrouter-catalog:
get:
tags: [Models]
x-internal: true
summary: OpenRouter model catalog (cached)
security:
- ManagementSessionAuth: []
responses:
"200":
description: Model catalog
/api/models/test:
post:
tags: [Models]
x-internal: true
summary: Test model routing
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Test result
/api/cache/entries:
get:
tags: [System]
x-internal: true
summary: List cache entries
security:
- ManagementSessionAuth: []
responses:
"200":
description: Cache entries
/api/cache/reasoning:
get:
tags: [System]
x-internal: true
summary: Reasoning cache entries
security:
- ManagementSessionAuth: []
responses:
"200":
description: Reasoning cache
/api/context/analytics:
get:
tags: [Settings]
x-internal: true
summary: Context analytics
security:
- ManagementSessionAuth: []
responses:
"200":
description: Context analytics
/api/context/caveman/config:
get:
tags: [Settings]
x-internal: true
summary: Caveman context config
security:
- ManagementSessionAuth: []
responses:
"200":
description: Config
patch:
tags: [Settings]
x-internal: true
summary: Update caveman context config
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Config updated
/api/context/combos:
get:
tags: [Settings]
x-internal: true
summary: List context combos
security:
- ManagementSessionAuth: []
responses:
"200":
description: Context combos
post:
tags: [Settings]
x-internal: true
summary: Create context combo
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Combo created
/api/context/combos/{id}:
get:
tags: [Settings]
x-internal: true
summary: Get context combo
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Context combo
patch:
tags: [Settings]
x-internal: true
summary: Update context combo
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Combo updated
delete:
tags: [Settings]
x-internal: true
summary: Delete context combo
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Combo deleted
/api/context/combos/{id}/assignments:
get:
tags: [Settings]
x-internal: true
summary: Get context combo assignments
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Assignments
post:
tags: [Settings]
x-internal: true
summary: Update context combo assignments
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Assignments updated
/api/middleware/hooks:
get:
tags: [Settings]
x-internal: true
summary: List middleware hooks
security:
- ManagementSessionAuth: []
responses:
"200":
description: Hook list
post:
tags: [Settings]
x-internal: true
summary: Create middleware hook
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Hook created
/api/middleware/hooks/{name}:
get:
tags: [Settings]
x-internal: true
summary: Get middleware hook
security:
- ManagementSessionAuth: []
parameters:
- name: name
in: path
required: true
schema:
type: string
responses:
"200":
description: Hook details
patch:
tags: [Settings]
x-internal: true
summary: Update middleware hook
security:
- ManagementSessionAuth: []
parameters:
- name: name
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Hook updated
delete:
tags: [Settings]
x-internal: true
summary: Delete middleware hook
security:
- ManagementSessionAuth: []
parameters:
- name: name
in: path
required: true
schema:
type: string
responses:
"200":
description: Hook deleted
/api/settings/auto-disable-accounts:
get:
tags: [Settings]
x-internal: true
summary: Get auto-disable accounts settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: Auto-disable settings
patch:
tags: [Settings]
x-internal: true
summary: Update auto-disable accounts settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
/api/settings/background-degradation:
get:
tags: [Settings]
x-internal: true
summary: Get background degradation settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: Degradation settings
patch:
tags: [Settings]
x-internal: true
summary: Update background degradation settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
/api/settings/authz-inventory:
get:
tags: [Settings]
x-internal: true
summary: Get authorization inventory
security:
- ManagementSessionAuth: []
responses:
"200":
description: Authz inventory
/api/settings/cache-metrics:
get:
tags: [Settings]
x-internal: true
summary: Get cache performance metrics
security:
- ManagementSessionAuth: []
responses:
"200":
description: Cache metrics
/api/settings/favicon:
get:
tags: [Settings]
x-internal: true
summary: Get custom favicon setting
security:
- ManagementSessionAuth: []
responses:
"200":
description: Favicon config
post:
tags: [Settings]
x-internal: true
summary: Update custom favicon
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"200":
description: Favicon updated
/api/settings/lkgp-cache:
get:
tags: [Settings]
x-internal: true
summary: Get LKGP cache state
security:
- ManagementSessionAuth: []
responses:
"200":
description: LKGP cache state
delete:
tags: [Settings]
x-internal: true
summary: Clear LKGP cache
security:
- ManagementSessionAuth: []
responses:
"200":
description: Cache cleared
/api/settings/mitm:
get:
tags: [Settings]
x-internal: true
summary: Get MITM proxy settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: MITM settings
patch:
tags: [Settings]
x-internal: true
summary: Update MITM proxy settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
/api/settings/models-dev:
get:
tags: [Settings]
x-internal: true
summary: Get dev model overrides
security:
- ManagementSessionAuth: []
responses:
"200":
description: Dev model overrides
patch:
tags: [Settings]
x-internal: true
summary: Update dev model overrides
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Overrides updated
/api/settings/oneproxy:
get:
tags: [Settings]
x-internal: true
summary: Get OneProxy settings
security:
- ManagementSessionAuth: []
responses:
"200":
description: OneProxy settings
patch:
tags: [Settings]
x-internal: true
summary: Update OneProxy settings
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Settings updated
/api/settings/oneproxy/rotate:
post:
tags: [Settings]
x-internal: true
summary: Rotate OneProxy credentials
security:
- ManagementSessionAuth: []
responses:
"200":
description: Credentials rotated
/api/settings/proxies:
get:
tags: [Settings]
x-internal: true
summary: List proxy configurations
security:
- ManagementSessionAuth: []
responses:
"200":
description: Proxy configurations
post:
tags: [Settings]
x-internal: true
summary: Create proxy configuration
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Proxy created
/api/settings/proxies/assignments:
get:
tags: [Settings]
x-internal: true
summary: List proxy assignments
security:
- ManagementSessionAuth: []
responses:
"200":
description: Proxy assignments
post:
tags: [Settings]
x-internal: true
summary: Update proxy assignments
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Assignments updated
/api/settings/proxies/bulk-assign:
post:
tags: [Settings]
x-internal: true
summary: Bulk assign proxies
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk assignment result
/api/settings/proxies/bulk-import:
post:
tags: [Settings]
x-internal: true
summary: Bulk import proxy configurations
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/settings/proxies/health:
get:
tags: [Settings]
x-internal: true
summary: Proxy configuration health check
security:
- ManagementSessionAuth: []
responses:
"200":
description: Health status
/api/settings/proxies/migrate:
post:
tags: [Settings]
x-internal: true
summary: Migrate proxy configurations
security:
- ManagementSessionAuth: []
responses:
"200":
description: Migration result
/api/settings/purge-detailed-logs:
post:
tags: [Settings]
x-internal: true
summary: Purge detailed logs
security:
- ManagementSessionAuth: []
responses:
"200":
description: Logs purged
/api/settings/purge-quota-snapshots:
post:
tags: [Settings]
x-internal: true
summary: Purge quota snapshots
security:
- ManagementSessionAuth: []
responses:
"200":
description: Snapshots purged
/api/settings/qdrant/embedding-models:
get:
tags: [Settings]
x-internal: true
summary: List Qdrant embedding models
security:
- ManagementSessionAuth: []
responses:
"200":
description: Embedding model list
/api/settings/compression/rules:
get:
tags: [Settings]
x-internal: true
summary: Get compression rules (settings sub-path)
security:
- ManagementSessionAuth: []
responses:
"200":
description: Compression rules
/api/keys/groups:
get:
tags: [API Keys]
x-internal: true
summary: List API key groups
security:
- ManagementSessionAuth: []
responses:
"200":
description: Key groups
post:
tags: [API Keys]
x-internal: true
summary: Create API key group
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Group created
/api/keys/groups/{id}:
get:
tags: [API Keys]
x-internal: true
summary: Get API key group
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Group details
patch:
tags: [API Keys]
x-internal: true
summary: Update API key group
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Group updated
delete:
tags: [API Keys]
x-internal: true
summary: Delete API key group
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Group deleted
/api/keys/groups/{id}/keys:
get:
tags: [API Keys]
x-internal: true
summary: List keys in group
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Keys in group
post:
tags: [API Keys]
x-internal: true
summary: Add key to group
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Key added
/api/keys/groups/{id}/permissions:
get:
tags: [API Keys]
x-internal: true
summary: Get group permissions
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Permissions
patch:
tags: [API Keys]
x-internal: true
summary: Update group permissions
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Permissions updated
/api/keys/{id}/regenerate:
post:
tags: [API Keys]
x-internal: true
summary: Regenerate API key secret
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: New key value
/api/keys/{id}/reveal:
post:
tags: [API Keys]
x-internal: true
summary: Reveal API key value
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Key value (one-time reveal)
/api/resilience/model-cooldowns:
get:
tags: [System]
x-internal: true
summary: List model cooldown state
security:
- ManagementSessionAuth: []
responses:
"200":
description: Model cooldown entries
/api/a2a/status:
get:
tags: [A2A]
x-internal: true
summary: A2A server status
security:
- ManagementSessionAuth: []
responses:
"200":
description: A2A status
/api/a2a/tasks:
get:
tags: [A2A]
x-internal: true
summary: List A2A tasks
security:
- ManagementSessionAuth: []
responses:
"200":
description: A2A task list
post:
tags: [A2A]
x-internal: true
summary: Create A2A task
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Task created
/api/a2a/tasks/{id}:
get:
tags: [A2A]
x-internal: true
summary: Get A2A task
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Task details
/api/a2a/tasks/{id}/cancel:
post:
tags: [A2A]
x-internal: true
summary: Cancel A2A task
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Task cancelled
/api/acp/agents:
get:
tags: [A2A]
x-internal: true
summary: List ACP agents
security:
- ManagementSessionAuth: []
responses:
"200":
description: Agent list
/api/db/health:
get:
tags: [System]
x-internal: true
summary: Database health check
security:
- ManagementSessionAuth: []
responses:
"200":
description: DB health
/api/evals/suites:
get:
tags: [Evals]
x-internal: true
summary: List eval suites
security:
- ManagementSessionAuth: []
responses:
"200":
description: Suite list
post:
tags: [Evals]
x-internal: true
summary: Create eval suite
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Suite created
/api/evals/suites/{suiteId}:
get:
tags: [Evals]
x-internal: true
summary: Get eval suite details
security:
- ManagementSessionAuth: []
parameters:
- name: suiteId
in: path
required: true
schema:
type: string
responses:
"200":
description: Suite details
patch:
tags: [Evals]
x-internal: true
summary: Update eval suite
security:
- ManagementSessionAuth: []
parameters:
- name: suiteId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Suite updated
/api/files:
get:
tags: [Files]
x-internal: true
summary: List files (management view)
security:
- ManagementSessionAuth: []
responses:
"200":
description: File list
post:
tags: [Files]
x-internal: true
summary: Upload file (management)
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"201":
description: File uploaded
/api/files/{id}/content:
get:
tags: [Files]
x-internal: true
summary: Get file content (management)
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: File content
/api/batches:
get:
tags: [Batches]
x-internal: true
summary: List batch jobs (management)
security:
- ManagementSessionAuth: []
responses:
"200":
description: Batch list
post:
tags: [Batches]
x-internal: true
summary: Create batch job (management)
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Batch created
/api/batches/{id}:
get:
tags: [Batches]
x-internal: true
summary: Get batch job (management)
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Batch details
delete:
tags: [Batches]
x-internal: true
summary: Delete batch job (management)
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Batch deleted
/api/internal/codex-responses-ws:
get:
tags: [System]
x-internal: true
summary: Codex responses WebSocket (internal)
security:
- BearerAuth: []
responses:
"101":
description: WebSocket upgrade
/api/openapi/try:
post:
tags: [System]
x-internal: true
summary: Try It — execute an API request via proxy
description: Internal endpoint used by the API Explorer "Try It" feature.
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
method:
type: string
path:
type: string
body:
type: object
responses:
"200":
description: Try result
/api/pricing/sync:
post:
tags: [Pricing]
x-internal: true
summary: Sync pricing data
security:
- ManagementSessionAuth: []
responses:
"200":
description: Pricing synced
/api/auth/status:
get:
tags: [System]
x-internal: true
summary: Auth session status
security:
- ManagementSessionAuth: []
responses:
"200":
description: Auth status
/api/model-combo-mappings:
get:
tags: [Combos]
x-internal: true
summary: List model combo mappings
security:
- ManagementSessionAuth: []
responses:
"200":
description: Mappings
post:
tags: [Combos]
x-internal: true
summary: Create model combo mapping
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"201":
description: Mapping created
/api/model-combo-mappings/{id}:
patch:
tags: [Combos]
x-internal: true
summary: Update model combo mapping
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Mapping updated
delete:
tags: [Combos]
x-internal: true
summary: Delete model combo mapping
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Mapping deleted
/api/combos/builder/options:
get:
tags: [Combos]
x-internal: true
summary: Combo builder options
security:
- ManagementSessionAuth: []
responses:
"200":
description: Builder options
/api/combos/reorder:
patch:
tags: [Combos]
x-internal: true
summary: Reorder combos
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Reordered
/api/providers/claude-auth/import:
post:
tags: [Providers]
x-internal: true
summary: Import Claude auth session
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/providers/claude-auth/import-bulk:
post:
tags: [Providers]
x-internal: true
summary: Bulk import Claude auth sessions
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk import result
/api/providers/claude-auth/zip-extract:
post:
tags: [Providers]
x-internal: true
summary: Extract Claude auth ZIP
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"200":
description: Extract result
/api/providers/codex-auth/import:
post:
tags: [Providers]
x-internal: true
summary: Import Codex auth session
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/providers/codex-auth/import-bulk:
post:
tags: [Providers]
x-internal: true
summary: Bulk import Codex auth sessions
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk import result
/api/providers/codex-auth/zip-extract:
post:
tags: [Providers]
x-internal: true
summary: Extract Codex auth ZIP
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"200":
description: Extract result
/api/providers/command-code/auth/start:
post:
tags: [Providers]
x-internal: true
summary: Start Command Code OAuth flow
security:
- ManagementSessionAuth: []
responses:
"200":
description: OAuth flow started
/api/providers/command-code/auth/callback:
get:
tags: [Providers]
x-internal: true
summary: Command Code OAuth callback
responses:
"302":
description: OAuth redirect
/api/providers/command-code/auth/apply:
post:
tags: [Providers]
x-internal: true
summary: Apply Command Code OAuth token
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Token applied
/api/providers/command-code/auth/status:
get:
tags: [Providers]
x-internal: true
summary: Command Code OAuth status
security:
- ManagementSessionAuth: []
responses:
"200":
description: OAuth status
/api/providers/gemini-cli-auth/import:
post:
tags: [Providers]
x-internal: true
summary: Import Gemini CLI auth session
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/providers/gemini-cli-auth/import-bulk:
post:
tags: [Providers]
x-internal: true
summary: Bulk import Gemini CLI auth sessions
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Bulk import result
/api/providers/gemini-cli-auth/zip-extract:
post:
tags: [Providers]
x-internal: true
summary: Extract Gemini CLI auth ZIP
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
responses:
"200":
description: Extract result
/api/providers/{id}/claude-auth/apply-local:
post:
tags: [Providers]
x-internal: true
summary: Apply local Claude auth to provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Auth applied
/api/providers/{id}/claude-auth/export:
post:
tags: [Providers]
x-internal: true
summary: Export Claude auth from provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Auth exported
/api/providers/{id}/codex-auth/apply-local:
post:
tags: [Providers]
x-internal: true
summary: Apply local Codex auth to provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Auth applied
/api/providers/{id}/codex-auth/export:
post:
tags: [Providers]
x-internal: true
summary: Export Codex auth from provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Auth exported
/api/providers/{id}/gemini-cli-auth/apply-local:
post:
tags: [Providers]
x-internal: true
summary: Apply local Gemini CLI auth to provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Auth applied
/api/providers/{id}/gemini-cli-auth/export:
post:
tags: [Providers]
x-internal: true
summary: Export Gemini CLI auth from provider
security:
- ManagementSessionAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: Auth exported
/api/providers/zed/import:
post:
tags: [Providers]
x-internal: true
summary: Import Zed auth session
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/providers/zed/manual-import:
post:
tags: [Providers]
x-internal: true
summary: Manual Zed auth import
security:
- ManagementSessionAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Import result
/api/skills/skillssh:
get:
tags: [Skills]
x-internal: true
summary: SkillSSH status
security:
- ManagementSessionAuth: []
responses:
"200":
description: SkillSSH status
/api/skills/skillssh/install:
post:
tags: [Skills]
x-internal: true
summary: Install SkillSSH
security:
- ManagementSessionAuth: []
responses:
"200":
description: SkillSSH installed
/api/translator/transform-stream:
post:
tags: [Translator]
x-internal: true
summary: Transform stream (internal)
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
"200":
description: Transform result
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: API key obtained from the OmniRoute dashboard
ManagementSessionAuth:
type: apiKey
in: cookie
name: auth_token
description: Dashboard management session cookie for protected management routes
parameters:
ResourceId:
name: id
in: path
required: true
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Unauthorized
ManagementAuthenticationRequired:
description: Authentication required for management routes
content:
application/json:
schema:
$ref: "#/components/schemas/ApiErrorResponse"
example:
error:
message: Authentication required
type: invalid_request
requestId: 3f9f6f5a-509a-4b35-b0a7-2d2d99d73a01
ManagementInvalidToken:
description: Bearer tokens are not accepted for management routes
content:
application/json:
schema:
$ref: "#/components/schemas/ApiErrorResponse"
example:
error:
message: Invalid management token
type: invalid_request
requestId: 1b6a6ff8-d60c-4900-8d0a-25f81749f0a3
ValidationError:
description: Request body failed validation
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationErrorResponse"
schemas:
ApiErrorResponse:
type: object
properties:
error:
type: object
properties:
message:
type: string
type:
type: string
details:
description: Optional additional error details
requestId:
type: string
format: uuid
ValidationErrorResponse:
type: object
properties:
error:
type: object
required: [message, details]
properties:
message:
type: string
example: Invalid request
details:
type: array
items:
type: object
required: [field, message]
properties:
field:
type: string
message:
type: string
PayloadRuleModelSpec:
type: object
additionalProperties: false
required: [name]
properties:
name:
type: string
minLength: 1
protocol:
type: string
minLength: 1
PayloadMutationRule:
type: object
additionalProperties: false
required: [models, params]
properties:
models:
type: array
minItems: 1
items:
$ref: "#/components/schemas/PayloadRuleModelSpec"
params:
type: object
minProperties: 1
additionalProperties: true
PayloadFilterRule:
type: object
additionalProperties: false
required: [models, params]
properties:
models:
type: array
minItems: 1
items:
$ref: "#/components/schemas/PayloadRuleModelSpec"
params:
type: array
minItems: 1
items:
type: string
minLength: 1
PayloadRulesConfig:
type: object
additionalProperties: false
required: [default, override, filter, defaultRaw]
properties:
default:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
override:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
filter:
type: array
items:
$ref: "#/components/schemas/PayloadFilterRule"
defaultRaw:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
UpdatePayloadRulesRequest:
type: object
additionalProperties: false
description: At least one payload-rules section must be present in the request body.
properties:
default:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
override:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
filter:
type: array
items:
$ref: "#/components/schemas/PayloadFilterRule"
defaultRaw:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
default-raw:
type: array
items:
$ref: "#/components/schemas/PayloadMutationRule"
anyOf:
- required: [default]
- required: [override]
- required: [filter]
- required: [defaultRaw]
- required: [default-raw]
ChatCompletionRequest:
type: object
required: [model, messages]
properties:
model:
type: string
example: gpt-4o
messages:
type: array
items:
type: object
required: [role]
properties:
role:
type: string
description: >-
Message role. The proxy accepts any non-empty string; common values
include system, user, assistant, tool, function, and developer.
example: user
content:
description: >-
Message content. May be a plain string, an array of content parts
for multimodal inputs (text, image, audio, etc.), or null when the
message only carries tool/function calls.
oneOf:
- type: string
- type: array
items:
type: object
- type: "null"
name:
type: string
tool_call_id:
type: string
tool_calls:
type: array
items:
type: object
function_call:
type: object
stream:
type: boolean
default: false
temperature:
type: number
minimum: 0
maximum: 2
max_tokens:
type: integer
top_p:
type: number
minimum: 0
maximum: 1
n:
type: integer
minimum: 1
default: 1
stop:
description: Up to 4 stop sequences (string or array of strings).
oneOf:
- type: string
- type: array
items:
type: string
maxItems: 4
frequency_penalty:
type: number
minimum: -2
maximum: 2
presence_penalty:
type: number
minimum: -2
maximum: 2
seed:
type: integer
logprobs:
type: boolean
top_logprobs:
type: integer
minimum: 0
maximum: 20
response_format:
type: object
description: Output format constraint (e.g. JSON mode or JSON Schema).
properties:
type:
type: string
example: json_object
tools:
type: array
description: Tool definitions available to the model.
items:
type: object
tool_choice:
description: Controls which tool (if any) is invoked by the model.
oneOf:
- type: string
example: auto
- type: object
parallel_tool_calls:
type: boolean
default: true
service_tier:
type: string
example: auto
user:
type: string
description: Stable end-user identifier for abuse monitoring.
ChatCompletionResponse:
type: object
properties:
id:
type: string
object:
type: string
example: chat.completion
choices:
type: array
items:
type: object
properties:
index:
type: integer
message:
type: object
properties:
role:
type: string
content:
type: string
finish_reason:
type: string
usage:
type: object
properties:
prompt_tokens:
type: integer
completion_tokens:
type: integer
total_tokens:
type: integer
MessagesRequest:
type: object
required: [model, messages, max_tokens]
properties:
model:
type: string
example: claude-sonnet-4-5-20250514
messages:
type: array
items:
type: object
required: [role, content]
properties:
role:
type: string
enum: [user, assistant]
content:
type: string
max_tokens:
type: integer
stream:
type: boolean
default: false
system:
type: string
Model:
type: object
properties:
id:
type: string
object:
type: string
example: model
owned_by:
type: string
ProviderConnection:
type: object
properties:
id:
type: string
provider:
type: string
name:
type: string
url:
type: string
isActive:
type: boolean
maxConcurrent:
type: integer
nullable: true
minimum: 0
priority:
type: integer
testStatus:
type: string
enum: [active, error, untested]
createdAt:
type: string
format: date-time
ProviderConnectionCreate:
type: object
required: [provider, url]
properties:
provider:
type: string
example: openai
name:
type: string
url:
type: string
apiKey:
type: string
isActive:
type: boolean
default: true
maxConcurrent:
type: integer
nullable: true
minimum: 0
ApiKey:
type: object
properties:
id:
type: string
label:
type: string
keyPreview:
type: string
description: Last 4 characters of the key
isActive:
type: boolean
createdAt:
type: string
format: date-time
ComboCreate:
type: object
required: [name, model]
properties:
name:
type: string
model:
type: string
strategy:
type: string
enum:
- priority
- weighted
- round-robin
- context-relay
- fill-first
- p2c
- random
- least-used
- cost-optimized
- reset-aware
- strict-random
- auto
- lkgp
- context-optimized
default: priority
nodes:
type: array
items:
type: object
properties:
connectionId:
type: string
weight:
type: integer
priority:
type: integer