Запрос к модели

Поля запроса и ответа POST /v1/chat/completions, роли сообщений, ограничения и параметры, которые доходят не до всех моделей.

Обновлено: 4 мин чтения

Тело запроса

Запрос отправляется методом POST на /v1/chat/completions с телом в формате JSON. Обязательны только model и messages.

{
  "model": "deepseek/deepseek-v4.1-flash",
  "messages": [
    {"role": "system", "content": "Отвечай коротко и по-русски."},
    {"role": "user", "content": "Чем TCP отличается от UDP?"}
  ],
  "max_tokens": 300,
  "temperature": 0.3
}
ПолеЧто принимает
modelИмя из GET /v1/models
messagesНепустой массив, до 2000 сообщений. Последним должно идти сообщение user или tool
stream, stream_options.include_usageПотоковый ответ и расход в последнем кадре, см. статью Потоковый ответ
max_tokens, max_completion_tokensЦелое от 1. Предел длины ответа и размер резерва на балансе. Если пришли оба поля, берётся max_completion_tokens
temperatureЧисло от 0 до 2
top_pЧисло от 0 до 1
presence_penalty, frequency_penaltyЧисла от −2 до 2
seedЦелое число
stopСтрока или до 4 строк длиной до 64 знаков
reasoning_effortnone, minimal, low, medium, high или xhigh. Действует у моделей с capabilities.reasoning
tools, tool_choice, parallel_tool_callsВызов функций, см. статью Вызов функций
response_formattext, json_object или json_schema, см. статью JSON-режим

Поля, которых нет в таблице и в списке неподдерживаемых ниже (например user, metadata, store), epicai принимает и не использует, ошибки не будет.

Сообщения

У каждого сообщения есть role и content. Роль system задаёт поведение модели, роль developer epicai трактует как system, пустые системные сообщения отбрасываются. Сообщение user содержит строку или массив частей text и image_url, про картинки читайте в статье Картинки в запросе. Сообщение assistant может нести tool_calls, тогда content допустимо оставить null. Результат функции передаётся сообщением tool с обязательным tool_call_id.

Если последним в массиве стоит assistant, ответ 400 invalid_parameter, начатую реплику модели продолжить нельзя.

Размер ответа

Без max_tokens epicai ограничивает ответ запасом по умолчанию, 8192 токена, а у моделей с рассуждениями 16384. Значение выше предела в 65536 тихо уменьшается до него. Ограничение определяет и резерв на балансе, поэтому для коротких ответов задавайте его явно.

Без stream ответ приходит целиком, и ждать его epicai будет до 280 секунд. Потом придёт 504 upstream_timeout, и TOK за такой запрос не спишутся. Для длинных ответов включайте потоковый режим, у него предел 900 секунд.

Ответ

ПолеЗначение
idНомер ответа chatcmpl-…, те же 24 знака, что у request_id
created, modelВремя в секундах Unix и имя модели из запроса
choicesВсегда один вариант с index 0
choices[0].message.contentТекст ответа, а при вызове функции null
choices[0].message.reasoning_contentРассуждения модели, если вендор их отдаёт. В потоке они идут в delta.reasoning_content
choices[0].message.tool_callsВызовы функций
choices[0].finish_reasonstop означает естественный конец, length предел max_tokens, tool_calls просьбу модели вызвать функцию, content_filter остановку фильтром вендора
usageПоля prompt_tokens, completion_tokens и total_tokens считают токены модели. Ещё могут быть prompt_tokens_details.cached_tokens и completion_tokens_details.reasoning_tokens
epicРасширение epicai. В cost_tok лежит списанная сумма в TOK, в request_id номер запроса

В заголовках ответа приходят x-request-id, x-epic-cost-tok и три заголовка x-ratelimit-*, о них рассказывает статья Лимиты.

Чего нет

Параметры logprobs, top_logprobs, audio, modalities, web_search_options, prediction и устаревшие functions с function_call дают 400 unsupported_parameter с именем поля в param. Так же отвечает n, если оно не равно 1. Инструменты не из семейства функций дают 400 unsupported_tool, части сообщений кроме текста и картинок (аудио, файлы) — 400 unsupported_content.

Что доходит до модели

OpenAI и Claude принимают запрос в собственном формате, поэтому epicai переводит его и отбрасывает то, что у вендора не предусмотрено. Ошибки при этом нет. Какие вендоры в списке, показывает поле owned_by.

ПараметрМодели OpenAIМодели ClaudeОстальные
temperature, top_pДоходят, кроме моделей с рассуждениями и тех, где вендор настройку выборки не принимаетНе передаютсяДоходят
seed, presence_penalty, frequency_penaltyНе передаютсяНе передаютсяДоходят
stopНе передаётсяДоходит как стоп-последовательностиДоходит
reasoning_effortДоходит до моделей с рассуждениямиВключает режим размышлений, если он у модели естьДоходит до моделей с рассуждениями, уровень minimal у части моделей заменяется на low
response_formatДоходитРаботает только json_object, схема не применяетсяДоходит

Ограничения запроса: тело до 12 МБ (иначе 413 request_too_large), до 2000 сообщений, до 128 функций.

Не нашли ответ?

Посмотрите частые вопросы или напишите в поддержку.

Войти или создать аккаунт

20 000 токенов в подарок новым пользователям. Без карты и без VPN.

или через сервис

Продолжая, вы получаете сервисные письма.

Для защиты от роботов используется Yandex SmartCaptcha. Условия обработки данных.