# Full example config

Here's a complete, real-world `chatLanguageModels.json` that combines **the `customendpoint` providers from the live `chatLanguageModels.json`**, plus the additional GLM models (`glm-5.3-flash`, `glm-5.3`, `glm-5.2`, `glm-5.1`) that are validated in [docs/models/glm.md](models/glm.md) but not present in every live config. Copy what you need, leave the rest out.

> **⚠️ Reminder:** After adding models, you must also configure the **Utility Small Model** setting in VS Code. Open Settings → search **"Chat: Utility Small Model"** → pick your fastest model (e.g., DeepSeek V4 Flash or MiMo V2.5). Without this, custom-endpoint models may not function correctly. See the [main README](../README.md#4-configure-the-utility-small-model) for details.
>
> **Note:** The `apiKey` fields are left as empty strings — set them via the **Chat: Manage Language Models** UI (Command Palette → right-click provider group → **Update API Key**). After you set a key via the UI, VS Code replaces the empty string with a `${input:chat.lm.secret.<id>}` secret reference.
>
> The live config points Qwen at the local proxy (`:3458`) and MiMo at the local proxy (`:3459`). When using a proxy, align the model `requestBody` overrides with the proxy's behavior: Qwen sends no `requestBody` (the proxy manages `enable_thinking` dynamically); MiMo sends only `temperature` and `top_p` (the proxy injects `thinking: {"type": "disabled"}` on tool turns and leaves it absent on plain chat). OpenRouter lists Qwen 3.8 Max as two frozen snapshots (`qwen/qwen3.8-max` = 0803 and `qwen/qwen3.8-max-0902` = 0902); this DashScope config intentionally uses the provider ID `qwen3.8-max` and does not pretend the OpenRouter slugs are interchangeable.

```json
[
  {
    "name": "Qwen",
    "vendor": "customendpoint",
    "apiKey": "",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "qwen3.8-max",
        "name": "Qwen 3.8 Max (vision)",
        "url": "http://127.0.0.1:3458/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "streaming": true,
        "maxInputTokens": 991000,
        "maxOutputTokens": 131072
      }
    ]
  },
  {
    "name": "Kimi",
    "vendor": "customendpoint",
    "apiKey": "",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "kimi-k3",
        "name": "Kimi K3 (vision)",
        "url": "http://127.0.0.1:3457/v1/chat/completions",
        "requestBody": {
          "temperature": 1,
          "max_tokens": 8192
        },
        "toolCalling": true,
        "vision": true,
        "streaming": true,
        "maxInputTokens": 1000000,
        "maxOutputTokens": 131072
      }
    ]
  },
  {
    "name": "MiMo",
    "vendor": "customendpoint",
    "apiKey": "",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "mimo-v2.5-pro",
        "name": "MiMo V2.5 Pro (text)",
        "url": "http://127.0.0.1:3459/v1/chat/completions",
        "toolCalling": true,
        "vision": false,
        "streaming": true,
        "maxInputTokens": 1048576,
        "maxOutputTokens": 131072,
        "requestBody": {
          "temperature": 1,
          "top_p": 0.95
        }
      },
      {
        "id": "mimo-v2.5",
        "name": "MiMo V2.5 (vision)",
        "url": "http://127.0.0.1:3459/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "streaming": true,
        "maxInputTokens": 1048576,
        "maxOutputTokens": 32768,
        "requestBody": {
          "temperature": 1,
          "top_p": 0.95
        }
      }
    ]
  },
  {
    "name": "MiniMax",
    "vendor": "customendpoint",
    "apiKey": "",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "MiniMax-M3",
        "name": "MiniMax M3 (vision)",
        "url": "https://api.minimax.io/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "streaming": true,
        "maxInputTokens": 1048576,
        "maxOutputTokens": 131072,
        "requestBody": {
          "thinking": { "type": "adaptive" },
          "reasoning_split": true,
          "temperature": 1,
          "top_p": 0.95
        }
      }
    ]
  },
  {
    "name": "GLM",
    "vendor": "customendpoint",
    "apiKey": "",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "glm-5.3-flash",
        "name": "GLM 5.3 Flash (multimodal)",
        "url": "https://api.z.ai/api/paas/v4/chat/completions",
        "toolCalling": true,
        "vision": true,
        "streaming": true,
        "maxInputTokens": 1048576,
        "maxOutputTokens": 131072,
        "requestBody": {
          "thinking": { "type": "enabled" },
          "reasoning_effort": "max",
          "temperature": 1.0,
          "top_p": 0.95
        }
      },
      {
        "id": "glm-5.3",
        "name": "GLM 5.3 (text)",
        "url": "https://api.z.ai/api/paas/v4/chat/completions",
        "toolCalling": true,
        "vision": false,
        "streaming": true,
        "maxInputTokens": 1048576,
        "maxOutputTokens": 131072,
        "requestBody": {
          "thinking": { "type": "enabled" },
          "reasoning_effort": "max",
          "temperature": 1.0,
          "top_p": 0.95
        }
      }
    ]
  }
]
```

## Per-model snippets

If you only need one provider, jump straight to its setup guide:

- [Kimi K3 / K2.6 / K2.7 Code](kimi.md)
- [Qwen 3.8 Max](qwen.md)
- [Xiaomi MiMo (V2.5 / V2.5 Pro)](mimo.md)
- [MiniMax M3 (Standard)](minimax.md) and [MiniMax M3 (Priority)](minimax.md#5-m3-priority-tier-optional)
- [GLM (5.3 Flash / 5.3 / 5.2 / 5.1)](glm.md)

> **DeepSeek V4 Pro 0813 / V4 Flash 0731** use the [DeepSeek V4 for Copilot Chat](https://marketplace.visualstudio.com/items?itemName=Vizards.deepseek-v4-for-copilot) extension. They appear in `chatLanguageModels.json` as `vendor: "deepseek"` (not as a `customendpoint` provider) and are configured via the extension's settings block.
