Die Moonshot API bleibt OpenAI-kompatibel, doch 2026 haben sich zwei Dinge geändert: Der Konsolenzugang ist auf die Kimi-API-Plattform umgezogen, und die gesamte moonshot-v1-Reihe wurde am 31. August abgeschaltet. Alte Projekte, die ihre Konfiguration unverändert übernehmen, erhalten häufig keine 401, sondern 404 model_not_found. Dieser Artikel folgt dem Ablauf „Seite wählen – Modell wählen – Aufruf zum Laufen bringen – migrieren“. Modelle und Preise richten sich nach den Modellpreisen.
Hinweis: Moonshot und Kimi sind Marken ihrer jeweiligen Inhaber; dieser Artikel dient ausschließlich der technischen Anbindung. Modellliste, Kontextlängen und Parameterregeln können sich ändern; maßgeblich ist die aktuelle offizielle Dokumentation.
1. Der Zugang hat sich geändert, die API-Domain nicht
platform.moonshot.cn leitet inzwischen auf platform.kimi.com weiter, die internationale Seite platform.moonshot.ai auf platform.kimi.ai. Konsole, Konto, Guthaben und Keys werden auf der Kimi-API-Plattform verwaltet.
Die API-Anfragedomain bleibt unverändert: China https://api.moonshot.cn, international https://api.moonshot.ai. Ein Key der China-Seite gehört nur zur China-Domain, international entsprechend. Ist base_url im Code nicht gesetzt, geht die Anfrage möglicherweise an OpenAI oder einen anderen Anbieter; typische Folge ist model_not_found. Merken Sie sich „Konsolenadresse“ und „API-Adresse“ getrennt, dann bleibt die Migration übersichtlich.
2. Drei kompatible Protokolle und ihre Base URLs
- OpenAI Chat Completions: Base URL
https://api.moonshot.cn/v1, Pfad/chat/completions. - OpenAI Responses: gleiche Base URL, Pfad
/responses. - Anthropic Messages: Base URL
https://api.moonshot.cn/anthropic, Pfad/v1/messages. - Modellliste:
GET https://api.moonshot.cn/v1/models.
Auf der internationalen Seite wird die Domain zu api.moonshot.ai, die Pfade bleiben. Beim OpenAI SDK wird base_url bis /v1 angegeben; das SDK ergänzt den Schnittstellenpfad selbst. curl benötigt den vollständigen Pfad. Der Anthropic-Zugang hat kein /v1-Suffix, anders als der OpenAI-Zugang. Laut Dokumentation sind OpenAI SDK ab 1.0.0 sowie Python 3.8+ oder Node.js 18+ erforderlich.
3. Die aktuelle Modellfamilie auswählen
| Modellname | Kontext | Geeignete Aufgaben | Hinweis |
|---|---|---|---|
kimi-k3 |
1M | Komplexe Schlussfolgerungen, lange Dokumente, Agenten, Wissensarbeit | Standard für reasoning_effort ist max |
kimi-k2.7-code |
256K | Codegenerierung, Repository-Fragen, Coding-Agenten | Thinking dauerhaft aktiv, reasoning_effort nicht unterstützt |
kimi-k2.7-code-highspeed |
256K | Vervollständigung mit niedriger Latenz, interaktives Coding | Schnellversion desselben Modells, schnellere Ausgabe |
kimi-k2.6 |
256K | Allgemeine Dialoge, Extraktion, Multimodalität | Unterstützt Thinking- und Nicht-Thinking-Modus |
Bei Unsicherheit zuerst kimi-k3 wählen; für einfache Klassifikation und formatiertes Extrahieren ist kimi-k2.6 oft passender; für Codeaufgaben kommt die K2.7-Code-Reihe in Frage.
Die größte Stolperfalle sind Sampling-Parameter. Die Temperatur ist derzeit fest: 1,0 bei K3 und K2.7 Code; bei K2.6 im Thinking-Modus 1,0, im Nicht-Thinking-Modus 0,6. temperature nicht explizit senden, ein abweichender Wert erzeugt einen Fehler. Auch top_p ist fest auf 0,95 gesetzt und sollte nicht angepasst werden.
4. Erster Aufruf mit curl
export MOONSHOT_API_KEY="Ihr-Schluessel"
curl "https://api.moonshot.cn/v1/chat/completions" \
-H "Authorization: Bearer $MOONSHOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [
{"role": "user", "content": "Antworte nur mit: Anbindung erfolgreich"}
],
"max_completion_tokens": 64
}'
Eine 200 mit erwartetem Inhalt zeigt, dass Key, Seite, Modellname und Pfad stimmen. Bei 401 zuerst prüfen, ob Seite und Key zusammenpassen; bei 404 Modellname, /v1 und eine mögliche Abschaltung prüfen; bei 400 die Fehlermeldung auf Kontext- oder Ausgabelimits prüfen. Manche Integrationen stellen zusätzliche Anforderungen an den Modellnamen; Claude Code benötigt möglicherweise kimi-k3[1m]. Maßgeblich ist die jeweilige Integrationsdokumentation.
5. Python SDK und Streaming
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"],
base_url="https://api.moonshot.cn/v1",
)
stream = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Nennen Sie in drei Punkten, für welche Teams ein API-Gateway geeignet ist"}],
max_completion_tokens=512,
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
if chunk.usage:
print("\nVerbrauch:", chunk.usage)
Streaming-Antworten sind SSE; jede Zeile beginnt mit data: und endet mit data: [DONE]. Mit include_usage kommt vor dem Ende ein weiterer Block mit leerem choices und nur usage. Bei einem Verbindungsabbruch kann dieser Block fehlen; in der Produktion muss serverseitig separat abgerechnet werden.
Bei mehrstufigen Dialogen und Tool-Aufrufen ist der Denkinhalt zu beachten. Bei K3 steht das Ergebnis in reasoning_content, K2.x hat ein ähnliches Feld; bei der Rückgabe der Assistant-Nachricht sollte es unverändert mitgeführt werden. K3 steuert die Intensität über das Top-Level-Feld reasoning_effort; bei K2.x wird thinking über extra_body übergeben. Beide nicht gleichzeitig senden.
6. Migration von moonshot-v1
Die alten Modelle sind abgeschaltet; weitere Aufrufe liefern model_not_found. Die aktuellen Entsprechungen, maßgeblich ist die offizielle Modellliste:
| Altes Modell | Empfohlener Ersatz | Hinweis zur Migration |
|---|---|---|
moonshot-v1-8k/32k/128k/auto |
kimi-k2.6 oder kimi-k3 |
Keine Unterscheidung mehr nach 8K/32K/128K |
moonshot-v1-*-vision-preview |
kimi-k3 oder kimi-k2.6 |
Bilder als image_url-Inhaltsblock |
kimi-k2-Reihe |
kimi-k3 |
Am 25.05.2026 abgeschaltet |
kimi-k2.5 |
kimi-k3 |
Am 31.08.2026 abgeschaltet |
kimi-latest |
kimi-k3 |
Am 28.01.2026 abgeschaltet |
Migrationsschritte:
- Code und Konfiguration global nach alten Modellnamen und
base_urldurchsuchen und eine Ersetzungstabelle anlegen. base_urländern und China- oder internationale Seite bestätigen; bei Seitenwechsel auch den Key tauschen.- Modellnamen ersetzen, standardmäßig
kimi-k3; für kostensensible kurze Aufgabenkimi-k2.6prüfen. max_tokensdurchmax_completion_tokensersetzen. K3 nutzt standardmäßig 131072; die Ausgabegrenze ist 1048576 minus Eingabelänge. Bei K2 liegt das Limit bei etwa 256K minus Eingabelänge.- Eigenes
temperatureundtop_pentfernen und die festen Modellwerte verwenden. - Alte
thinking-Einstellungen auf K3sreasoning_effortumstellen; bei K2.xthinkingüberextra_bodysenden. - Multimodale Inhalte auf
text-,image_url- undvideo_url-Blöcke umstellen. - Streaming-Anfragen um
stream_options={"include_usage": True}ergänzen. - Dieselben echten Aufgaben als Regression laufen lassen, Qualität, Latenz,
finish_reasonund Verbrauch erfassen, dann schrittweise ausrollen und einen Rückfallschalter behalten.
Nicht in einem Schritt vollständig umstellen: zuerst Testumgebung, dann risikoarme Dienste, zuletzt kritische Pfade; jeder Schritt muss rückholbar sein.
7. Checkliste vor dem Produktivstart
- Mit demselben Key
GET /v1/modelsaufrufen und prüfen, ob das Zielmodell in der Liste steht. - Eine minimale nicht-streamende Anfrage senden und 200 sowie korrekten Inhalt bestätigen.
- Eine Streaming-Anfrage senden und inkrementelle Inhalte sowie abschließendes
usageprüfen. finish_reasonkontrollieren: normaler Abschluss iststop, Erreichen des Ausgabelimits istlength.- Mit einem festen Evaluationsset Qualität, Latenz und Token-Verbrauch vor und nach der Migration vergleichen.
- 429-Backoff, Timeouts und Retry-Obergrenzen testen, damit automatische SDK-Wiederholungen die Parallelität nicht aufblähen.
- In Protokollen Zeitpunkt, Modellname, Statuscode und Verbrauch erfassen, um Fehlersuche und Abgleich zu ermöglichen.
8. Häufige Fehlermeldungen
- 401
invalid_authentication_error: Key ungültig oder gelöscht, oder China- und internationale Keys gemischt. Keys der offenen Plattform und von Kimi Code sind ebenfalls nicht austauschbar. - 403
permission_denied_error: Die IP-Whitelist enthält die aktuelle Ausgangs-IP nicht, oder die Projektberechtigung fehlt. - 404
model_not_found:base_urlzeigt nicht auf Moonshot, der Modellname ist falsch, ein abgeschaltetes Modell wird aufgerufen oder/v1fehlt im Pfad. - 400
invalid_request_error: Eingabe plus Ausgabelimit überschreiten den Kontext, oder ein nicht unterstützter Parameter wie eine eigene Temperatur wurde übergeben. - 400
content_filter: Eingabe oder Ausgabe löst die Inhaltsrichtlinie aus; Prompt oder Material anpassen. - 429:
engine_overloaded_errorbedeutet serverseitige Überlast;rate_limit_reached_errorist eine Organisationsgrenze;exceeded_current_quota_errordeutet meist auf zu wenig Guthaben. - 504 oder Verbindungs-Timeout: Nicht-streamende lange Anfragen warten zu lange; lange Texte und Agentenaufgaben möglichst streamen.
Das OpenAI SDK wiederholt fehlgeschlagene Anfragen standardmäßig zweimal; ein Aufruf kann also drei Anfragen erzeugen. Bei Konten mit niedrigem Kontingent zuerst Wiederholungen und Parallelität senken, dann das Kontingent prüfen.
Häufige Fragen
Lässt sich moonshot-v1 weiterhin nutzen?
Nein. Die gesamte moonshot-v1-Reihe wurde am 31. August 2026 abgeschaltet; Aufrufe liefern model_not_found. Bitte auf kimi-k3 oder kimi-k2.6 migrieren.
Bis zu welcher Ebene wird die Base URL angegeben?
Beim OpenAI SDK https://api.moonshot.cn/v1, ohne /chat/completions; bei curl den vollständigen Pfad /v1/chat/completions; beim Anthropic SDK https://api.moonshot.cn/anthropic.
Warum erzeugt die Übergabe von temperature einen Fehler?
Die Temperatur der aktuellen Modelle ist fest: 1,0 bei K3 und K2.7 Code, bei K2.6 je nach Thinking-Modus. Keine eigenen Werte senden; auch top_p ist fest auf 0,95 gesetzt.
Kann ein Key der China-Seite die internationale Seite aufrufen?
Nein. Konten, Guthaben und Keys beider Seiten sind regional getrennt; eine Mischung liefert meist 401. Beim Seitenwechsel müssen Key, Base URL und Modellname gemeinsam geändert werden.
Warum fehlt nach dem Streaming das usage-Feld?
stream_options={"include_usage": True} muss ausdrücklich gesetzt werden. Auch dann kann der letzte Block bei einem Verbindungsabbruch fehlen; in der Produktion serverseitig separat zählen.
Nächste Schritte
Legen Sie im ZSQH AI Gateway einen Test-Key an und führen Sie je eine echte Aufgabe mit kimi-k3 und kimi-k2.6 aus. Erst nach bestätigter Kette in die Produktion gehen. Verfügbare Modelle und Abrechnung richten sich nach den Modellpreisen.
Verwandte Artikel:
