Text
Kimi K3.1 Pro
Chat Completions, Responses y Messages nativos de Kimi K3.1 Pro. Parámetros oficiales, historial de razonamiento, salidas estructuradas, medios y caché.
Usa el ID público kimi-k3.1-pro. La página del modelo ofrece el Playground y los precios actuales. Descarga la especificación OpenAPI para consultar todos los esquemas anidados de solicitudes y respuestas.
Inicio rápido
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"
}'Formatos nativos
| Formato | Endpoint | Campos obligatorios |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | model, messages |
| Responses | POST /v1/responses | model, input |
| Messages | POST /v1/messages | model, messages, max_tokens |
Usa Authorization: Bearer $SEEDROUTER_API_KEY. Messages también usa anthropic-version: 2023-06-01. Cada formato devuelve JSON nativo o eventos SSE. Responses no mantiene estado: reenvía todo el historial; previous_response_id no es un campo de solicitud admitido.
Parámetros de solicitud
Los campos vacíos del Playground se omiten. Los valores explícitos false y cero se conservan cuando son válidos. Omitido no significa que admita null. Las extensiones desconocidas de nivel superior se descartan; los campos oficiales inválidos se rechazan. Los esquemas anidados de herramientas y el historial devuelto se conservan intactos.
Chat Completions
| Campo | Tipo | Obligatorio | Predeterminado / rango |
|---|---|---|---|
logprobs | boolean | No | false por defecto |
top_logprobs | integer | No | 0–20; requiere logprobs=true |
prediction | object | No | Se omite si no se proporciona |
max_tokens | integer | No | 1–1048576 |
max_completion_tokens | integer | No | 1–1048576; 131072 por defecto |
response_format | object | No | Se omite si no se proporciona |
stop | union | No | ≤5 cadenas; ≤32 bytes UTF-8 cada una |
stream | boolean | No | false por defecto |
stream_options | object | No | Se omite si no se proporciona |
tools | array | No | Se omite si no se proporciona |
prompt_cache_key | string | No | Se omite si no se proporciona |
prompt_cache_options | object | No | Se omite si no se proporciona |
safety_identifier | string | No | Se omite si no se proporciona |
tool_choice | union | No | Se omite si no se proporciona |
messages | array | Sí | Se omite si no se proporciona |
reasoning_effort | string | No | low, high, max; "max" por defecto |
model | string | Sí | kimi-k3.1-pro; "kimi-k3.1-pro" por defecto |
temperature | number | No | 1 |
top_p | number | No | 0.95 |
n | integer | No | 1 |
frequency_penalty | number | No | 0 |
presence_penalty | number | No | 0 |
Responses
| Campo | Tipo | Obligatorio | Predeterminado / rango |
|---|---|---|---|
model | string | Sí | kimi-k3.1-pro; "kimi-k3.1-pro" por defecto |
input | union | Sí | Se omite si no se proporciona |
instructions | string | No | Se omite si no se proporciona |
stream | boolean | No | false por defecto |
max_output_tokens | integer | No | 1–1048576; 131072 por defecto |
reasoning | object | No | Se omite si no se proporciona |
text | object | No | Se omite si no se proporciona |
tools | array | No | Se omite si no se proporciona |
tool_choice | object | No | Se omite si no se proporciona |
include | array | No | Se omite si no se proporciona |
prompt_cache_key | string | No | Se omite si no se proporciona |
prompt_cache_options | object | No | Se omite si no se proporciona |
safety_identifier | string | No | Se omite si no se proporciona |
Messages
| Campo | Tipo | Obligatorio | Predeterminado / rango |
|---|---|---|---|
model | string | Sí | kimi-k3.1-pro; "kimi-k3.1-pro" por defecto |
messages | array | Sí | Se omite si no se proporciona |
max_tokens | integer | Sí | 1–1048576 |
system | union | No | Se omite si no se proporciona |
stream | boolean | No | false por defecto |
stop_sequences | array | No | ≤5 cadenas; ≤32 bytes UTF-8 cada una |
tools | array | No | Se omite si no se proporciona |
tool_choice | object | No | Se omite si no se proporciona |
metadata | object | No | Se omite si no se proporciona |
cache_control | object | No | Se omite si no se proporciona |
output_config | object | No | Se omite si no se proporciona |
Chat tiene 22 campos de nivel superior: model, cinco campos de muestreo fijos y 16 entradas variables. Responses tiene model y 12 entradas; Messages tiene model y 10 entradas. El Playground oculta el modelo fijo y los controles de muestreo fijos.
Razonamiento y límites de salida
El razonamiento siempre está activado. reasoning_effort de Chat, reasoning.effort de Responses y output_config.effort de Messages aceptan low, high o max; el valor predeterminado es max. Todos los límites de salida incluyen el razonamiento. Chat y Responses tienen por defecto 131.072 tokens de salida y un máximo de 1.048.576. Messages requiere un max_tokens positivo. Chat acepta el obsoleto max_tokens; prefiere max_completion_tokens en integraciones nuevas.
La ventana de contexto es de 1.048.576 tokens. La entrada por sí sola debe caber en ella. Si la entrada y el presupuesto de generación superan la ventana, el servicio puede reducir el presupuesto al espacio restante. Un límite de salida pequeño puede agotarse antes de que aparezca una respuesta visible.
El muestreo de Chat es fijo: temperature:1, top_p:0.95, n:1, frequency_penalty:0, presence_penalty:0. Otros valores son inválidos. Las secuencias de parada coinciden con el texto exacto y se excluyen de la respuesta. Su límite de 32 bytes cuenta bytes UTF-8, no caracteres.
Salidas estructuradas y predicciones
Chat acepta text, json_object o json_schema en response_format.type. El modo JSON también necesita un prompt que solicite JSON. JSON Schema requiere json_schema.name y json_schema.schema; strict es true por defecto.
Responses usa text.format con type:json_schema, schema y, opcionalmente, name y strict. Messages usa output_config.format con type:json_schema y schema. Sigue Moonshot Flavored JSON Schema; no supongas que se aplica cada extensión general de JSON Schema. Valida la salida terminada en tu aplicación.
La salida predicha de Chat usa prediction:{type:"content",content:...}. El contenido es una cadena o partes solo de texto. Úsala para una salida conocida en su mayor parte, como un archivo con una pequeña edición.
Herramientas e historial de conversación
Las herramientas de Chat usan type:function con function.name y function.parameters. Entre los campos opcionales están description y strict (true por defecto). Los nombres cumplen ^[a-zA-Z_][a-zA-Z0-9-_]{0,127}$. La selección de herramientas admite auto, none y required; required necesita al menos una herramienta disponible. Forzar una función con nombre entra en conflicto con el razonamiento siempre activo.
Un mensaje dinámico de herramienta de Chat es {role:"system",tools:[...]} sin contenido. Conserva estos mensajes en la conversación. Añade toda la respuesta del asistente, incluidos reasoning_content y tool_calls, y devuelve cada resultado como un mensaje role:tool con el tool_call_id correspondiente. Las respuestas del asistente con herramientas pueden tener contenido null. Los demás roles siguen requiriendo contenido.
Responses admite definiciones nativas de herramientas function, namespace, personalizadas apply_patch y web_search, con tool_choice:"auto". Devuelve elementos function_call_output o custom_tool_call_output con los ID de llamada correspondientes. Los valores include web_search_call.results y web_search_call.action.sources afectan solo a la salida de búsqueda web.
Messages admite definiciones nativas de herramientas y objetos de selección con tipo auto, any o none. Conserva los bloques de razonamiento del asistente y sus firmas. Devuelve los bloques de resultados de herramientas dentro de mensajes del usuario. Tu aplicación valida los argumentos, ejecuta las funciones personalizadas y controla las acciones externas.
Chat Partial Mode establece partial:true solo en el último mensaje del asistente. Messages continúa directamente un mensaje final del asistente. No reconstruyas el historial solo a partir del texto visible de la respuesta.
Restricciones multimedia
Chat acepta bloques de texto, image_url y video_url. Usa URL de datos base64 o referencias ms:// aceptadas; no se admiten URL multimedia públicas arbitrarias. Formatos de imagen: JPEG, PNG, GIF, WebP, BMP, HEIC y HEIF. Formatos de vídeo: MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV y 3GPP. La guía oficial especifica un límite total de 100M para el cuerpo de la solicitud, sin un máximo independiente de imágenes. Las imágenes 4K y el vídeo Full HD son recomendaciones, no límites obligatorios.
Responses usa input_image.image_url con una URL de datos. Messages usa una fuente de imagen como {type:"base64",media_type:"image/png",data:"..."}, o el tipo url con una referencia ms:// aceptada. Los tipos de imagen integrados de Messages son JPEG, PNG, GIF y WebP. Estos formatos no heredan implícitamente el bloque de vídeo de Chat; usa sus esquemas específicos.
El Playground adjunta imágenes integradas. Usa los campos nativos de conversación o el editor JSON para bloques de vídeo y referencias de archivos. La carga y gestión de archivos queda fuera de estos endpoints de generación. Un ID de archivo creado con otra cuenta no es necesariamente utilizable.
Caché y uso
Chat y Responses usan prompt_cache_key y prompt_cache_options:{mode:"implicit",ttl:"5m"}. TTL acepta 5m o 1h, con 5 minutos por defecto. Messages usa cache_control:{type:"ephemeral",ttl:"5m"} de nivel superior y, opcionalmente, metadata.user_id. Los marcadores anidados de control de caché de Messages se ignoran. prompt_cache_breakpoint en el contenido es inválido.
Un prefijo ya almacenado conserva su TTL original al actualizarse. Solicitar otra duración no demuestra que se haya aplicado. Las cabeceras oficiales de escritura en caché de Chat informan los recuentos reales de 5 minutos y 1 hora. Responses puede devolver las prompt_cache_options aplicadas; Messages informa ambos contadores TTL en usage.cache_creation.
| Formato | Entrada total | Lectura de caché | Escritura en caché |
|---|---|---|---|
| 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 |
Los totales de entrada de Chat y Responses ya incluyen lecturas y escrituras en caché. Estas categorías y el resto sin caché no se solapan; no sumes dos veces los tokens de caché. La salida incluye el razonamiento. Messages separa las escrituras en ephemeral_5m_input_tokens y ephemeral_1h_input_tokens. Consulta las tarifas actuales; las respuestas públicas de generación no contienen cargos monetarios.
Streaming y finalización
Establece stream:true. Chat emite fragmentos de datos y [DONE]; stream_options.include_usage:true solicita el último fragmento de uso. Responses usa eventos con nombre como response.output_text.delta, response.completed y response.incomplete. Messages usa message_start, eventos de bloques de contenido, message_delta y message_stop.
Una conexión cerrada no demuestra por sí sola que haya terminado. Revisa los motivos de finalización nativos y el estado final. Un flujo interrumpido puede carecer del uso final. Detener la lectura no garantiza cancelar la generación.
Referencias oficiales
Consultados el 25 de octubre de 2026: guía de Kimi K3.1 Pro, Chat, Responses, Messages, visión y caché.
