Kimi K3
Kimi K3 über die offizielle Chat-Completions-, Responses- oder Anthropic-Messages-API aufrufen: Kontextfenster mit 1M Token, immer aktives Reasoning und frei wählbare Reasoning-Stufe.
Kimi K3 ist das Flaggschiffmodell von Moonshot AI für langfristige Code-Entwicklung, Agenten und Wissensarbeit. Es denkt immer nach, bevor es antwortet, und mit reasoning_effort legst du fest, wie gründlich. Sende die offizielle Kimi-Anfrage an SeedRouter: Ändere die Basis-URL und den API-Schlüssel, behalte den Body bei.
Modell-ID
| Modell-ID | Kontextfenster | Maximale Ausgabe | Reasoning-Stufe | Standard-Reasoning-Stufe |
|---|---|---|---|---|
kimi-k3 | 1,048,576 Token | 1,048,576 Token (Standard 131,072) | low, high, max | max |
Eingabe: Text und Bilder. Ausgabe: Text. Die aktuellen Preise findest du auf der Modellseite.
Kurzbeispiel
curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [{"role": "user", "content": "Explain context caching in one sentence."}]
}'Endpunkte
| Format | Methode und Pfad | Authentifizierung |
|---|---|---|
| Chat Completions | POST https://api.seedrouter.ai/v1/chat/completions | Authorization: Bearer <key> |
| Responses | POST https://api.seedrouter.ai/v1/responses | Authorization: Bearer <key> |
| Anthropic Messages | POST https://api.seedrouter.ai/v1/messages | x-api-key: <key> oder Authorization: Bearer <key>, plus anthropic-version |
Alle drei geben das offizielle Antwortformat von Kimi zurück, mit oder ohne Streaming. Bewahre den API-Schlüssel in serverseitigem Code auf.
Parameter
Felder für Chat Completions:
| Name | Typ | Erforderlich | Standard | Hinweise |
|---|---|---|---|---|
model | string | Ja | — | kimi-k3. |
messages | object[] | Ja | — | Textnachrichten; Bilder als image_url-Teile (siehe Bildeingabe). |
max_completion_tokens | integer | Nein | 131072 | Bis zu 1048576. Umfasst Reasoning-Token. max_tokens ist der veraltete Name für dasselbe Limit. |
reasoning_effort | enum | Nein | max | low, high oder max. Jeder andere Wert gibt 400 zurück. |
stop | string or string[] | Nein | — | Bis zu 5 Sequenzen. |
response_format | object | Nein | {"type": "text"} | text, json_object oder json_schema (mit json_schema.name und json_schema.schema). |
tools | object[] | Nein | — | Function-Tools. |
tool_choice | string or object | Nein | auto | auto und none werden angewendet. required und eine benannte Funktion werden akzeptiert, erzwingen aber keinen Aufruf. |
stream | boolean | Nein | false | Streamt Server-Sent Events. |
stream_options.include_usage | boolean | Nein | false | Fügt den abschließenden Nutzungs-Chunk hinzu. |
prompt_cache_options | object | Nein | {"mode": "implicit", "ttl": "5m"} | mode: implicit. ttl: 5m oder 1h. |
prompt_cache_key, safety_identifier, prediction | — | Nein | — | Werden akzeptiert. |
logprobs, top_logprobs | — | Nein | — | Werden akzeptiert (top_logprobs 0–20), aber es werden keine Log-Wahrscheinlichkeiten zurückgegeben. |
temperature, top_p, n, presence_penalty, frequency_penalty | — | Nein | 1.0, 0.95, 1, 0, 0 | Fest. Jeder andere Wert gibt 400 zurück, lass sie also weg. |
Reasoning und Reasoning-Stufe
Kimi K3 nutzt immer Reasoning; es lässt sich nicht abschalten. reasoning_effort legt fest, wie viel: max (Standard) für die schwierigste Arbeit, high für die meisten Aufgaben, low für schnelle, einfache Schritte. Das Reasoning kommt in reasoning_content zurück, neben content. Reasoning-Token werden als Output-Token berechnet und zählen zu max_completion_tokens.
Sende in Multi-Turn-Konversationen und bei Tool-Aufrufen jede Assistant-Nachricht unverändert zurück, einschließlich ihres reasoning_content.
Bildeingabe
Kimi K3 nimmt Bilder als base64-Data-URIs entgegen. Eine öffentliche Bild-URL wird nicht akzeptiert und gibt 400 zurück, wie bei Kimis eigener API.
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64_DATA>"}},
{"type": "text", "text": "Describe this image."}
]}Kontext-Caching
Caching erfolgt automatisch: Ein wiederholtes Prompt-Präfix wird zum niedrigeren Tarif für gecachte Eingabe aus dem Cache gelesen. prompt_cache_options.ttl bestimmt, wie lange ein geschriebenes Präfix im Cache bleibt, 5m (Standard) oder 1h; wähle 1h, wenn zwischen deinen Anfragen mehr als fünf Minuten liegen. usage.prompt_tokens_details.cached_tokens meldet die aus dem Cache gelesenen Token und cache_write_tokens die für die Anfrage berechneten Cache-Schreibvorgänge.
Abrechnungsdimensionen
Siehe die aktuellen Tarife auf der Modellseite. Eine Anfrage wird nach den Token berechnet, die sie verbraucht:
- Input-Token,
- gecachte Input-Token (
cached_tokens), - Cache-Write-Token (
cache_write_tokens), - Output-Token, einschließlich Reasoning.
Die Preise ändern sich nicht mit der Kontextlänge. Die Gebühr wird der usage entnommen, die mit der fertigen Antwort gemeldet wird. Eine fehlgeschlagene Anfrage wird nicht berechnet. Die Nutzungsdatensätze deines Kontos zeigen die genaue Gebühr für jede Anfrage.
Ausgabe
Eine Non-Streaming-Anfrage an Chat Completions gibt Folgendes zurück:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1790585961,
"model": "kimi-k3",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "reasoning_content": "...", "content": "..."}
}],
"usage": {
"prompt_tokens": 90,
"completion_tokens": 57,
"total_tokens": 147,
"cached_tokens": 90,
"prompt_tokens_details": {"cached_tokens": 90, "cache_write_tokens": 0}
}
}Mit "stream": true enthält jeder Chunk ein delta mit reasoning_content oder content. Mit stream_options.include_usage liefert ein letzter Chunk mit leerem choices-Array die Nutzung vor data: [DONE].
Responses API und Codex
POST /v1/responses nimmt den Responses-Body entgegen: input, instructions, max_output_tokens, reasoning.effort (low, high, max), text.format (json_schema), tools (function und das benutzerdefinierte Tool apply_patch), tool_choice, stream, prompt_cache_options, prompt_cache_key und safety_identifier. Das Reasoning kommt als reasoning-Item mit einem summary_text-Teil zurück, und ein Stream liefert nummerierte Events von response.created bis response.completed. Die API ist zustandslos: previous_response_id und conversation werden ignoriert, sende also die gesamte Konversation in input. Das Tool web_search wird ignoriert.
Um Kimi K3 in Codex zu verwenden, füge in ~/.codex/config.toml einen Provider hinzu und setze SEEDROUTER_API_KEY:
model = "kimi-k3"
model_provider = "seedrouter"
model_context_window = 1048576
[model_providers.seedrouter]
name = "SeedRouter"
base_url = "https://api.seedrouter.ai/v1"
env_key = "SEEDROUTER_API_KEY"
wire_api = "responses"Anthropic-Messages-Format
Auch Code, der für die Anthropic Messages API geschrieben wurde, kann Kimi K3 aufrufen: Sende den Messages-Body an /v1/messages mit "model": "kimi-k3". system, max_tokens, tools, tool_choice (auto, none) und output_config.effort (low, high, max) werden angewendet, metadata.user_id und cache_control werden akzeptiert. stop_sequences (bis zu 5), tool_choice any und output_config.format werden akzeptiert, haben aber keine Wirkung. Das Reasoning kommt als thinking-Blöcke zurück. Bilder werden als base64-Quellen übergeben.
Fehler
Fehler verwenden {"error": {"code": ..., "message": "..."}} (der Messages-Endpunkt verwendet das Fehlerformat von Anthropic). Der code ist ein Code aus dem gemeinsamen Fehlerkatalog. Fehlgeschlagene Anfragen werden nicht berechnet.
Tipps
- Beginne mit der Reasoning-Stufe
highund wechsle nur bei den schwierigsten Problemen zumax;loweignet sich für schnelle, einfache Schritte. - Setze
max_completion_tokenshoch genug für Reasoning und Antwort: Es ist ein gemeinsames Budget für beide. - Platziere langen, wiederverwendeten Kontext am Anfang des Prompts, damit spätere Anfragen ihn aus dem Cache lesen, und nutze die TTL
1h, wenn zwischen den Anfragen viel Zeit liegt.
