Перейти к содержимому

POST /v1/chat/completions

OpenAI-совместимые Chat Completions с потоковым режимом, инструментами, анализом изображений и алиасами моделей.

Запрос

curl https://api.model-gate.com/v1/chat/completions \
  -H "Authorization: Bearer mg_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ch-47",
    "messages": [
      {"role": "user", "content": "Explain this API in one sentence."}
    ],
    "stream": false
  }'

model может быть каноническим идентификатором или включённым алиасом. Model Gate разрешает алиас до расчёта цены и передаёт поставщику канонический идентификатор.

Ответ

{
  "id": "chatcmpl_example",
  "object": "chat.completion",
  "model": "claude-opus-4.7",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Model Gate provides one compatible API for multiple AI models."},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 17,
    "total_tokens": 31
  }
}

Потоковый запрос

Укажите "stream": true. События Server-Sent Events поставщика передаются без изменения содержимого успешных событий.

Асинхронный запрос

Для поддерживаемых эндпоинтов добавьте "async": true и "stream": false. Немедленный ответ имеет HTTP 202 и содержит request_id и URL результата Partner API.

Ошибки

Подробности ошибок поставщика проходят правила раскрытия: исходное тело может заменяться безопасным сообщением в формате протокола. Локальные ошибки валидации используют структуру ошибок Model Gate.

СтатусЗначениеДействие
400Неверный запросПроверьте тело запроса и идентификатор модели.
401Недействительный или замороженный ключПроверьте или перевыпустите API-ключ.
429Превышен лимит частоты или одновременных запросовУчитывайте Retry-After и делайте паузу перед повтором.
5xxВременная ошибка поставщика или шлюзаПовторяйте идемпотентные запросы с экспоненциальным увеличением паузы.

Session ID

Передавайте стабильный JSON session_id или заголовок X-Session-ID в каждом обращении этого диалога. Приоритет: session_id → X-Session-ID → распознанная сессия в metadata.user_id → prompt_cache_key → начальное содержимое диалога. Уровень идентификации не зависит от типа поставщика. Один и тот же ID не гарантирует попадание в кеш и не отключает допустимое резервное переключение. Автоматическое поведение, область действия, ограничения и отличия от идемпотентности и хранения контекста описаны в разделе идентификатор диалога и привязка маршрута.

Выбранный идентификатор сохраняется для потока и асинхронной отправки, когда эндпоинт её поддерживает. После тайм-аута не отправляйте новый платный POST только для проверки сессии: сначала проверьте существующий запрос.

Уже заданная распознанная сессия в метаданных используется без ошибки несовпадения; обычный metadata.user_id сохраняется и не считается диалогом. Более приоритетные явные поля побеждают. Форматы и ограничения передачи поставщику приведены в указанном справочнике идентификации.

Распознанная metadata-сессия имеет приоритет перед подсказкой кеширования. Автоматическая идентичность не учитывает известные маркеры cache_control и эквивалентные одиночные текстовые обёртки, не меняя запрос к модели. Отдельно настроенный совместимый транспорт сессионного заголовка не занимает обычный metadata.user_id; эту возможность настраивает оператор, а не клиент.