Chat Completions

/v1/chat/completions — OpenAI-совместимый эндпоинт чатов. Параметры model, messages, stream, temperature. Потоковая передача SSE. Пример запроса и ответа на curl, Python (openai) и Node.

OpenAI-совместимый эндпоинт чатов. Работает с любым OpenAI SDK — поменяйте только base_url на https://plusvibeapi.ru/v1.

POSThttps://plusvibeapi.ru/v1/chat/completions

Параметры тела

PlusVibe реализует совместимый контракт Chat Completions, а не побайтовый passthrough: проверяет доступ, разрешает публичный идентификатор модели, применяет ограничения и может нормализовать поддерживаемые поля запроса. Ответы и ошибки также нормализуются и не гарантируют upstream-специфичные поля или заголовки. Для большинства задач достаточно первых трёх — model, messages и stream.

Основные — работают на всех моделях
ПараметрТипОписание
modelобяз.stringИмя модели из каталога, например gpt-5.6-luna или claude-opus-4.8.
messagesобяз.arrayМассив сообщений { role, content }. Роли: system, user, assistant.
streambooleantrue — потоковая передача ответа через SSE.
max_tokensintegerМаксимум токенов в ответе. Рекомендуем ставить не меньше 64: при слишком маленьком значении (например ≤ 16) модель может упереться в лимит (finish_reason: length) ещё до первого видимого токена и вернуть пустой ответ. Если нужен короткий результат — просите об этом в промпте, а max_tokens держите с запасом.
temperaturenumberСлучайность вывода, 0–2. По умолчанию 1.
Расширенные — поддержка зависит от модели
ПараметрТипОписание
top_pnumberзависит от моделиNucleus sampling (0–1). Альтернатива temperature; менять оба одновременно не рекомендуется.
top_knumberClaudeTop-K sampling. Только Anthropic-модели.
seedintegerGPTФиксирует результат для воспроизводимости. GPT-серия; у других игнорируется.
stopstring | arrayзависит от моделиСтоп-последовательность: одна строка или список до 4 строк.
frequency_penaltynumberGPT · ClaudeШтраф за повтор токенов по частоте (-2 до 2).
presence_penaltynumberGPT · ClaudeШтраф за уже встреченные токены (-2 до 2).
logprobsbooleanGPTtrue — вернуть log-вероятности токенов.
top_logprobsintegerGPTЧисло топ-вариантов логпробов на токен (1–20). Требует logprobs: true.
logit_biasobjectGPTТокен-ID → смещение логита (-100 до 100).
userstringзависит от моделиИдентификатор конечного пользователя (передаётся апстриму для rate-limit трекинга).
response_formatobjectGPT · ClaudeПринудительный вывод в JSON. Подробнее →
tools / tool_choicearray / stringGPT · ClaudeВызов функций. Подробнее →

Бейджи в столбце «Тип»: GPT — только GPT-серия, Claude — только Anthropic-модели, GPT · Claude — обе семьи, зависит от модели — проверьте в документации конкретной модели.

Поддержка параметров по вариантам маршрута

Одна и та же модель может быть обслужена разными маршрутами (вариантами :1, :2, …). Маршруты отличаются ценой, скоростью и набором поддерживаемых параметров.

Сравнение вариантов маршрута
ПараметрТипОписание
Вариант по умолчанию (:1)базовыйПолный набор OpenAI-параметров: temperature, top_p, seed, stop, penalties, logprobs, tools, response_format, streaming с usage-чанком.
Subscription-варианты (:2, :3…)расширенныйНабор параметров совпадает с базовым, но маршрут использует другую инфраструктуру. Отдельные параметры могут не поддерживаться — укажем в примечании к варианту.
OpenRouter-варианты (or-*)or-*Проксирует запрос через OpenRouter. Поддержка параметров зависит от конкретного провайдера на стороне OR. tool_choice: "required" и некоторые sampling-параметры могут не работать.
Неизвестный провайдеру параметр он игнорирует или возвращает ошибку 400. Если параметр критичен — используйте вариант :1 (по умолчанию) или проверьте поддержку в описании конкретного варианта на странице Модели.

Пример запроса

curl https://plusvibeapi.ru/v1/chat/completions \
  -H "Authorization: Bearer $PLUSVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "messages": [
      {"role": "user", "content": "Привет! Кто ты?"}
    ]
  }'

Пример ответа

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "gpt-5.6-luna",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Привет! Я ассистент, доступный через PlusVibe API."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 14,
    "total_tokens": 26
  }
}

Потоковая передача (SSE)

С "stream": true ответ приходит как поток Server-Sent Events: события data: … с дельтами, завершается data: [DONE].

curl https://plusvibeapi.ru/v1/chat/completions \
  -H "Authorization: Bearer $PLUSVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "stream": true,
    "messages": [{"role": "user", "content": "Считай до трёх"}]
  }'

Финальный чанк с usage

Последний чанк перед data: [DONE] содержит пустой choices: [] и поле usage со статистикой токенов. Используйте его для расчётов — не суммируйте дельты вручную.

data: {"id":"chatcmpl-...","choices":[],"usage":{"prompt_tokens":42,"completion_tokens":87,"total_tokens":129},"model":"gpt-5.6-luna","object":"chat.completion.chunk"}

data: [DONE]

Стоимость запроса возвращается в заголовке x-pv-cost-rub ответа. Для истории запросов — см. GET /v1/generations.

Совместимость

Эндпоинт совместим с OpenAI SDK (Python, Node и др.), Codex CLI и Claude Code. Claude Code работает через /v1/messages с заголовком x-api-key — см. Messages и Responses.