Справочник API

Авторизация

Передавайте API-ключ Aporto как Bearer-токен в каждом запросе:

Authorization: Bearer $APORTO_API_KEY
Content-Type: application/json

Базовый адрес API — https://api.aporto.tech. Для OpenAI SDK используйте базовый URL https://api.aporto.tech/v1. Храните ключи на сервере.

Совместимые пути

СовместимостьПутьМетка в каталоге моделей
Получение списка моделейGET /v1/models—
OpenAI Chat CompletionsPOST /v1/chat/completionsopenai
OpenAI ResponsesPOST /v1/responsesopenai-response
Нативный Gemini generateContentPOST /v1beta/models/{model}:generateContentgemini

Проверяйте метки эндпоинтов рядом с каждой моделью в разделе «Модели и цены». Не каждая модель поддерживает все пути.

Потоковые ответы

Для Chat Completions укажите "stream": true. Ответ придёт как поток Server-Sent Events и завершится маркером [DONE].

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

Модели, совместимые с Responses, передают события Responses API, когда параметр stream равен true. Для нативного потокового Gemini используйте :streamGenerateContent?alt=sse. Клиент должен читать тело ответа по мере поступления данных и закрывать его при отмене запроса.

Расход и списания

Совместимые ответы содержат данные провайдера о расходе, например число входных и выходных токенов. Списание рассчитывается по измеренному шлюзом расходу и действующему тарифу выбранной модели. Клиентские расчёты остаются оценочными; фактические значения указаны в балансе и истории использования аккаунта.

Источник тарифов и валютный расчёт описаны в разделе «Баланс и оплата».

Ошибки

СтатусЗначениеДействие
400Некорректный запрос или неподдерживаемый параметрПроверьте тело запроса и эндпоинт
401API-ключ отсутствует или недействителенПроверьте Bearer-токен
404Неизвестная модель или путьОбновите список моделей и проверьте совместимость эндпоинта
429Лимит аккаунта, модели или вышестоящего провайдераУчитывайте Retry-After, если он есть, и увеличивайте задержку между повторами
5xxСбой шлюза или вышестоящего провайдераСохраните ID запроса и повторяйте его только когда это безопасно

Тело ошибки может содержать более точные сведения от шлюза или провайдера. Не используйте формулировки провайдера как стабильный машиночитаемый контракт.

Если запрос отклонён из-за недостаточного баланса, следуйте сообщению ошибки и пополните счёт в личном кабинете. Код статуса может зависеть от совместимого пути.

Лимиты и повторные запросы

Единого опубликованного лимита запросов в минуту для всех моделей нет. Ограничения могут зависеть от аккаунта, модели и вышестоящего провайдера. Ответ 429 сообщает о действующем ограничении.

Для 429 и временных ошибок 5xx используйте экспоненциальную задержку со случайным разбросом. Не повторяйте запрос генерации автоматически, если первый запрос мог завершиться: это может создать дублирующий результат и повторное списание.