API Hop

Документация

Документация API Hop

Общие завершения чата

Единый API чата для переключения текстовых моделей параметром `model`. Формат запроса совместим с OpenAI Chat Completions.

POSThttps://api.apihop.ai/v1/chat-completions

Единый API чата для переключения текстовых моделей параметром model. Формат запроса совместим с OpenAI Chat Completions.

Claude Sonnet 4.6 (claude-sonnet-4-6) поддерживается вышестоящим поставщиком, но сейчас не опубликован на RequestBeam. Это не действующая модель интеграции по умолчанию. Перед вызовом любой модели подтвердите доступ своим ответом GET https://api.apihop.ai/v1/models.

По умолчанию эндпоинт возвращает один полный JSON-ответ. Явно задайте stream: true, если нужна потоковая передача SSE.

text
POST https://api.apihop.ai/v1/chat-completions

Аутентификация

Все запросы требуют аутентификации с токеном Bearer.

http
Authorization: Bearer YOUR_API_KEY

Если аутентификация не удалась, проверьте:

  • Правильность ключа API
  • Действительность ключа для этого базового URL API
  • Правильность написания заголовка запроса
  • Не переписывает ли прокси заголовок авторизации

Тело запроса

modelstringобязательноПо умолчанию: gpt-5.4

Документированные ID текстовых моделей (подтвердите доступ через GET https://api.apihop.ai/v1/models):

  • OpenAI: gpt-5.4, gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-6-astra
  • Anthropic: claude-fable-5, claude-fable-5-1, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8, claude-opus-5, claude-opus-5-5, claude-sonnet-5, claude-sonnet-5-5
  • DeepSeek: deepseek-v4-flash, deepseek-v4-pro, deepseek-v4.1-flash

(V4.1 Flash — отдельный ID модели, доступный только после развёртывания и включения; проверьте GET https://api.apihop.ai/v1/models).

  • Gemini: gemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash, gemini-3.5-flash-lite, gemini-4-argon (после развёртывания и включения)
  • Kimi: kimi-k3
  • MiniMax: minimax-m3

Полный список и модели, видимые текущему ключу API, смотрите в Каталоге моделей. Используйте собственный ответ GET https://api.apihop.ai/v1/models как текущий источник доступности. Рекомендации по выбору и примеры для семейств приведены в руководствах DeepSeek, Gemini, Kimi и MiniMax.

messagesobject[]обязательно

Сообщения чата. Каждое сообщение должно включать:

  • role: system, user или assistant
  • content: содержимое сообщения

Пример:

json
  [
    {"role": "system", "content": "You are a helpful Python tutor."},
    {"role": "user", "content": "How should I learn programming?"}
  ]

Ограничения выборки конкретных моделей: gpt-6-astra не принимает прежние temperature, top_p и top_logprobs; пропускайте эти поля, даже если старый клиент добавляет их. Playground GPT-6 Astra в RequestBeam также скрывает прежние настройки выборки и штрафов. claude-sonnet-5 отклонил top_p при документированной повторной проверке интеграции, поэтому пропускайте его и для этой модели. Передача необязательного поля через прокси не доказывает его поддержку выбранной вышестоящей моделью.

temperaturenumberПо умолчанию: 1.0

Температура выборки. Клиенты, совместимые с OpenAI, обычно используют от 0 до 2, но окончательное решение о проверке принимает выбранная модель.

max_tokensinteger

Необязательное максимальное число токенов вывода как положительное целое. Пропустите поле для значения по умолчанию провайдера выбранной модели; значения по умолчанию и максимальные лимиты зависят от модели и конфигурации провайдера.

В зависимости от модели бюджет может включать токены рассуждений и итоговый текст. Малый бюджет может вызвать finish_reason: "length", обрезать ответ или исчерпаться до итогового текста. Увеличение может повысить стоимость.

max_completion_tokensinteger

Необязательная альтернатива совместимости max_tokens с теми же особенностями бюджета. Модель может принимать только одно из полей, поэтому при смене модели начинайте с минимального тела. Пропустите оба для значения по умолчанию провайдера.

streambooleanПо умолчанию: false

Нужна ли потоковая передача ответа.

  • true: возвращает Server-Sent Events
  • false: возвращает один полный ответ
top_pnumberПо умолчанию: 1.0

Параметр ядерной выборки. Клиенты, совместимые с OpenAI, обычно используют от 0 до 1; окончательную проверку выполняет выбранная модель.

frequency_penaltynumberПо умолчанию: 0

Штраф за частоту. Клиенты, совместимые с OpenAI, обычно используют от -2.0 до 2.0; окончательную проверку выполняет выбранная модель.

presence_penaltynumberПо умолчанию: 0

Штраф за присутствие. Клиенты, совместимые с OpenAI, обычно используют от -2.0 до 2.0; окончательную проверку выполняет выбранная модель.

stopstring | array

Стоп-последовательность или массив стоп-последовательностей. Допустимое число и поведение определяет выбранная модель.

nintegerПо умолчанию: 1

Число генерируемых ответов. Используйте число вроде 1, а не строку в кавычках.

Различия параметров моделей

Текущие текстовые модели поддерживают минимальные потоковые и непотоковые запросы Chat, но принятие и эффекты необязательных параметров зависят от выбранной модели и её реализации совместимости.

Последняя повторная проверка 2026-09-26 приняла claude-fable-5 с temperature: 0 и вернула текст. Та же проверка отклонила claude-sonnet-5 с top_p: 0.9, вернув HTTP 400 и top_p is deprecated. Пропускайте top_p для этой модели. Принятие не доказывает эффекта выборки и не гарантирует другие модели или последующие запросы; не считайте все параметры выборки поддерживаемыми.

Проверки OpenAI от 2026-09-26 приняли stop для gpt-5.6-sol и gpt-5.6-terra. Принятие параметров может меняться у провайдера и не доказывает эффективность стоп-последовательности.

Нативная совместимая с OpenAI передача Chat сохраняет top_p и stop в запросе провайдеру. Маршрут, преобразующий Chat в Responses, сохраняет top_p, но не пересылает stop. Пересылка поля не доказывает поддержку провайдера или эффект; ни одно из полей не имеет общей гарантии платформы для всех маршрутов.

При смене модели начинайте с минимального запроса, затем отдельно проверяйте выборку, стоп-последовательности и расширенные параметры инструментов. Для стоп-последовательностей проверяйте фактический текст и причину остановки, а не только HTTP-статус. HTTP 200 не доказывает эффекта выборки. Бюджеты вывода должны покрывать размышления модели и итоговый текст.

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

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": "Hello, introduce yourself briefly."
    }
  ],
  "stream": false
}

Ответ

idstring

Уникальный идентификатор ответа.

objectstring

Тип объекта, обычно chat.completion или chat.completion.chunk при потоковой передаче.

createdinteger

Временная метка создания Unix.

modelstring

Идентификатор модели, возвращённый в ответе.

choicesarray

Сгенерированные варианты, включая содержимое сообщения, индекс и причину завершения.

usageobject

Статистика использования токенов.

Пример успешного ответа

json
{
  "id": "chatcmpl-9876543210",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "I am an AI assistant that can help with writing, coding, and analysis."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 42,
    "total_tokens": 70
  }
}

Ответ с ошибкой

Полный справочник кодов, различия протоколов и этапы диагностики приведены в разделе Коды ошибок и устранение неполадок.

HTTP-ошибки Chat Completions используют плоское тело JSON, включая HTTP-ошибки провайдера до начала потока SSE. Например, HTTP 402 возвращает:

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}
  • code: числовой код ошибки платформы, отдельный от HTTP-статуса и не строка
  • message: понятное человеку описание ошибки
  • type: api_error
  • requestId: необязательный идентификатор запроса для диагностики
HTTP-статусcodeЗначение
40010000Некорректный запрос
40120000Отсутствующая или неверная аутентификация
40240000Недостаточный баланс
40320001Доступ запрещён или модель недоступна этому ключу
40430000Модель или ресурс не найдены
40930001Конфликт запроса
42210001Ошибка проверки
42940001Превышен лимит частоты
50050003Внутренняя ошибка
50250000Ошибка вышестоящего провайдера
50350001Сервис недоступен
50450002Тайм-аут шлюза

Сначала проверяйте HTTP-статус, чтобы определить успех запроса, затем сравнивайте числовой code для обработки в приложении. Не сравнивайте code со строками вроде "400", не считайте его равным HTTP-статусу и не разбирайте message как стабильный идентификатор ошибки. Отсутствующий или неверно типизированный messages отклоняется с HTTP 400 и code: 10000 до вызова провайдера.

Этот формат ошибок применяется к HTTP-ответам Chat Completions, но не к ошибкам уже начатого потока SSE или других протоколов API. Каталог моделей и эндпоинты нативных протоколов имеют собственные документированные форматы ошибок.