Документация API Hop
Общие завершения чата
Единый API чата для переключения текстовых моделей параметром `model`. Формат запроса совместим с OpenAI Chat Completions.
https://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.
POST https://api.apihop.ai/v1/chat-completionsАутентификация
Все запросы требуют аутентификации с токеном Bearer.
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илиassistantcontent: содержимое сообщения
Пример:
[
{"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 Eventsfalse: возвращает один полный ответ
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 не доказывает эффекта выборки. Бюджеты вывода должны покрывать размышления модели и итоговый текст.
Пример запроса
{
"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Статистика использования токенов.
Пример успешного ответа
{
"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 возвращает:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: числовой код ошибки платформы, отдельный от HTTP-статуса и не строкаmessage: понятное человеку описание ошибкиtype:api_errorrequestId: необязательный идентификатор запроса для диагностики
| HTTP-статус | code | Значение |
|---|---|---|
| 400 | 10000 | Некорректный запрос |
| 401 | 20000 | Отсутствующая или неверная аутентификация |
| 402 | 40000 | Недостаточный баланс |
| 403 | 20001 | Доступ запрещён или модель недоступна этому ключу |
| 404 | 30000 | Модель или ресурс не найдены |
| 409 | 30001 | Конфликт запроса |
| 422 | 10001 | Ошибка проверки |
| 429 | 40001 | Превышен лимит частоты |
| 500 | 50003 | Внутренняя ошибка |
| 502 | 50000 | Ошибка вышестоящего провайдера |
| 503 | 50001 | Сервис недоступен |
| 504 | 50002 | Тайм-аут шлюза |
Сначала проверяйте HTTP-статус, чтобы определить успех запроса, затем сравнивайте числовой code для обработки в приложении. Не сравнивайте code со строками вроде "400", не считайте его равным HTTP-статусу и не разбирайте message как стабильный идентификатор ошибки. Отсутствующий или неверно типизированный messages отклоняется с HTTP 400 и code: 10000 до вызова провайдера.
Этот формат ошибок применяется к HTTP-ответам Chat Completions, но не к ошибкам уже начатого потока SSE или других протоколов API. Каталог моделей и эндпоинты нативных протоколов имеют собственные документированные форматы ошибок.