api.horny.studio
Документация API
Очередь, файлы, вебхук и коды ошибок. Вызовы идут на https://api.horny.studio/v1. Каталог и цены открыты на странице API.
Каталог и ценыapi.horny.studio/v1Быстрый старт
Первый запрос
Базовый адрес: https://api.horny.studio/v1
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}'- Ответ 202 содержит request_id, status_url, response_url и cancel_url.
- Опрашивайте status_url раз в 2–5 секунд или укажите webhook_url.
- При 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 со своим ключом.
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 в заголовке защищает от повторной постановки
Ошибки
Коды ответов
| 401 | unauthorized | Ключ не передан, отозван или неверен |
| 402 | insufficient_balance | На общем балансе USDT не хватает средств. Пополнение в аккаунте студии, отдельного кошелька нет |
| 402 | key_limit_reached | Достигнут месячный лимит ключа |
| 400 | unknown_model · unpriceable | Модель не в каталоге или входные параметры не дают посчитать цену |
| 409 | idempotency_conflict | Тот же Idempotency-Key с другим телом |
| 409 | request_not_ready | Результат запрошен до завершения |
| 429 | rate_limited | Превышен RPM или число параллельных запросов ключа |
| 503 | capacity_unavailable | Временно нет мощностей — повторите позже, средства не списаны |
| 410 | expired | Срок подписанной ссылки (24 часа) истёк |