Skip para content

api.horny.studio

Usar como referência

Queue, arquivos, webhook e erro codes. Calls go para https://api.horny.studio/v1. catalog e prices são abrir em API page.

Catálogo e pricesapi.horny.studio/v1

Quick iniciar

Primera solicitud

URL de la base: 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 response contains request_id, status_url, response_url e cancel_url.
  2. Poll status_url every 2–5 segundos ou pass webhook_url.
  3. Em Concluído fetch result de response_url. Arquivo links são valid para 24 hours.

Para AI agents

Fuentes legibles por máquina

Referência

Métodos

GET/modelsModelo catalog, units e prices
POST/estimateCosto exacto de la solicitud antes del lanzamiento
POST/chat/completionsTexto modelo: messages e max_tokens, um direct reply ou um stream
POST/queue/{model_id}Queue um geração, 202 response com request_id
GET/requests/{id}/statusStatus: IN_QUEUE, IN_PROGRESS, Concluído, Falhou
GET/requests/{id}/responseResult com signed arquivo links
PUT/requests/{id}/cancelCancelar um na fila request
POST/filesEnvie input file, returns file_id
GET/requests/{id}Request cartão: status, quote, actual charge

Hooks web

Notificação de finalização

Pass webhook_url entrar query ou body. Treat notification as um signal para fetch result: confirm it via response_url com seu key.

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"
}

Arquivos

Input arquivos

POST /v1/arquivos com bytes e um Content-Type. response holds um file_id like chfile_…, which goes into any URL field of input.

  • Public https links para input arquivos são accepted as well
  • Results são não archived: um signed link lives 24 hours, then 410
  • Um Idempotency-Key header protects against duplicate submits

Erro

Códigos de respuesta

401unauthorizedKey missing, revoked ou invalid
402insufficient_balanceshared USDT saldo cannot cover hold. Recarga entrar studio conta. There é no separate wallet
402key_limit_reachedkey's monthly limit é reached
400unknown_model · unpriceableModelo não entrar catalog ou inputs do não allow pricing
409idempotency_conflictSame Idempotency-Key com um different body
409request_not_readyResultado solicitado antes de su finalização
429rate_limitedKey RPM ou concurrency limit exceeded
503capacity_unavailableCapacity temporarily unavailable — retry later, nothing foi charged
410expiredsigned link (24 hours) has expirou