Text
Kimi K3.1 Pro
Нативные форматы Kimi K3.1 Pro Chat Completions, Responses и Messages. Официальные параметры, история рассуждений, структурированный вывод, медиа и учёт кэша.
Используйте публичный ID модели kimi-k3.1-pro. На странице модели доступны Playground и актуальные цены. Скачайте спецификацию OpenAPI с полными вложенными схемами запросов и ответов.
Быстрый старт
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"
}'Нативные форматы
| Формат | Адрес API | Обязательные поля |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | model, messages |
| Responses | POST /v1/responses | model, input |
| Messages | POST /v1/messages | model, messages, max_tokens |
Используйте Authorization: Bearer $SEEDROUTER_API_KEY. Messages также использует anthropic-version: 2023-06-01. Каждый формат возвращает нативный JSON или события SSE. Responses не хранит состояние: передавайте полную историю заново; поле запроса previous_response_id не поддерживается.
Параметры запроса
Пустые поля Playground не отправляются. Явные false и ноль сохраняются там, где допустимы. Отсутствие поля не означает допустимость null. Неизвестные расширения верхнего уровня отбрасываются; некорректные официальные поля отклоняются. Вложенные схемы инструментов и возвращённая история сохраняются без изменений.
Chat Completions
| Поле | Тип | Обязательное | По умолчанию / диапазон |
|---|---|---|---|
logprobs | boolean | Нет | по умолчанию false |
top_logprobs | integer | Нет | 0–20; требует logprobs=true |
prediction | object | Нет | Не отправляется, если не задано |
max_tokens | integer | Нет | 1–1048576 |
max_completion_tokens | integer | Нет | 1–1048576; по умолчанию 131072 |
response_format | object | Нет | Не отправляется, если не задано |
stop | union | Нет | ≤5 строк; ≤32 UTF-8 bytes каждая |
stream | boolean | Нет | по умолчанию false |
stream_options | object | Нет | Не отправляется, если не задано |
tools | array | Нет | Не отправляется, если не задано |
prompt_cache_key | string | Нет | Не отправляется, если не задано |
prompt_cache_options | object | Нет | Не отправляется, если не задано |
safety_identifier | string | Нет | Не отправляется, если не задано |
tool_choice | union | Нет | Не отправляется, если не задано |
messages | array | Да | Не отправляется, если не задано |
reasoning_effort | string | Нет | low, high, max; по умолчанию "max" |
model | string | Да | kimi-k3.1-pro; по умолчанию "kimi-k3.1-pro" |
temperature | number | Нет | 1 |
top_p | number | Нет | 0.95 |
n | integer | Нет | 1 |
frequency_penalty | number | Нет | 0 |
presence_penalty | number | Нет | 0 |
Responses
| Поле | Тип | Обязательное | По умолчанию / диапазон |
|---|---|---|---|
model | string | Да | kimi-k3.1-pro; по умолчанию "kimi-k3.1-pro" |
input | union | Да | Не отправляется, если не задано |
instructions | string | Нет | Не отправляется, если не задано |
stream | boolean | Нет | по умолчанию false |
max_output_tokens | integer | Нет | 1–1048576; по умолчанию 131072 |
reasoning | object | Нет | Не отправляется, если не задано |
text | object | Нет | Не отправляется, если не задано |
tools | array | Нет | Не отправляется, если не задано |
tool_choice | object | Нет | Не отправляется, если не задано |
include | array | Нет | Не отправляется, если не задано |
prompt_cache_key | string | Нет | Не отправляется, если не задано |
prompt_cache_options | object | Нет | Не отправляется, если не задано |
safety_identifier | string | Нет | Не отправляется, если не задано |
Messages
| Поле | Тип | Обязательное | По умолчанию / диапазон |
|---|---|---|---|
model | string | Да | kimi-k3.1-pro; по умолчанию "kimi-k3.1-pro" |
messages | array | Да | Не отправляется, если не задано |
max_tokens | integer | Да | 1–1048576 |
system | union | Нет | Не отправляется, если не задано |
stream | boolean | Нет | по умолчанию false |
stop_sequences | array | Нет | ≤5 строк; ≤32 UTF-8 bytes каждая |
tools | array | Нет | Не отправляется, если не задано |
tool_choice | object | Нет | Не отправляется, если не задано |
metadata | object | Нет | Не отправляется, если не задано |
cache_control | object | Нет | Не отправляется, если не задано |
output_config | object | Нет | Не отправляется, если не задано |
Chat имеет 22 поля верхнего уровня: model, пять фиксированных полей семплирования и 16 переменных входов. Responses имеет model и 12 входов; Messages — model и 10 входов. Playground скрывает фиксированную модель и фиксированные настройки семплирования.
Рассуждения и лимиты вывода
Мышление всегда включено. Chat reasoning_effort, Responses reasoning.effort и Messages output_config.effort принимают low, high или max; по умолчанию — max. Все лимиты вывода включают рассуждения. Chat и Responses по умолчанию допускают 131 072 выходных токена, максимум — 1 048 576. Messages требует положительный max_tokens. Chat принимает устаревший max_tokens; для новых интеграций используйте max_completion_tokens.
Контекстное окно составляет 1 048 576 токенов. Сам ввод должен помещаться в него. Когда ввод вместе с бюджетом генерации превышает окно, сервис может сократить бюджет до оставшегося места. Маленький лимит вывода может остановить генерацию до появления видимого ответа.
Семплирование Chat фиксировано: temperature:1, top_p:0.95, n:1, frequency_penalty:0, presence_penalty:0. Другие значения недопустимы. Стоп-последовательности сопоставляются с точным текстом и исключаются из ответа. Лимит в 32 байта учитывает байты UTF-8, а не символы.
Структурированный вывод и предсказания
Chat принимает response_format.type со значениями text, json_object или json_schema. Режим JSON также требует промпта с просьбой вернуть JSON. JSON Schema требует json_schema.name и json_schema.schema; strict по умолчанию равен true.
Responses использует text.format с type:json_schema, schema, необязательными name и strict. Messages использует output_config.format с type:json_schema и schema. Следуйте Moonshot Flavored JSON Schema; не предполагайте, что каждое общее расширение JSON Schema проверяется. Проверяйте завершённый вывод в приложении.
Предсказанный вывод Chat использует prediction:{type:"content",content:...}. Содержимое — строка или только текстовые части. Используйте это для почти известного вывода, например файла с небольшим изменением.
Инструменты и сохранение истории диалога
Инструменты Chat используют type:function с function.name и function.parameters. Необязательные поля включают description и strict (по умолчанию true). Имена соответствуют ^[a-zA-Z_][a-zA-Z0-9-_]{0,127}$. Выбор инструмента поддерживает auto, none и required; required требует хотя бы одного доступного инструмента. Принудительный выбор именованной функции несовместим с постоянно включённым мышлением.
Динамическое сообщение инструментов Chat — {role:"system",tools:[...]} без content. Сохраняйте такие сообщения в диалоге. Добавляйте полный ответ помощника, включая reasoning_content и tool_calls, затем возвращайте каждый результат инструмента сообщением role:tool с соответствующим tool_call_id. Ответы помощника с вызовами инструментов могут иметь null в content. Остальные роли сообщений по-прежнему требуют content.
Responses поддерживает нативные определения инструментов function, namespace, пользовательского apply_patch и web_search с tool_choice:"auto". Возвращайте элементы function_call_output или custom_tool_call_output с соответствующими ID вызовов. Значения include web_search_call.results и web_search_call.action.sources влияют только на вывод веб-поиска.
Messages поддерживает нативные определения инструментов и объекты выбора с type auto, any или none. Сохраняйте блоки мышления помощника и их подписи. Возвращайте блоки результатов инструментов внутри пользовательских сообщений. Ваше приложение проверяет аргументы, выполняет пользовательские функции и контролирует внешние действия.
Chat Partial Mode устанавливает partial:true только в последнем сообщении помощника. Messages напрямую продолжает последнее сообщение помощника. Не восстанавливайте историю только по видимому тексту ответа.
Ограничения медиа
Chat принимает блоки содержимого text, image_url и video_url. Используйте data URL с base64 или допустимые ссылки ms://; произвольные публичные URL медиа не поддерживаются. Форматы изображений: JPEG, PNG, GIF, WebP, BMP, HEIC и HEIF. Форматы видео: MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV и 3GPP. Официальное руководство задаёт общий лимит тела запроса 100M без отдельного ограничения числа изображений. Изображения 4K и видео Full HD — рекомендации, а не обязательные ограничения.
Responses использует input_image.image_url с data URL. Messages использует источник изображения вида {type:"base64",media_type:"image/png",data:"..."} или type url с допустимой ссылкой ms://. Встроенные изображения Messages: JPEG, PNG, GIF и WebP. Эти форматы не наследуют видеоблок Chat автоматически; используйте их собственные схемы.
Playground прикрепляет встроенные изображения. Для видеоблоков и ссылок на файлы используйте нативные поля диалога или редактор JSON. Загрузка и управление файлами не входят в эти адреса генерации. ID файла, созданного другим аккаунтом, не обязательно доступен.
Кэширование и использование
Chat и Responses используют prompt_cache_key и prompt_cache_options:{mode:"implicit",ttl:"5m"}. TTL принимает 5m или 1h, по умолчанию — 5 минут. Messages использует верхнеуровневый cache_control:{type:"ephemeral",ttl:"5m"} и необязательный metadata.user_id. Вложенные маркеры cache-control Messages игнорируются. prompt_cache_breakpoint на уровне содержимого недопустим.
Существующий кэшированный префикс при обновлении сохраняет исходный TTL. Запрос другого срока жизни не доказывает, что он был применён. Официальные заголовки записи кэша Chat показывают фактические количества для 5 минут и 1 часа. Responses может вернуть применённый prompt_cache_options; Messages сообщает оба счётчика TTL в usage.cache_creation.
| Формат | Всего ввода | Чтение кэша | Запись кэша |
|---|---|---|---|
| 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 |
Итоговый ввод Chat и Responses уже включает чтение и запись кэша. Эти категории и некэшированный остаток не пересекаются; не прибавляйте кэшированные токены дважды. Вывод включает рассуждения. Messages разделяет запись на ephemeral_5m_input_tokens и ephemeral_1h_input_tokens. Смотрите актуальные тарифы; публичные ответы генерации не содержат денежных начислений.
Потоковая передача и завершение
Установите stream:true. Chat отправляет блоки данных и [DONE]; stream_options.include_usage:true запрашивает итоговый блок использования. Responses использует именованные события, например response.output_text.delta, response.completed и response.incomplete. Messages использует message_start, события блоков содержимого, message_delta и message_stop.
Закрытое соединение само по себе не доказывает завершение. Проверяйте нативные причины окончания и конечный статус. В прерванном потоке может отсутствовать итоговое использование. Остановка чтения не гарантирует отмену генерации.
Официальные источники
Проверено 25 октября 2026 года: руководство Kimi K3.1 Pro, Chat, Responses, Messages, зрение и кэширование.
