Справочник API
Основы интеграции
#Базовый URL
Все эндпоинты находятся под /v1 на собственном домене этого развёртывания. Выбирать регион не нужно — маршрутизация к вышестоящим провайдерам происходит за шлюзом.
#Заголовок аутентификации
Для аутентификации достаточно одного заголовка Authorization: Bearer. Ни подписи, ни метки времени, ни пользовательских заголовков — всего, что сверх bearer-токена требуют другие шлюзы, здесь нет.
#Формат ошибки
Отказы на стороне шлюза используют формат OpenAI с type "xiaoxiang_error". Ошибки провайдеров передаются без изменений, эндпоинты асинхронных задач отвечают плоским телом, а в двух случаях тела нет вовсе — прочитайте страницу об ошибках, прежде чем писать парсер.
HTTP/1.1 402 Payment Required
X-Oneapi-Request-Id: 2026091023...
{
"error": {
"message": "insufficient account balance, please top up to continue (request id: 2026091023...)",
"type": "xiaoxiang_error",
"code": "insufficient_user_quota"
}
}#Политика повторов
Повторяйте запросы при 429 и 5xx с экспоненциальной задержкой, учитывая Retry-After, если он есть. Не повторяйте при ошибках валидации 4xx — то же тело снова не пройдёт. Для платных запросов передавайте Idempotency-Key, чтобы повтор после тайм-аута вернул первый результат, а не запустил вторую задачу.
import time, requests
def call_with_backoff(url, headers, body, tries=5):
for i in range(tries):
r = requests.post(url, headers=headers, json=body)
if r.status_code not in (429, 500, 502, 503, 504):
return r
# 429 and 413 have no JSON body — never parse before checking status.
wait = int(r.headers.get("Retry-After", 2 ** i))
time.sleep(wait)
r.raise_for_status()#Машиночитаемая спецификация
Тот же контракт в двух генерируемых форматах: OpenAPI — для генерации клиентов, Postman и других API-инструментов, и один markdown-файл, который можно вставить в агента для программирования. Оба собираются из этих страниц, поэтому не расходятся с тем, что вы читаете.
openapi.json
OpenAPI 3.1 — все описанные пути, их параметры и ответы с ошибками.
llms-full.txt
Весь контракт API в одном markdown-файле, рассчитанном на контекстное окно агента.
llms.txt
Краткий указатель всех страниц документации для ИИ-клиентов, которые загружают его первым.
# Any OpenAPI generator works; this is the common one.
npx @openapitools/openapi-generator-cli generate \
-i https://www.aisplice.store/openapi.json \
-g python \
-o ./gateway-client#Обзор эндпоинтов
Каждый путь принимает тело запроса в формате OpenAI — специфичные для провайдеров параметры (anthropic tool_use, gemini thinking_config) передаются без изменений. Нативные маршруты провайдеров и замороженные устаревшие маршруты перечислены отдельно на странице совместимости.
| Текст | ||
| POST | /v1/chat/completions | Многоходовой чат, вызов инструментов, потоковая передача, JSON-режим. |
| POST | /v1/responses | Однократная генерация текста со структурированным выводом и рассуждениями. |
| POST | /v1/messages | Нативный формат Anthropic — та же авторизация, адаптер не нужен. |
| POST | /v1/responses/compact | Сжать длинный диалог на моделях, которые поддерживают сжатие, — без потокового режима. |
| Векторы | ||
| POST | /v1/moderations | Модерация контента в том же формате. |
| Музыка | ||
| POST | /v1/music/generations | Асинхронная генерация музыки — возвращает task_id; можно подключить вебхук. |
| GET | /v1/music/tasks/:task_id | Опрос статуса и прогресса асинхронной задачи генерации музыки. |
| GET | /v1/music/tasks/:task_id/content | Получить готовое аудио через шлюз. |
| Изображения | ||
| POST | /v1/images/tasks | Асинхронная генерация изображений — маршрут, которым пользуются модели изображений; возвращает task_id, можно подключить вебхук. |
| GET | /v1/images/tasks/:task_id | Опрос статуса и прогресса асинхронной задачи генерации изображения. |
| GET | /v1/images/tasks/:task_id/content | Получить итоговые URL изображений — постоянные ссылки, их можно сохранять. |
| Видео | ||
| POST | /v1/videos | Генерация видео в формате OpenAI (Sora, Doubao) — можно подключить вебхук. |
| GET | /v1/videos/:task_id | Опрос статуса асинхронной задачи; результат доступен по /content. |
| GET | /v1/videos/:task_id/content | Скачать готовое видео через шлюз. |
| DELETE | /v1/videos/:task_id | Отменить задачу, которая ещё не перешла в конечное состояние. |
| POST | /v1/videos/:video_id/remix | Перегенерировать существующее видео с новым промптом (на моделях с такой поддержкой). |
| 3D | ||
| POST | /v1/model3d/tasks | Асинхронная генерация и постобработка 3D-моделей — возвращает task_id. |
| GET | /v1/model3d/tasks/:task_id | Опрос 3D-задачи; URL результата приходит в теле задачи, маршрута /content нет. |
| Медиа | ||
| POST | /v1/media/upload-policy | Создать краткосрочную политику загрузки файла — изображения, видео, аудио или любого другого — в пределах заданного лимита. |
| Подписки в приложениях | ||
| POST | /v1/google-play/verify | Проверить токен покупки Google Play для вашего приложения с помощью сервисного аккаунта, привязанного к этому ключу, — бесплатно, без вызова модели. |
| POST | /v1/xsolla/verify | Проверяет, есть ли у пользователя Xsolla активная подписка, с API-ключом Xsolla, заданным на этом ключе, — бесплатно, без вызова модели. |
| Аккаунт | ||
| GET | /v1/balance | Баланс аккаунта и сумма, которую этот ключ ещё может потратить, — бесплатно, без вызова модели. |
| Метаданные | ||
| GET | /v1/models | Список всех моделей, доступных этому ключу. |
| GET | /v1/models/:model | Получить данные одной модели — в формате, который клиенты Anthropic и OpenAI запрашивают при запуске. |
Проблема не решена?
Пришлите нам ID запроса или текст ошибки, и мы разберёмся.