Skip to main content

Model API

/api/models - Model management endpoints

Overview

The Model API provides AI model configuration and management functionality, supporting custom models and provider-predefined models.

Endpoint List

Model CRUD

MethodPathDescription
GET/api/modelsList models
POST/api/modelsCreate custom model
GET/api/models/:idGet model details
PATCH/api/models/:idUpdate model
DELETE/api/models/:idDelete model

Default Model

MethodPathDescription
GET/api/models/defaultGet default model
PUT/api/models/defaultSet default model

Model Status

MethodPathDescription
POST/api/models/:id/enableEnable model
POST/api/models/:id/disableDisable model

Provider Models

MethodPathDescription
GET/api/providers/:id/discover-modelsDiscover available models
GET/api/providers/:id/modelsList enabled models
POST/api/providers/:pid/models/:mid/enableEnable model
POST/api/providers/:pid/models/:mid/disableDisable model

Detailed Description

GET /api/models

List all models.

Query Parameters:

ParameterTypeRequiredDefaultDescription
workspace_pathstringNo-Workspace path
include_globalboolNotrueInclude global models
include_provider_predefinedboolNotrueInclude provider-predefined models

Response:

{
"models": [
{
"id": "claude-3-sonnet",
"name": "Claude 3 Sonnet",
"provider": "anthropic",
"type": "predefined",
"enabled": true,
"is_default": true,
"capabilities": {
"chat": true,
"code": true,
"vision": true,
"tools": true
},
"context_window": 200000,
"max_output_tokens": 4096
},
{
"id": "my-custom-model",
"name": "My Custom Model",
"provider": "openai",
"type": "custom",
"enabled": true,
"base_model": "gpt-4"
}
]
}

POST /api/models

Create a custom model.

Request Body:

{
"id": "my-model",
"name": "My Custom Model",
"provider": "openai",
"base_model": "gpt-4",
"system_prompt": "You are a helpful assistant.",
"temperature": 0.7,
"max_tokens": 4096,
"parameters": {
"top_p": 0.9
}
}
FieldTypeRequiredDescription
idstringNoModel ID (auto-generated)
namestringYesModel name
providerstringYesProvider ID
base_modelstringNoBase model
system_promptstringNoSystem prompt
temperaturefloatNoTemperature parameter
max_tokensintNoMaximum tokens
parametersobjectNoOther parameters

GET /api/models/:id

Get model details.

Response:

{
"id": "claude-3-sonnet",
"name": "Claude 3 Sonnet",
"provider": "anthropic",
"type": "predefined",
"enabled": true,
"is_default": true,
"capabilities": {
"chat": true,
"code": true,
"vision": true,
"tools": true,
"streaming": true
},
"context_window": 200000,
"max_output_tokens": 4096,
"pricing": {
"input_per_1k": 0.003,
"output_per_1k": 0.015
}
}

GET /api/providers/:id/discover-models

Discover available models from a provider.

Response:

{
"models": [
{
"id": "claude-3-opus",
"name": "Claude 3 Opus",
"enabled": false,
"description": "Most capable model"
},
{
"id": "claude-3-sonnet",
"name": "Claude 3 Sonnet",
"enabled": true,
"description": "Balanced model"
},
{
"id": "claude-3-haiku",
"name": "Claude 3 Haiku",
"enabled": true,
"description": "Fast and efficient"
}
]
}

PUT /api/models/default

Set the default model.

Request Body:

{
"model_id": "claude-3-sonnet"
}

Response:

{
"success": true,
"default_model": "claude-3-sonnet"
}

Model Configuration Storage

Model configuration is stored in ~/.viben/models.yaml:

default: claude-3-sonnet

models:
- id: claude-3-sonnet
provider: anthropic
enabled: true

- id: my-custom-model
name: My Custom Model
provider: openai
base_model: gpt-4
temperature: 0.7