api.horny.studio
Usar como referencia
Las llamadas van a https://api.horny.studio/v1. El catálogo y los precios están abiertos en la página API.
Catálogo y preciosapi.horny.studio/v1Inicio rápido
Primera solicitud
URL de la base: 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}'- La respuesta 202 contiene request_id, status_url, response_url y cancele_url.
- Estado de la encuesta_url cada 2-5 segundos o pasar webhook_url.
- En COMPLETED obtener el resultado de response_url. Los enlaces de archivos son válidos durante 24 horas.
Para agentes de IA
Fuentes legibles por máquina
Usar como referencia
Métodos
| GET | /models | Catálogo de modelos, unidades y precios |
| POST | /estimate | Costo exacto de la solicitud antes del lanzamiento |
| POST | /chat/completions | Modelo de texto: mensajes y max_tokens, una respuesta directa o una secuencia |
| POST | /queue/{model_id} | Coloque una generación, 202 respuesta con request_id |
| GET | /requests/{id}/status | Estado: IN_QUEE, IN_PROGRESS, COMPLETADO, FALSADO |
| GET | /requests/{id}/response | Resultado con enlaces de archivos firmados |
| PUT | /requests/{id}/cancel | Cancelar una solicitud en cola |
| POST | /files | Cargar un archivo de entrada, devuelve file_id |
| GET | /requests/{id} | Tarjeta de solicitud: estado, presupuesto, cargo real |
Hooks web
Notificación de finalización
Pase webhook_url en la consulta o el cuerpo. Trate la notificación como una señal para obtener el resultado: confirmarlo a través de response_url con su clave.
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"
}Archivos
Archivos de entrada
POST /v1/files con los bytes y un tipo de contenido. La respuesta contiene un archivo_id como chfile_..., que va a cualquier campo URL de la entrada.
- También se aceptan enlaces públicos https a archivos de entrada
- Los resultados no se archivan: un enlace firmado vive 24 horas, luego 410
- Una cabecera Idempotency-Key protege contra envíos duplicados
Error
Códigos de respuesta
| 401 | unauthorized | Falta la clave, revocada o inválida |
| 402 | insufficient_balance | El saldo compartido de USDT no puede cubrir la bodega. Rellénalo en la cuenta del estudio. No hay cartera separada |
| 402 | key_limit_reached | Se alcanza el límite mensual de la llave |
| 400 | unknown_model · unpriceable | Modelo no en el catálogo o entradas no permiten precios |
| 409 | idempotency_conflict | La misma clave de Idempotencia con un cuerpo diferente |
| 409 | request_not_ready | Resultado solicitado antes de su finalización |
| 429 | rate_limited | Excedido el límite de RPM o concurrencia clave |
| 503 | capacity_unavailable | Capacidad temporalmente no disponible — reintentar más tarde, nada fue cargado |
| 410 | expired | El enlace firmado (24 horas) ha expirado |