Перейти к содержимому

api.horny.studio

Документация API

Очередь, файлы, вебхук и коды ошибок. Вызовы идут на https://api.horny.studio/v1. Каталог и цены открыты на странице API.

Каталог и ценыapi.horny.studio/v1

Быстрый старт

Первый запрос

Базовый адрес: https://api.horny.studio/v1

curl
curl -X POST https://api.horny.studio/v1/queue/bytedance/seedance-2.5/text-to-video \
  -H "Authorization: Key ch_live_…" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"a quiet street at dusk, handheld","duration_seconds":8,"resolution":"1080p","generate_audio":true}'
  1. Ответ 202 содержит request_id, status_url, response_url и cancel_url.
  2. Опрашивайте status_url раз в 2–5 секунд или укажите webhook_url.
  3. При COMPLETED заберите результат по response_url. Ссылки на файлы действуют 24 часа.

Для AI-агентов

Машиночитаемые источники

Справочник

Методы

GET/modelsКаталог моделей, единицы и цены
POST/estimateТочная стоимость запроса до запуска
POST/chat/completionsТекстовая модель: messages и max_tokens, ответ сразу или потоком
POST/queue/{model_id}Поставить генерацию в очередь, ответ 202 с request_id
GET/requests/{id}/statusСтатус: IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED
GET/requests/{id}/responseРезультат с подписанными ссылками на файлы
PUT/requests/{id}/cancelОтменить запрос в очереди
POST/filesЗагрузить входной файл, ответ — file_id
GET/requests/{id}Карточка запроса: статус, оценка, фактическое списание

Вебхуки

Уведомление о завершении

Передайте webhook_url в query или теле запроса. Уведомление — сигнал забрать результат: подтверждайте его запросом response_url со своим ключом.

http
POST https://api.horny.studio/v1/queue/bytedance/seedance-2.5/text-to-video?webhook_url=https://example.com/hooks/imhorny

// после завершения на webhook_url придёт POST
{
  "request_id": "req_9f2c…",
  "status": "COMPLETED",
  "response_url": "https://api.horny.studio/v1/requests/req_9f2c…/response"
}

Файлы

Входные данные

POST /v1/files с байтами и Content-Type. В ответе file_id вида chfile_…, который подставляется в любое URL-поле входных параметров.

  • Публичные https-ссылки на входные файлы также принимаются
  • Результаты не архивируются: подписанная ссылка живёт 24 часа, затем 410
  • Idempotency-Key в заголовке защищает от повторной постановки

Ошибки

Коды ответов

401unauthorizedКлюч не передан, отозван или неверен
402insufficient_balanceНа общем балансе USDT не хватает средств. Пополнение в аккаунте студии, отдельного кошелька нет
402key_limit_reachedДостигнут месячный лимит ключа
400unknown_model · unpriceableМодель не в каталоге или входные параметры не дают посчитать цену
409idempotency_conflictТот же Idempotency-Key с другим телом
409request_not_readyРезультат запрошен до завершения
429rate_limitedПревышен RPM или число параллельных запросов ключа
503capacity_unavailableВременно нет мощностей — повторите позже, средства не списаны
410expiredСрок подписанной ссылки (24 часа) истёк