Search the documentation

Pick a page and open it with Enter.

Models

List the models that /chat accepts.

GET/api/v1/models

Returns the models that /chat and /chat/stream accept as model. No parameters.

Response

json
{
  "count": 9,
  "default": "deepseek-v4-flash",
  "groups": ["OpenAI", "DeepSeek", "Local"],
  "models": [
    {
      "id": "gpt-5.6-sol",
      "name": "GPT-5.6 Sol",
      "description": "Flagship for complex work — reasons hard, uses every tool.",
      "group": "OpenAI",
      "runtime": "openai",
      "reasoning_effort": "high",
      "gated": false
    },
    {
      "id": "gpt-5.6-cyber",
      "name": "GPT-5.6 Cyber",
      "description": "Security model for authorised vulnerability research.",
      "group": "OpenAI",
      "runtime": "openai",
      "reasoning_effort": "high",
      "gated": true
    },
    {
      "id": "deepseek-v4-flash",
      "name": "DeepSeek V4 Flash",
      "description": "Fast and inexpensive — the default for chat.",
      "group": "DeepSeek",
      "runtime": "hosted",
      "reasoning_effort": null,
      "gated": false
    },
    {
      "id": "qwen3",
      "name": "qwen3:8b",
      "description": "Runs locally through Ollama — nothing leaves the machine.",
      "group": "Local",
      "runtime": "local",
      "reasoning_effort": null,
      "gated": false
    }
  ]
}

Fields

countinteger

Number of models in the list.

defaultstring

The id /chat uses when no model is given (deepseek-v4-flash).

models[].idstring

Exactly the value you send as model in the /chat body. Short and stable — a local model is addressed by its short name, not by its full Ollama tag. An unknown id gets a 422 that lists the known ones.

models[].namestring

Display name for the model picker in the frontend.

models[].descriptionstring

Short description shown next to the name.

groupsstring[]

The provider headings, in the order the picker should show them. Derived from the catalogue, so a new provider appears here on its own.

models[].groupstring

Which heading this model belongs under — OpenAI, DeepSeek or Local.

models[].runtimestring

Where it runs: openai (Responses API), hosted (the provider from LLM_PROVIDER) or local (Ollama). local is the one where nothing leaves the machine.

models[].reasoning_effortstring | null

How hard the model thinks before answering — none, low, medium, high, xhigh or max. Only set for the OpenAI models; null everywhere else.

models[].gatedboolean

true when OpenAI has to approve your account for this model first. It stays in the list — the key is there, only the approval is missing — but a request will come back with 'model does not exist' until it is granted.

The list is filtered to what can actually run: without OPENAI_API_KEY the whole OpenAI group is gone, and the Local one only appears when Ollama is enabled (OLLAMA_ENABLED=true), a model is named (OLLAMA_MODEL) and that Ollama is reachable. The local entry's id and tag come straight from OLLAMA_MODEL, so pick a model that can think and call tools. A model that is offered here will not fail on the key.

Using it with /chat

Take an id from this list and send it as model in the chat request.

json
{ "messages": [{ "role": "user", "content": "Hi" }], "model": "deepseek-v4-pro" }
200

List retrieved successfully.