/api/v1/generate/cortesCortes IA
Corta um vídeo longo em vários clipes curtos verticais, rankeados por IA
(transcrição → ranking dos melhores trechos → recorte automático). Aceita um
link de página (YouTube, TikTok, Instagram) ou a URL de um arquivo de
vídeo já hospedado. Responde 202 Accepted com um taskId; acompanhe o
resultado por polling em GET /api/v1/tasks/:id.
Escopo necessário: generate:video.
O número de cortes é automático — derivado da duração do vídeo (cerca de 3
cortes a cada 10 min, mínimo 3, máximo 20). Não é configurável. A duração de
links do YouTube é re-resolvida no servidor (o durationSec enviado é ignorado
para YouTube). O custo é por duração do vídeo de entrada + número de cortes —
o débito acontece na criação da task.
Body
| Campo | Tipo | Obrigatório | Valores / restrições |
|---|---|---|---|
videoUrl | string | sim | URL HTTPS de um link de página (YouTube/TikTok/Instagram) ou de um arquivo de vídeo já hospedado. Host privado/interno é rejeitado. |
aspectRatio | string | não | 9:16 (default), 16:9, 1:1, 4:5, 4:3 ou 3:4 |
durationSec | number | não | Duração do vídeo em segundos. Usado só para precificar arquivos que não são do YouTube (links do YouTube têm a duração re-resolvida no servidor). |
Exemplo de request
curl -X POST https://avatrix.io/api/v1/generate/cortes \
-H "Authorization: Bearer av_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9f1c-cortes-001" \
-d '{
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"aspectRatio": "9:16"
}'Resposta — 202
{ "success": true, "data": { "taskId": "...", "status": "queued" } }Resultado — os N cortes
Faça polling em GET /api/v1/tasks/:id. Quando a task chega a completed, além
do resultUrl (o primeiro corte, usado como capa) o corpo traz a lista completa
clips:
{
"success": true,
"data": {
"id": "...",
"taskType": "cortes",
"status": "completed",
"resultUrl": "https://storage.avatrix.io/.../corte-1.mp4",
"clips": [
{
"url": "https://storage.avatrix.io/.../corte-1.mp4",
"title": "O momento que viralizou",
"hook": "Você não vai acreditar no que aconteceu",
"score": 0.92,
"startTime": 124.5,
"endTime": 152.0
}
]
}
}Cada item de clips traz url (mp4 do corte), title, hook, score
(relevância 0–1) e startTime/endTime (em segundos, no vídeo original).
Idempotência
Envie o header Idempotency-Key (opcional, máx. 128 chars). Requisições
repetidas com a mesma chave (24h) retornam a resposta original sem novo
débito. Ver Idempotência.
Erros relevantes
| Código | HTTP | Quando |
|---|---|---|
VALIDATION_ERROR | 400 | videoUrl ausente/inválida, não-HTTPS, host privado, ou vídeo acima da duração máxima |
INSUFFICIENT_CREDITS | 402 | saldo insuficiente |
FORBIDDEN | 403 | Cortes IA indisponível no plano, ou token sem generate:video |
RATE_LIMITED / MAX_CONCURRENT_TASKS | 429 | rate limit ou 20 tasks simultâneas |
DOWNLOAD_FAILED | 502 | não foi possível baixar o vídeo da URL informada |
GENERATION_FAILED | 502 | falha ao iniciar a geração |
FEATURE_DISABLED | 503 | Cortes IA temporariamente indisponível |
Ver Códigos de erro e Escopos.