Text
Kimi K3.1 Pro
Chat Completions, Responses et Messages natifs pour Kimi K3.1 Pro. Paramètres officiels, historique du raisonnement, sorties structurées, médias et cache.
Utilisez l’ID public kimi-k3.1-pro. La page du modèle propose le Playground et les tarifs actuels. Téléchargez la spécification OpenAPI pour les schémas imbriqués complets des requêtes et réponses.
Démarrage rapide
curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"kimi-k3.1-pro",
"messages":[{"role":"user","content":"How can an idempotency key prevent a duplicate payment?"}],
"max_completion_tokens":2048,
"reasoning_effort":"low"
}'Formats natifs
| Format | Point de terminaison | Champs obligatoires |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | model, messages |
| Responses | POST /v1/responses | model, input |
| Messages | POST /v1/messages | model, messages, max_tokens |
Utilisez Authorization: Bearer $SEEDROUTER_API_KEY. Messages utilise aussi anthropic-version: 2023-06-01. Chaque format renvoie du JSON natif ou des événements SSE. Responses est sans état : renvoyez l’historique complet ; previous_response_id n’est pas un champ de requête pris en charge.
Paramètres de requête
Les champs vides du Playground sont omis. Les valeurs explicites false et zéro sont conservées lorsqu’elles sont valides. Un champ omis n’est pas nécessairement nullable. Les extensions inconnues de premier niveau sont supprimées ; les champs officiels invalides sont rejetés. Les schémas d’outils imbriqués et l’historique renvoyé restent intacts.
Chat Completions
| Champ | Type | Obligatoire | Défaut / plage |
|---|---|---|---|
logprobs | boolean | Non | false par défaut |
top_logprobs | integer | Non | 0–20; nécessite logprobs=true |
prediction | object | Non | Omis si non fourni |
max_tokens | integer | Non | 1–1048576 |
max_completion_tokens | integer | Non | 1–1048576; 131072 par défaut |
response_format | object | Non | Omis si non fourni |
stop | union | Non | ≤5 chaînes ; ≤32 octets UTF-8 chacune |
stream | boolean | Non | false par défaut |
stream_options | object | Non | Omis si non fourni |
tools | array | Non | Omis si non fourni |
prompt_cache_key | string | Non | Omis si non fourni |
prompt_cache_options | object | Non | Omis si non fourni |
safety_identifier | string | Non | Omis si non fourni |
tool_choice | union | Non | Omis si non fourni |
messages | array | Oui | Omis si non fourni |
reasoning_effort | string | Non | low, high, max; "max" par défaut |
model | string | Oui | kimi-k3.1-pro; "kimi-k3.1-pro" par défaut |
temperature | number | Non | 1 |
top_p | number | Non | 0.95 |
n | integer | Non | 1 |
frequency_penalty | number | Non | 0 |
presence_penalty | number | Non | 0 |
Responses
| Champ | Type | Obligatoire | Défaut / plage |
|---|---|---|---|
model | string | Oui | kimi-k3.1-pro; "kimi-k3.1-pro" par défaut |
input | union | Oui | Omis si non fourni |
instructions | string | Non | Omis si non fourni |
stream | boolean | Non | false par défaut |
max_output_tokens | integer | Non | 1–1048576; 131072 par défaut |
reasoning | object | Non | Omis si non fourni |
text | object | Non | Omis si non fourni |
tools | array | Non | Omis si non fourni |
tool_choice | object | Non | Omis si non fourni |
include | array | Non | Omis si non fourni |
prompt_cache_key | string | Non | Omis si non fourni |
prompt_cache_options | object | Non | Omis si non fourni |
safety_identifier | string | Non | Omis si non fourni |
Messages
| Champ | Type | Obligatoire | Défaut / plage |
|---|---|---|---|
model | string | Oui | kimi-k3.1-pro; "kimi-k3.1-pro" par défaut |
messages | array | Oui | Omis si non fourni |
max_tokens | integer | Oui | 1–1048576 |
system | union | Non | Omis si non fourni |
stream | boolean | Non | false par défaut |
stop_sequences | array | Non | ≤5 chaînes ; ≤32 octets UTF-8 chacune |
tools | array | Non | Omis si non fourni |
tool_choice | object | Non | Omis si non fourni |
metadata | object | Non | Omis si non fourni |
cache_control | object | Non | Omis si non fourni |
output_config | object | Non | Omis si non fourni |
Chat comporte 22 champs de premier niveau : model, cinq champs d’échantillonnage fixes et 16 entrées variables. Responses contient model et 12 entrées ; Messages contient model et 10 entrées. Le Playground masque le modèle fixe et les réglages d’échantillonnage fixes.
Raisonnement et limites de sortie
Le raisonnement est toujours activé. reasoning_effort pour Chat, reasoning.effort pour Responses et output_config.effort pour Messages acceptent low, high ou max ; défaut : max. Toutes les limites de sortie incluent le raisonnement. Chat et Responses utilisent par défaut 131 072 tokens de sortie, avec un maximum de 1 048 576. Messages exige un max_tokens positif. Chat accepte l’ancien max_tokens ; préférez max_completion_tokens pour les nouvelles intégrations.
La fenêtre de contexte est de 1 048 576 tokens. L’entrée seule doit y tenir. Si l’entrée et le budget de génération dépassent la fenêtre, le service peut réduire ce budget à l’espace restant. Une petite limite de sortie peut être atteinte avant toute réponse visible.
L’échantillonnage de Chat est fixe : temperature:1, top_p:0.95, n:1, frequency_penalty:0, presence_penalty:0. Les autres valeurs sont invalides. Les séquences d’arrêt correspondent au texte exact et sont exclues de la réponse. Leur limite de 32 octets compte les octets UTF-8, pas les caractères.
Sorties structurées et prédictions
Chat accepte text, json_object ou json_schema pour response_format.type. Le mode JSON exige aussi un prompt demandant du JSON. JSON Schema nécessite json_schema.name et json_schema.schema ; strict vaut true par défaut.
Responses utilise text.format avec type:json_schema, schema et, facultativement, name et strict. Messages utilise output_config.format avec type:json_schema et schema. Suivez Moonshot Flavored JSON Schema ; ne supposez pas que toutes les extensions générales de JSON Schema sont appliquées. Validez la sortie terminée dans votre application.
La sortie prédite de Chat utilise prediction:{type:"content",content:...}. Le contenu est une chaîne ou des parties contenant uniquement du texte. Utilisez-la pour une sortie largement connue, par exemple un fichier recevant une petite modification.
Outils et conservation de l’historique
Les outils Chat utilisent type:function avec function.name et function.parameters. Les champs facultatifs comprennent description et strict (true par défaut). Les noms respectent ^[a-zA-Z_][a-zA-Z0-9-_]{0,127}$. Le choix d’outil accepte auto, none et required ; required nécessite au moins un outil disponible. Imposer une fonction nommée est incompatible avec le raisonnement toujours activé.
Un message d’outil Chat dynamique est {role:"system",tools:[...]} sans contenu. Conservez ces messages dans la conversation. Ajoutez la réponse complète de l’assistant, dont reasoning_content et tool_calls, puis renvoyez chaque résultat comme message role:tool avec le tool_call_id correspondant. Les réponses de l’assistant avec outils peuvent avoir un contenu null. Les autres rôles exigent toujours du contenu.
Responses prend en charge les définitions natives function, namespace, les outils personnalisés apply_patch et web_search, avec tool_choice:"auto". Renvoyez les éléments function_call_output ou custom_tool_call_output avec les ID d’appel correspondants. Les valeurs include web_search_call.results et web_search_call.action.sources ne concernent que la sortie de recherche web.
Messages prend en charge les définitions natives d’outils et les objets de choix de type auto, any ou none. Conservez les blocs de raisonnement de l’assistant et leurs signatures. Renvoyez les blocs de résultats d’outils dans les messages utilisateur. Votre application valide les arguments, exécute les fonctions personnalisées et contrôle les actions externes.
Chat Partial Mode définit partial:true uniquement sur le dernier message de l’assistant. Messages poursuit directement un dernier message de l’assistant. Ne reconstruisez pas l’historique à partir du seul texte visible.
Contraintes multimédias
Chat accepte les blocs de texte, image_url et video_url. Utilisez des URL de données base64 ou des références ms:// acceptées ; les URL multimédias publiques arbitraires ne sont pas prises en charge. Formats d’image : JPEG, PNG, GIF, WebP, BMP, HEIC et HEIF. Formats vidéo : MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV et 3GPP. Le guide officiel fixe une limite totale du corps de requête de 100M, sans plafond distinct du nombre d’images. Les images 4K et les vidéos Full HD sont des recommandations, pas des limites obligatoires.
Responses utilise input_image.image_url avec une URL de données. Messages utilise une source d’image telle que {type:"base64",media_type:"image/png",data:"..."}, ou le type url avec une référence ms:// acceptée. Les types d’images intégrées de Messages sont JPEG, PNG, GIF et WebP. Ces formats n’héritent pas implicitement du bloc vidéo de Chat ; utilisez leurs schémas propres.
Le Playground joint les images sous forme intégrée. Utilisez les champs natifs de conversation ou l’éditeur JSON pour les blocs vidéo et références de fichiers. Le téléversement et la gestion des fichiers ne font pas partie de ces points de terminaison de génération. Un ID de fichier créé avec un autre compte n’est pas nécessairement utilisable.
Mise en cache et utilisation
Chat et Responses utilisent prompt_cache_key et prompt_cache_options:{mode:"implicit",ttl:"5m"}. TTL accepte 5m ou 1h, avec 5 minutes par défaut. Messages utilise cache_control:{type:"ephemeral",ttl:"5m"} au premier niveau et, facultativement, metadata.user_id. Les marqueurs de contrôle de cache imbriqués de Messages sont ignorés. prompt_cache_breakpoint au niveau du contenu est invalide.
Un préfixe déjà en cache conserve sa TTL initiale lors d’un rafraîchissement. Demander une autre durée ne prouve pas qu’elle a été appliquée. Les en-têtes officiels d’écriture en cache de Chat indiquent les volumes réels pour 5 minutes et 1 heure. Responses peut renvoyer les prompt_cache_options appliquées ; Messages indique les deux compteurs TTL dans usage.cache_creation.
| Format | Entrée totale | Lecture du cache | Écriture du cache |
|---|---|---|---|
| Chat | usage.prompt_tokens | prompt_tokens_details.cached_tokens | prompt_tokens_details.cache_write_tokens |
| Responses | usage.input_tokens | input_tokens_details.cached_tokens | input_tokens_details.cache_write_tokens |
| Messages | input_tokens + cache_read_input_tokens + cache_creation_input_tokens | cache_read_input_tokens | cache_creation_input_tokens |
Les totaux d’entrée de Chat et Responses incluent déjà les lectures et écritures en cache. Ces catégories et le reste hors cache sont distincts ; ne comptez pas deux fois les tokens du cache. La sortie inclut le raisonnement. Messages distingue les écritures dans ephemeral_5m_input_tokens et ephemeral_1h_input_tokens. Consultez les tarifs actuels ; les réponses publiques de génération ne contiennent pas de montants facturés.
Streaming et fin de génération
Définissez stream:true. Chat émet des fragments de données et [DONE] ; stream_options.include_usage:true demande le dernier fragment d’utilisation. Responses utilise des événements nommés tels que response.output_text.delta, response.completed et response.incomplete. Messages utilise message_start, des événements de blocs de contenu, message_delta et message_stop.
Une connexion fermée ne prouve pas à elle seule que la génération est terminée. Vérifiez les raisons de fin natives et le statut final. Un flux interrompu peut manquer des données d’utilisation finales. Arrêter la lecture ne garantit pas l’annulation de la génération.
Références officielles
Vérifiés le 25 octobre 2026 : guide Kimi K3.1 Pro, Chat, Responses, Messages, vision et mise en cache.
