Chat Completions
Создание ответа модели по истории сообщений
Создаёт ответ на основе массива сообщений
POST https://api.getapi.ru/v1/chat/completions
Заголовки
| Заголовок | Значение |
|---|---|
Authorization | Bearer <GETAPI_API_KEY> |
Content-Type | application/json |
Параметры запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
model | string | Да | Идентификатор из каталога |
messages | array | Да | История сообщений в порядке диалога |
max_tokens | integer | Нет | Запрашиваемый предел выходных токенов, включая рассуждения |
max_completion_tokens | integer | Нет | Альтернативное имя лимита для совместимых моделей |
stream | boolean | Нет | Включает поток SSE |
stream_options.include_usage | boolean | Нет | Запрашивает счётчики в потоке |
temperature, top_p | number | Нет | Параметры генерации, диапазон и поддержка зависят от модели |
stop | string или string[] | Нет | Стоп-последовательности |
n | integer | Нет | Число вариантов, часть моделей возвращает один |
tools | array | Нет | Описания доступных функций |
tool_choice | string или object | Нет | Правило выбора инструмента |
parallel_tool_calls | boolean | Нет | Разрешение нескольких вызовов, если модель поддерживает этот режим |
response_format | object | Нет | JSON-режим или JSON Schema |
reasoning, reasoning_effort | object, string | Нет | Настройки рассуждений, зависят от модели |
seed | integer | Нет | Начальное значение генерации, не гарантия идентичного текста |
verbosity | string | Нет | Подробность ответа, допустимые значения зависят от модели и провайдера |
logprobs, top_logprobs | boolean, integer | Нет | Вероятности токенов для моделей с этой возможностью |
provider | object | Нет | Выбор исполнителя модели и правила переключения между провайдерами |
Передавайте один параметр лимита вывода
Значение 0 не используйте как способ запретить генерацию
Лимит токенов не заменяет контроль расходов, см. рассуждения
Наличие параметра в каталоге не означает поддержку всех его значений. Для gpt-5.1-codex-max у Azure используйте verbosity: "medium", значение low отклоняется провайдером
Успешный HTTP-ответ не подтверждает действие каждого параметра. При запросе logprobs проверяйте choices[].logprobs, поле может остаться null
У gpt-4o-mini, gpt-5-nano, claude-sonnet-5.5 и gemini-2.5-flash-lite запрос с n: 2 возвращает один вариант, проверяйте длину choices
gpt-5-nano может вернуть текст вместе с переданной стоп-последовательностью. Если остановка по stop обязательна для приложения, проверьте результат и обработайте последовательность на своей стороне
Выбор провайдера
Модели доступны через OpenRouter. Одна модель может выполняться у нескольких провайдеров с разными ценами и ограничениями
Передайте provider в теле запроса. Идентификатор модели сохраняется таким, каким его вернул GET /v1/models
{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Ответь одним словом: привет"}],
"max_tokens": 32,
"provider": {
"only": ["openai"],
"allow_fallbacks": false
}
}only ограничивает список исполнителей. Для Azure используется azure. Название семейства модели и провайдер исполнения могут различаться
Поле provider в ответе показывает фактического исполнителя, если маршрут его возвращает. Сохраните также id ответа и идентификатор запроса для сверки с журналом
Список провайдеров конкретной модели и остальные настройки: OpenRouter и выбор провайдера
Объект сообщения
| Поле | Тип | Описание |
|---|---|---|
role | string | system, user, assistant, tool; роль developer зависит от модели |
content | string, array или null | Текст или блоки содержимого |
tool_calls | array | Вызовы функций в сообщении assistant |
tool_call_id | string | Идентификатор вызова для сообщения tool |
Для истории передавайте предыдущие сообщения вместе с новым вопросом
Изображения задаются блоками image_url, см. изображения
Пример запроса
curl https://api.getapi.ru/v1/chat/completions \
-H "Authorization: Bearer $GETAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [
{"role": "system", "content": "Отвечай кратко"},
{"role": "user", "content": "Что такое API?"}
],
"max_tokens": 128
}'Пример ответа
{
"id": "chatcmpl-example",
"object": "chat.completion",
"created": 1789673637,
"model": "gpt-4.1-mini-2025-04-14",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "API позволяет приложениям обмениваться данными"},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 20, "completion_tokens": 12, "total_tokens": 32}
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор ответа |
object | string | chat.completion |
created | integer | Время создания в Unix-секундах |
model | string | Имя или версия модели в ответе |
choices | array | Варианты результата |
choices[].index | integer | Индекс варианта |
choices[].message | object | Сообщение модели |
choices[].finish_reason | string или null | Причина завершения |
usage | object | Расход входных, выходных и всех токенов |
Имя модели в ответе может отличаться от идентификатора запроса
Поля refusal, annotations, logprobs, reasoning и reasoning_content зависят от модели и могут отсутствовать
Завершение генерации
| Значение | Значение для клиента |
|---|---|
stop | Генерация завершена |
length | Исчерпан лимит вывода |
tool_calls | Требуется обработать вызовы инструментов |
Наличие вызова определяйте по message.tool_calls, одного finish_reason недостаточно
Пустой content допустим при вызове инструмента или исчерпании бюджета рассуждений
Ошибки
Без messages или model сервис возвращает 400
Неверный ключ вызывает 401, несовместимый класс модели может вызвать 403
Для 503 с model_not_found исправьте идентификатор по каталогу