Документация/Справочник API
02 / СПРАВОЧНИК

Методы и форматы API

Шлюз предоставляет OpenAI-совместимые Chat Completions и Responses, а также Anthropic-совместимые Messages. Ниже описано поведение именно WioRoute и основные поля, которые принимают его маршруты.

Модель в примерах вымышленная

provider/example-model — только образец формата ID. Перед отправкой запроса скопируйте действующий ID из каталога моделей или ответа GET /api/v1/models. Условия доступа проверяйте в кабинете.

АДРЕСА

Базовый URL и методы

Для OpenAI SDK и большинства OpenAI-совместимых приложений укажите https://api.ai.wiky.su/v1. Для Anthropic SDK и Claude Code укажите https://api.ai.wiky.su: они добавляют /v1/messages сами. Основной адрес методов — https://api.ai.wiky.su/v1. Совместимый путь /api/v1 работает на всех поддоменах сайта.

МетодПутьНазначение
GET/v1/modelsСписок ID маршрутов; нужен API-ключ.
POST/v1/chat/completionsДиалог OpenAI-формата, обычный или потоковый ответ.
POST/v1/responsesОтвет в формате Responses, обычный или SSE.
POST/v1/messagesДиалог Anthropic-формата, обычный или потоковый ответ.
POST/v1/messages/count_tokensОценка входящих токенов, не точный счётчик провайдера.
GET/healthПроверка доступности шлюза без ключа.

Методы личного кабинета находятся отдельно под /connect/api-v1/user/* и используют браузерную сессию, а не ключ для LLM.

АУТЕНТИФИКАЦИЯ

Как передавать ключ

Создайте ключ в личном кабинете. Шлюз принимает его как Bearer-токен или в заголовке x-api-key. Все методы /api/v1/* из таблицы, кроме /health, проверяют ключ.

Authorization: Bearer wio-live-ВАШ_КЛЮЧ
Content-Type: application/json
x-api-key: wio-live-ВАШ_КЛЮЧ
anthropic-version: 2023-06-01
Content-Type: application/json
Проверка ключа без запроса к модели

Вызовите GET /api/v1/models. Ответ 200 означает, что ключ принят. Ответ 401 означает отсутствие, ошибку или отзыв ключа.

OPENAI · CHAT

POST /api/v1/chat/completions

Минимальное тело содержит действующий ID маршрута в model и историю в messages. Неизвестный ID получает 400; шлюз не подменяет его другой моделью. Без stream метод возвращает один JSON-объект. Поля temperature, top_p, max_tokens, tools и tool_choice проходят через шлюз, но фактическая поддержка зависит от маршрута.

{
  "model": "provider/example-model",
  "messages": [
    { "role": "system", "content": "Отвечай кратко" },
    { "role": "user", "content": "Что такое SSE?" }
  ],
  "max_tokens": 300,
  "stream": false
}

В обычном ответе текст доступен в choices[0].message.content. Некоторые провайдеры добавляют usage.prompt_tokens и usage.completion_tokens. Передаваемый шлюзом ответ может содержать дополнительные поля провайдера.

{
  "choices": [{ "message": { "role": "assistant", "content": "SSE — поток событий от сервера." } }],
  "usage": { "prompt_tokens": 23, "completion_tokens": 12, "total_tokens": 35 }
}

Числа и текст здесь иллюстративные; реальный ответ зависит от маршрута.

OPENAI · RESPONSES

POST /api/v1/responses

Передайте input строкой или массивом сообщений; дополнительно можно указать instructions и max_output_tokens. Этот адаптер преобразует запрос в диалоговый формат, поэтому полный набор возможностей оригинального Responses API не гарантирован каждым маршрутом.

curl https://api.ai.wiky.su/v1/responses \
  -H "Authorization: Bearer $WIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"provider/example-model","input":"Назови три преимущества тестов","stream":false}'

Обычный ответ содержит output[].content[].text и удобное поле output_text. Для потока укажите "stream":true; шлюз отдаёт события семейства response.*.

ANTHROPIC · MESSAGES

POST /api/v1/messages

Обязательные поля для типичного запроса: model, max_tokens и messages. Заголовок anthropic-version: 2023-06-01 нужен Anthropic-совместимым клиентам. Пример вымышленного ID маршрута: provider/example-model.

curl https://api.ai.wiky.su/v1/messages \
  -H "x-api-key: $WIO_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"provider/example-model","max_tokens":512,"messages":[{"role":"user","content":"Привет!"}]}'

Обычный ответ содержит content[0].text, stop_reason и usage. Метод /v1/messages/count_tokens возвращает приблизительную оценку input_tokens по размеру JSON, поэтому не используйте её как точный подсчёт токенизатора модели.

Граница совместимости

Шлюз преобразует Anthropic-формат в диалоговый запрос и может представлять сложные блоки содержимого как текст. Нативные блоки вызова инструментов, мультимодальные данные и новые возможности Claude Code нужно проверять на выбранном маршруте отдельно.

ПОТОК

Как читать SSE

Передайте "stream":true. Для Chat Completions события идут строками data: {…}, а завершение помечается data: [DONE]. Для Anthropic Messages шлюз отправляет message_start, content_block_delta и message_stop. После начала потока ошибка, включая превышение зарезервированного бюджета, приходит как событие SSE даже при HTTP 200. Успех подтверждается только завершающим событием; если соединение прервалось, повторный запрос может сгенерировать другой ответ.

curl -N https://api.ai.wiky.su/v1/chat/completions \
  -H "Authorization: Bearer $WIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"provider/example-model","stream":true,"messages":[{"role":"user","content":"Привет"}]}'

Флаг -N важен для просмотра частей ответа в терминале. Клиентам следует собирать текст из последовательных delta, а не ожидать готовое сообщение в каждом событии.

ОТВЕТЫ С ОШИБКОЙ

Коды состояния

КодЧто проверить
400JSON, параметры запроса, полный ID маршрута и формат сообщений.
413Тело запроса слишком велико.
401Наличие ключа, его формат и статус в кабинете.
402Недостаточно доступного баланса или достигнут суточный предел платных расходов ключа.
403Маршрут выключен в настройках этого API-ключа.
429Процент бесплатного лимита и время до сброса в кабинете.
502/503/504Временная недоступность шлюза или маршрута; повторите запрос позже.

OpenAI-формат возвращает объект error; Anthropic-формат может вернуть {"type":"error","error":{…}}. Текст ошибки показывайте пользователю, но не публикуйте ключ и приватный запрос в логах.

Открыть пошаговую диагностику →

СЛЕДУЮЩИЙ РАЗДЕЛ
Подключение терминальных инструментов
Перейти к CLI →