Skip to main content

Moonshot AI (Kimi)

Moonshot provides the Kimi API with OpenAI-compatible endpoints. Configure the provider and set the default model to moonshot/kimi-k2.5, or use Kimi Coding with kimi/kimi-code. Current Kimi K2 model IDs:
  • kimi-k2.5
  • kimi-k2-thinking
  • kimi-k2-thinking-turbo
  • kimi-k2-turbo
openclaw onboard --auth-choice moonshot-api-key
# or
openclaw onboard --auth-choice moonshot-api-key-cn
Kimi Coding:
openclaw onboard --auth-choice kimi-code-api-key
Note: Moonshot and Kimi Coding are separate providers. Keys are not interchangeable, endpoints differ, and model refs differ (Moonshot uses moonshot/..., Kimi Coding uses kimi/...). Kimi web search uses the Moonshot plugin too:
openclaw configure --section web
Choose Kimi in the web-search section to store plugins.entries.moonshot.config.webSearch.*.

Config snippet (Moonshot API)

{
  env: { MOONSHOT_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: { primary: "moonshot/kimi-k2.5" },
      models: {
        // moonshot-kimi-k2-aliases:start
        "moonshot/kimi-k2.5": { alias: "Kimi K2.5" },
        "moonshot/kimi-k2-thinking": { alias: "Kimi K2 Thinking" },
        "moonshot/kimi-k2-thinking-turbo": { alias: "Kimi K2 Thinking Turbo" },
        "moonshot/kimi-k2-turbo": { alias: "Kimi K2 Turbo" },
        // moonshot-kimi-k2-aliases:end
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      moonshot: {
        baseUrl: "https://api.moonshot.ai/v1",
        apiKey: "${MOONSHOT_API_KEY}",
        api: "openai-completions",
        models: [
          // moonshot-kimi-k2-models:start
          {
            id: "kimi-k2.5",
            name: "Kimi K2.5",
            reasoning: false,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 262144,
            maxTokens: 262144,
          },
          {
            id: "kimi-k2-thinking",
            name: "Kimi K2 Thinking",
            reasoning: true,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 262144,
            maxTokens: 262144,
          },
          {
            id: "kimi-k2-thinking-turbo",
            name: "Kimi K2 Thinking Turbo",
            reasoning: true,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 262144,
            maxTokens: 262144,
          },
          {
            id: "kimi-k2-turbo",
            name: "Kimi K2 Turbo",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 256000,
            maxTokens: 16384,
          },
          // moonshot-kimi-k2-models:end
        ],
      },
    },
  },
}

Kimi Coding

{
  env: { KIMI_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: { primary: "kimi/kimi-code" },
      models: {
        "kimi/kimi-code": { alias: "Kimi" },
      },
    },
  },
}
OpenClaw also ships Kimi as a web_search provider, backed by Moonshot web search. Interactive setup can prompt for:
  • the Moonshot API region:
    • https://api.moonshot.ai/v1
    • https://api.moonshot.cn/v1
  • the default Kimi web-search model (defaults to kimi-k2.5)
Config lives under plugins.entries.moonshot.config.webSearch:
{
  plugins: {
    entries: {
      moonshot: {
        config: {
          webSearch: {
            apiKey: "sk-...", // or use KIMI_API_KEY / MOONSHOT_API_KEY
            baseUrl: "https://api.moonshot.ai/v1",
            model: "kimi-k2.5",
          },
        },
      },
    },
  },
  tools: {
    web: {
      search: {
        provider: "kimi",
      },
    },
  },
}

Notes

  • Moonshot model refs use moonshot/<modelId>. Kimi Coding model refs use kimi/<modelId>.
  • Current Kimi Coding default model ref is kimi/kimi-code. Legacy kimi/k2p5 remains accepted as a compatibility model id.
  • Kimi web search uses KIMI_API_KEY or MOONSHOT_API_KEY, and defaults to https://api.moonshot.ai/v1 with model kimi-k2.5.
  • Native Moonshot endpoints (https://api.moonshot.ai/v1 and https://api.moonshot.cn/v1) advertise streaming usage compatibility on the shared openai-completions transport. OpenClaw now keys that off endpoint capabilities, so compatible custom provider ids targeting the same native Moonshot hosts inherit the same streaming-usage behavior.
  • Override pricing and context metadata in models.providers if needed.
  • If Moonshot publishes different context limits for a model, adjust contextWindow accordingly.
  • Use https://api.moonshot.ai/v1 for the international endpoint, and https://api.moonshot.cn/v1 for the China endpoint.
  • Onboarding choices:
    • moonshot-api-key for https://api.moonshot.ai/v1
    • moonshot-api-key-cn for https://api.moonshot.cn/v1

Native thinking mode (Moonshot)

Moonshot Kimi supports binary native thinking:
  • thinking: { type: "enabled" }
  • thinking: { type: "disabled" }
Configure it per model via agents.defaults.models.<provider/model>.params:
{
  agents: {
    defaults: {
      models: {
        "moonshot/kimi-k2.5": {
          params: {
            thinking: { type: "disabled" },
          },
        },
      },
    },
  },
}
OpenClaw also maps runtime /think levels for Moonshot:
  • /think off -> thinking.type=disabled
  • any non-off thinking level -> thinking.type=enabled
When Moonshot thinking is enabled, tool_choice must be auto or none. OpenClaw normalizes incompatible tool_choice values to auto for compatibility.