/v1/chat/completionsOpenAI-совместимый эндпоинт чата. Создаёт ответ модели на массив сообщений в формате OpenAI Chat Completions — для клиентов, уже использующих OpenAI SDK. Меняется только base_url и ключ.
id модели, поэтому одну и ту же модель можно вызвать как здесь, так и на /v1/messages.model (для маршрутизации и тарификации) и поддерживает как max_tokens, так и max_completion_tokens. Ответ и ошибки рендерятся в OpenAI-форме.| Параметр | Тип | Описание |
|---|---|---|
Authorizationобязательный | string | Bearer sk-ev-…. Альтернатива — x-api-key: sk-ev-…. |
content-typeобязательный | string | application/json. |
| Параметр | Тип | Описание |
|---|---|---|
modelобязательный | string | Id модели из каталога — любой провайдер. Список: GET /v1/models. |
messagesобязательный | object[] | Массив сообщений {role, content}. role — "system", "user" или "assistant". content — строка. |
max_tokensопционально | integer | Максимум токенов в ответе. Синоним — max_completion_tokens. Верхний предел платформы — 32768. |
max_completion_tokensопционально | integer | То же, что max_tokens (имя в новых версиях OpenAI SDK). |
streamопционально | boolean | true — отдавать ответ по мере генерации через SSE. По умолчанию false. |
temperatureопционально | number | Случайность ответа. Ниже — детерминированнее. |
top_pопционально | number | Nucleus sampling, 0–1. Альтернатива temperature. |
stopопционально | string | string[] | Последовательности, при появлении которых генерация останавливается. |
OpenAI SDK берёт base_url = база + /v1 (он сам дописывает /chat/completions). Передайте любой id из каталога — вызов вернёт ответ в родном для OpenAI формате.
curl https://api.evomodels.xyz/v1/chat/completions \
-H "Authorization: Bearer sk-ev-ВАШ_КЛЮЧ" \
-H "content-type: application/json" \
-d '{
"model": "gemini-3.5-flash",
"max_tokens": 256,
"messages": [
{"role": "system", "content": "Ты — лаконичный ассистент."},
{"role": "user", "content": "Назови три простых числа."}
]
}'Возвращается объект chat.completion. Текст лежит в choices[].message.content, причина остановки — в finish_reason, счётчики токенов — в usage.
{
"id": "chatcmpl-01ABCxyz...",
"object": "chat.completion",
"created": 1750000000,
"model": "gemini-3.5-flash",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "2, 3, 5." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 19,
"completion_tokens": 9,
"total_tokens": 28
}
}| Параметр | Тип | Описание |
|---|---|---|
idопционально | string | Идентификатор ответа (chatcmpl-…). |
choices[].message.contentопционально | string | Текст ответа модели. |
choices[].finish_reasonопционально | string | stop, length или tool_calls. |
usage.prompt_tokensопционально | integer | Токенов на входе (по ним считается стоимость). |
usage.completion_tokensопционально | integer | Токенов сгенерировано. |
С "stream": true ответ приходит как поток Server-Sent Events: строки data: {…choices[].delta…}, завершаемые строкой data: [DONE]. Шлюз подставляет stream_options.include_usage, поэтому перед [DONE] приходит финальный чанк с usage. Подробнее — в разделе Стриминг.
data: {"id":"chatcmpl-01...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-01...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"2, "},"finish_reason":null}]}
data: {"id":"chatcmpl-01...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"3, 5."},"finish_reason":null}]}
data: {"id":"chatcmpl-01...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-01...","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":19,"completion_tokens":9,"total_tokens":28}}
data: [DONE]На этом пути ошибки рендерятся в OpenAI-форме — с объектом error и полями message, type, param, code. Например, при неверном ключе придёт 401:
{
"error": {
"message": "Invalid or missing API key.",
"type": "authentication_error",
"param": null,
"code": "unauthorized"
}
}Полный список кодов, причин и способов починки — в справочнике ошибок.