Kimi K2.5 API Sunset August 31, 2026: Migration Guide

Migration Kimi Breaking Change Published August 9, 2026 · 8 min read
Deadline: August 31, 2026 — Moonshot has officially announced that kimi-k2.5 and the entire moonshot-v1 family (8k, 32k, 128k, auto) will stop responding to API calls. New users are already blocked from these model strings. If your codebase still references them, you have 22 days to migrate before production breaks.
Table of Contents

What Is Being Discontinued?

Per Moonshot's official model documentation, the following model strings will return errors after August 31, 2026, 23:59 UTC:

Model StringStatusReplacement
kimi-k2.5Discontinuedkimi-k3
moonshot-v1-8kDiscontinuedkimi-k3
moonshot-v1-32kDiscontinuedkimi-k3
moonshot-v1-128kDiscontinuedkimi-k3
moonshot-v1-autoDiscontinuedkimi-k3

Important: K2.5 open weights on Hugging Face are not affected. This sunset only applies to the Moonshot-hosted API endpoints.

Why Is Moonshot Removing K2.5?

Kimi K3 launched on July 16, 2026, and Moonshot is consolidating its API surface around the new architecture. K3 offers:

From Moonshot's perspective, maintaining two parallel API families creates support overhead and fragments their developer experience. K3 is the future; K2.5 is legacy.

What to Replace It With

For most use cases, simply swap your model string to kimi-k3. However, Moonshot now offers two specialized variants:

Pro tip: If you're unsure which variant to use, start with kimi-k3. It's the direct replacement and handles most workloads well. Benchmark kimi-for-coding on a subset of your code-generation prompts only if you need marginal improvements on programming tasks.

Code Migration: Before & After

Python (OpenAI SDK)

# BEFORE (breaks after August 31)
from openai import OpenAI
client = OpenAI(api_key="YOUR_KIMI_KEY", base_url="https://api.moonshot.cn/v1")

response = client.chat.completions.create(
    model="kimi-k2.5",  # ❌ Deprecated
    messages=[{"role": "user", "content": "Explain quantum computing"}]
)

# AFTER
response = client.chat.completions.create(
    model="kimi-k3",  # ✅ Direct replacement
    messages=[{"role": "user", "content": "Explain quantum computing"}]
)

# OR, for coding workloads:
response = client.chat.completions.create(
    model="kimi-for-coding",  # ✅ Code-optimized
    messages=[{"role": "user", "content": "Refactor this Python function"}]
)

JavaScript / TypeScript

// BEFORE
const response = await fetch('https://api.moonshot.cn/v1/chat/completions', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ' + apiKey, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'kimi-k2.5', // ❌ Deprecated
    messages: [{ role: 'user', content: 'Hello' }]
  })
});

// AFTER
const response = await fetch('https://api.moonshot.cn/v1/chat/completions', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ' + apiKey, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'kimi-k3', // ✅ Direct replacement
    messages: [{ role: 'user', content: 'Hello' }]
  })
});

cURL

# BEFORE
curl https://api.moonshot.cn/v1/chat/completions \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "kimi-k2.5", "messages": [{"role": "user", "content": "Hello"}]}'

# AFTER
curl https://api.moonshot.cn/v1/chat/completions \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "kimi-k3", "messages": [{"role": "user", "content": "Hello"}]}'

Run these commands in your project root to find every reference:

# Search for all deprecated strings
grep -r "kimi-k2.5\|moonshot-v1" --include="*.py" --include="*.js" --include="*.ts" --include="*.json" --include="*.yaml" --include="*.yml" --include="*.env" .

# If you use environment variables for model names
grep -r "KIMI_MODEL\|MOONSHOT_MODEL\|MODEL_NAME" --include="*.env" --include="*.json" .

Don't forget to check:

Testing Your Migration

Before the August 31 deadline, run these validation steps:

  1. Staging test: Deploy your updated code to a staging environment and run your full test suite.
  2. Prompt parity: Send identical prompts to both kimi-k2.5 (before sunset) and kimi-k3 (new). Compare output quality. K3 should be equal or better, but verify edge cases in your domain.
  3. Token count check: K3 uses a different tokenizer. Verify that your token budgeting still holds. A prompt that was 2,000 tokens under K2.5 might be 2,200 under K3.
  4. Latency baseline: Measure response time for your typical prompts. K3 is generally faster, but confirm for your workload.

Pricing Comparison

Good news: K3 is priced identically to K2.5. Your API bill won't change.

ModelInput / 1M tokensOutput / 1M tokensContext
kimi-k2.5$0.50$2.00128K
kimi-k3$0.50$2.00200K
kimi-for-coding$0.50$2.00200K

Using TokenEase to Avoid Future Sunsets

Model sunsets are becoming routine. In 2026 alone, we've seen:

Chasing every migration announcement is unsustainable. TokenEase solves this with a provider-agnostic API gateway:

# TokenEase: future-proof your AI stack
from openai import OpenAI
client = OpenAI(api_key="tk_...", base_url="https://tokenease.io/v1")

# Today: Kimi K3
response = client.chat.completions.create(model="kimi-k3", messages=[...])

# Tomorrow: if Kimi sunsets, swap to GLM-5.1 in one line
response = client.chat.completions.create(model="glm-5.1", messages=[...])

# No new API keys. No new accounts. No migration sprints.
Start your free $1 trial and test Kimi K3 today.
No credit card required. Migration-ready in 10 minutes.
Get Free API Key →

Questions about your specific migration? The TokenEase API supports both kimi-k3 and kimi-for-coding with the same $0.50/$2.00 pricing. Start testing now and beat the August 31 deadline.