API документация
OpenAI-совместимый шлюз доступа к LLM. Base URL: https://xn--80ahc1bui.xn--p1ai/v1
Аутентификация
Каждый запрос должен содержать заголовок с вашим API-ключом (получить его можно в личном кабинете):
Authorization: Bearer sk-ts-...
GET /v1/models
Список моделей, доступных вашему аккаунту. Поле id — это то значение, которое нужно передавать в параметре model при запросе /v1/chat/completions. Оно может отличаться от внутреннего идентификатора модели у провайдера.
curl https://xn--80ahc1bui.xn--p1ai/v1/models \
-H "Authorization: Bearer sk-ts-..."
{
"object": "list",
"data": [
{ "id": "openai/gpt-4o", "object": "model", "owned_by": "openrouter" }
]
}
GET /v1/balance
Текущий баланс подписки: абсолютные значения в USD и доля от лимита.
curl https://xn--80ahc1bui.xn--p1ai/v1/balance \
-H "Authorization: Bearer sk-ts-..."
{
"object": "balance",
"status": "active",
"limit_usd": "4.000000",
"spent_usd": "1.000000",
"remaining_usd": "3.000000",
"used_percent": "25.00",
"remaining_percent": "75.00",
"expires_at": "2026-09-23T12:00:00"
}
status: active, expired, exhausted или none (подписки ещё не было).
GET /v1/usage
Последние запросы аккаунта: время, модель, токены и стоимость — сначала новые. Пагинация через limit (по умолчанию 20, максимум 100) и offset.
curl "https://xn--80ahc1bui.xn--p1ai/v1/usage?limit=20&offset=0" \
-H "Authorization: Bearer sk-ts-..."
{
"object": "list",
"data": [
{
"id": 42,
"created_at": "2026-08-24T10:15:00",
"model": "openai/gpt-4o",
"prompt_tokens": 120,
"completion_tokens": 340,
"total_tokens": 460,
"cost_usd": "0.003400"
}
],
"has_more": false
}
POST /v1/chat/completions
Формат запроса и ответа совместим с OpenAI Chat Completions API. Требуется активная подписка.
Обычный ответ
curl https://xn--80ahc1bui.xn--p1ai/v1/chat/completions \
-H "Authorization: Bearer sk-ts-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Tool calling (агенты)
Поддерживается OpenAI-формат tools, tool_choice, tool_calls в ответе и сообщения role: "tool". Подходит для Fedot, Cursor IDE и Python-агентов на openai SDK.
curl https://xn--80ahc1bui.xn--p1ai/v1/chat/completions \
-H "Authorization: Bearer sk-ts-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Weather in Moscow?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}]
}'
Smoke agent loop: python -m scripts.smoke_tool_agent (нужен TOKEN_SELLER_API_KEY).
Потоковый ответ (streaming)
Добавьте "stream": true — ответ придёт как text/event-stream, чанками data: {...}, последний — data: [DONE]. Tool calls в stream — те же SSE-чанки с delta.tool_calls.
curl https://xn--80ahc1bui.xn--p1ai/v1/chat/completions \
-H "Authorization: Bearer sk-ts-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"messages": [{"role": "user", "content": "Привет!"}],
"stream": true
}'
Ошибки
Ошибки возвращаются в формате OpenAI:
{ "error": { "message": "...", "type": "..." } }
| Код | type | Причина |
|---|---|---|
| 401 | invalid_request_error | Неверный или отсутствующий API-ключ |
| 402 | insufficient_quota | Нет активной подписки или лимит исчерпан |
| 403 | permission_error | Аккаунт заблокирован |
| 404 | invalid_request_error | Модель не найдена или недоступна |
| 502 | api_error | Ошибка провайдера |
Интерактивная схема (Swagger): /docs