Kimi K3
Appelez Kimi K3 avec l'API officielle Chat Completions, Responses ou Anthropic Messages : une fenêtre de contexte de 1M tokens, un raisonnement toujours actif et le niveau de raisonnement de votre choix.
Kimi K3 est le modèle phare de Moonshot AI pour le codage sur de longues durées, les agents et le travail intellectuel. Il raisonne toujours avant de répondre, et vous choisissez l'intensité avec reasoning_effort. Envoyez la requête Kimi officielle à SeedRouter : changez l'URL de base et la clé API, conservez le corps.
ID de modèle
| ID de modèle | Fenêtre de contexte | Sortie maximale | Niveau de raisonnement | Niveau de raisonnement par défaut |
|---|---|---|---|---|
kimi-k3 | 1,048,576 tokens | 1,048,576 tokens (131,072 par défaut) | low, high, max | max |
Entrée : texte et images. Sortie : texte. Consultez la page du modèle pour les tarifs actuels.
Exemple rapide
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."}]
}'Points de terminaison
| Format | Méthode et chemin | Authentification |
|---|---|---|
| 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> ou Authorization: Bearer <key>, plus anthropic-version |
Les trois renvoient le format de réponse officiel de Kimi, en streaming ou non. Conservez la clé API dans le code côté serveur.
Paramètres
Champs Chat Completions :
| Nom | Type | Requis | Par défaut | Remarques |
|---|---|---|---|---|
model | string | Oui | — | kimi-k3. |
messages | object[] | Oui | — | Messages texte ; images sous forme de parties image_url (voir Entrée image). |
max_completion_tokens | integer | Non | 131072 | Jusqu'à 1048576. Inclut les tokens de raisonnement. max_tokens est l'ancien nom, obsolète, de la même limite. |
reasoning_effort | enum | Non | max | low, high ou max. Toute autre valeur renvoie 400. |
stop | string or string[] | Non | — | Jusqu'à 5 séquences. |
response_format | object | Non | {"type": "text"} | text, json_object ou json_schema (avec json_schema.name et json_schema.schema). |
tools | object[] | Non | — | Outils de type fonction. |
tool_choice | string or object | Non | auto | auto et none sont appliqués. required et une fonction nommée sont acceptés mais ne forcent pas d'appel. |
stream | boolean | Non | false | Envoie des événements côté serveur (server-sent events). |
stream_options.include_usage | boolean | Non | false | Ajoute le chunk d'usage final. |
prompt_cache_options | object | Non | {"mode": "implicit", "ttl": "5m"} | mode : implicit. ttl : 5m ou 1h. |
prompt_cache_key, safety_identifier, prediction | — | Non | — | Acceptés. |
logprobs, top_logprobs | — | Non | — | Acceptés (top_logprobs de 0 à 20), mais aucune probabilité logarithmique n'est renvoyée. |
temperature, top_p, n, presence_penalty, frequency_penalty | — | Non | 1.0, 0.95, 1, 0, 0 | Fixes. Toute autre valeur renvoie 400 : ne les envoyez pas. |
Raisonnement et niveau de raisonnement
Kimi K3 raisonne toujours ; il est impossible de désactiver le raisonnement. reasoning_effort fixe son intensité : max (par défaut) pour le travail le plus difficile, high pour la plupart des tâches, low pour les étapes simples et rapides. Le raisonnement est renvoyé dans reasoning_content, à côté de content. Les tokens de raisonnement sont facturés comme des tokens de sortie et comptent dans max_completion_tokens.
Dans les conversations à plusieurs tours et les appels d'outils, renvoyez chaque message assistant sans le modifier, y compris son reasoning_content.
Entrée image
Kimi K3 accepte les images sous forme de data URI base64. Une URL d'image publique n'est pas acceptée et renvoie 400, comme sur l'API de Kimi.
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64_DATA>"}},
{"type": "text", "text": "Describe this image."}
]}Mise en cache du contexte
La mise en cache est automatique : un préfixe de prompt répété est lu depuis le cache au tarif réduit de l'entrée en cache. prompt_cache_options.ttl choisit combien de temps un préfixe écrit reste en cache, 5m (par défaut) ou 1h ; choisissez 1h lorsque vos requêtes sont espacées de plus de cinq minutes. usage.prompt_tokens_details.cached_tokens indique les tokens lus depuis le cache et cache_write_tokens les écritures en cache facturées pour la requête.
Dimensions de facturation
Consultez les tarifs actuels sur la page du modèle. Une requête est facturée en fonction des tokens qu'elle utilise :
- tokens d'entrée,
- tokens d'entrée en cache (
cached_tokens), - tokens d'écriture en cache (
cache_write_tokens), - tokens de sortie, y compris le raisonnement.
Les prix ne varient pas avec la longueur du contexte. Le montant est calculé à partir de l'usage renvoyé avec la réponse terminée. Une requête qui échoue n'est pas facturée. Les enregistrements d'usage de votre compte indiquent le montant exact de chaque requête.
Sortie
Une requête Chat Completions non-streaming renvoie :
{
"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}
}
}Avec "stream": true, chaque chunk contient un delta avec reasoning_content ou content. Avec stream_options.include_usage, un dernier chunk avec un tableau choices vide porte l'usage avant data: [DONE].
API Responses et Codex
POST /v1/responses accepte le corps Responses : input, instructions, max_output_tokens, reasoning.effort (low, high, max), text.format (json_schema), tools (function et l'outil personnalisé apply_patch), tool_choice, stream, prompt_cache_options, prompt_cache_key et safety_identifier. Le raisonnement est renvoyé sous forme d'élément reasoning avec une partie summary_text, et un flux transporte des événements numérotés de response.created à response.completed. L'API est sans état : previous_response_id et conversation sont ignorés, envoyez donc toute la conversation dans input. L'outil web_search est ignoré.
Pour utiliser Kimi K3 dans Codex, ajoutez un provider à ~/.codex/config.toml et définissez 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"Format Anthropic Messages
Le code écrit pour l'API Anthropic Messages peut aussi appeler Kimi K3 : envoyez le corps Messages à /v1/messages avec "model": "kimi-k3". system, max_tokens, tools, tool_choice (auto, none) et output_config.effort (low, high, max) sont appliqués, et metadata.user_id et cache_control sont acceptés. stop_sequences (jusqu'à 5), tool_choice any et output_config.format sont acceptés mais n'ont aucun effet. Le raisonnement est renvoyé sous forme de blocs thinking. Les images sont transmises comme sources base64.
Erreurs
Les erreurs utilisent {"error": {"code": ..., "message": "..."}} (le point de terminaison Messages utilise le format d'erreur d'Anthropic). Le code est un code du catalogue d'erreurs commun. Les requêtes échouées ne sont pas facturées.
Conseils
- Commencez avec le niveau de raisonnement
highet ne passez àmaxque pour les problèmes les plus difficiles ;lowconvient aux étapes simples et rapides. - Définissez
max_completion_tokensassez haut pour le raisonnement et la réponse : c'est un budget unique pour les deux. - Placez le contexte long et réutilisé au début du prompt afin que les requêtes ultérieures le lisent depuis le cache, et utilisez le TTL
1hlorsque les requêtes sont espacées.
