Документация AI-HOST API
Один адрес, один ключ, формат запросов как у OpenAI. Если ваш код уже работает с OpenAI SDK — меняются две строки, и ничего больше.
| Метод | Путь | Что делает | Ключ |
|---|---|---|---|
| POST | /v1/auth/register | Регистрация по логину и паролю без email | нет |
| POST | /v1/auth/login | Вход и выдача API-ключа для приложений | нет |
| POST | /v1/chat/completions | Запрос к модели (совместим с OpenAI) | нужен |
| POST | /v1/messages | Anthropic Messages API — для Claude Code | нужен |
| POST | /v1/responses | OpenAI Responses API — для Codex CLI | нужен |
| GET | /v1/models | Модели, доступные вашему тарифу | нужен |
| GET | /v1/catalog | Публичный каталог всех моделей | нет |
| GET | /v1/metrics/models | Замеры скорости и качества моделей | нет |
| GET | /v1/site-config | Курс валюты и настройки витрины | нет |
| GET | /v1/me | Баланс, токены в пакетах, расход | нужен |
| GET | /v1/plan | Тариф и остаток квоты | нужен |
| GET | /v1/keys | Список ключей аккаунта | нужен |
| POST | /v1/keys | Создать новый ключ | нужен |
| DELETE | /v1/keys/{id} | Отозвать ключ | нужен |
| GET | /v1/usage | Расход по дням, моделям и ключам | нужен |
| POST | /v1/promo | Применить промокод | нужен |
| GET | /v1/referral | Реферальный код и приглашённые | нужен |
Три шага до первого ответа
- Войдите в кабинет
На странице регистрации одно нажатие создаёт аккаунт и выдаёт API-ключ для подключения приложений. Вход в кабинет — по логину и паролю.
sk-ai-host-…Сохраните API-ключ: второй раз полный ключ не показывается. - Положите ключ в переменную окружения
Не вставляйте ключ в исходный код — он попадёт в git и утечёт.
export AI_HOST_KEY="sk-ai-host-..." - Отправьте запрос
Модель выберите в каталоге: скорость, контекст и качество рядом.
Подключение к инструментам
Один адрес — разные протоколы. Codex, Claude Code, редакторы и свой код подключаются по-разному, поэтому ниже готовые конфиги: скопировали, подставили ключ, заработало.
model = "fast-chat"
model_provider = "aihost"
[model_providers.aihost]
name = "AI-HOST"
base_url = "https://ai-host.xyz/v1"
env_key = "AI_HOST_KEY"
wire_api = "responses"wire_api = "responses" обязателен: Codex не умеет Chat Completions. Конвертацию делает наш шлюз.
export AI_HOST_KEY="sk-ai-host-..."Имя переменной должно совпадать с env_key в конфиге.
codex "объясни этот проект"Ключ в заголовке
Все защищённые методы принимают ключ в Authorization. Ключ действует, пока вы его не отзовёте: срок жизни не ограничен.
Запрос к модели
Поддерживается всё, что вы ждёте от OpenAI-совместимого API: stream, tools,temperature, response_format.
curl https://ai-host.xyz/v1/chat/completions \
-H "Authorization: Bearer sk-ai-host-..." \
-H "Content-Type: application/json" \
-d '{
"model": "fast-chat",
"messages": [{"role": "user", "content": "Привет!"}],
"max_tokens": 200
}'Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| model | string | Обязательно. id модели из /v1/models |
| messages | array | Обязательно. История: role (system/user/assistant/tool), content |
| max_tokens | integer | Потолок ответа. Влияет на предварительную проверку баланса |
| temperature | number | 0 — предсказуемо, 1+ — разнообразно. По умолчанию у модели |
| top_p | number | Отсечение хвоста вероятностей. Меняйте либо это, либо temperature |
| stream | boolean | Отдавать ответ чанками по SSE |
| tools / tool_choice | array / object | Вызов функций. Работает у моделей с флагом «инструменты» |
| response_format | object | {"type":"json_object"} — ответ строгим JSON |
| reasoning_effort | string | Глубина рассуждения у reasoning-моделей |
Как считается стоимость
Списываются токены запроса и ответа — отдельно, по своей цене за миллион. Списание идёт сначала с пакетов токенов (они оплачены заранее), затем с баланса. Перед запросом мы проверяем, хватит ли средств на самый дорогой вариант (max_tokens включён): запрос на 2 ₽ при балансе в 1 ₽ вернёт 402, а не уведёт счёт в минус.
Повторы без двойной оплаты
Если приложение повторяет запрос при таймауте — передайте заголовок Idempotency-Key с уникальным значением (UUID). Повтор с тем же значением вернёт сохранённый ответ и не спишет деньги второй раз.
curl https://ai-host.xyz/v1/chat/completions \
-H "Authorization: Bearer sk-ai-host-..." \
-H "Idempotency-Key: 8f14e45f-ceea-467f-a4b5-1c2d3e4f5a6b" \
-H "Content-Type: application/json" \
-d '{"model":"fast-chat","messages":[{"role":"user","content":"Привет"}]}'Ответ по частям
С stream: true ответ приходит как Server-Sent Events: строки data: {...} и завершающая data: [DONE]. Так пользователь видит текст с первого токена, а не ждёт весь ответ.
stream = client.chat.completions.create(
model="fast-chat",
messages=[{"role": "user", "content": "Расскажи про Python"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)Что значит код ответа
| Код | Причина | Что делать |
|---|---|---|
| 401 | Ключ неверный или отозван | Создайте новый ключ в кабинете |
| 402 | Недостаточно средств на этот запрос | Уменьшите max_tokens или пополните баланс |
| 403 | Модель не входит в ваш тариф | Смените тариф или выберите другую модель |
| 404 | Модель не найдена | Сверьте id со списком /v1/models |
| 429 | Превышена частота или лимит тарифа | Подождите либо продлите тариф |
| 502 | Провайдер модели не ответил | Повторите запрос с Idempotency-Key |
Тело ошибки всегда JSON вида {"error":{"message":"…","type":"…","code":"…"}} — можно показывать пользователю message и не разбирать текст.
Частота и квота
- Частота — запросов в минуту. Считается с резервированием слота: параллельные запросы не пробивают лимит.
- Квота тарифа — токенов за период. Видна в кабинете полоской.
- Суточный лимит — если включён, токены за календарные сутки.
Личный кабинет за минуту
Регистрация без email: создайте логин и пароль, а API-ключ получите отдельно для подключения приложения.