Enviando um vídeo para clipagem
As duas formas de obter um video_id: por URL pública ou enviando seu próprio arquivo
Antes de gerar clipes, você precisa de um video_id. Há duas formas de consegui-lo, e as duas terminam no mesmo passo: chamar POST /clips com ele (veja o Quickstart).
O vídeo precisa ter no mínimo 1 minuto. A duração máxima depende do seu plano.
Opção A: por URL pública
A forma mais simples. Envie a URL de um vídeo público (YouTube, TikTok, Twitch, Kick, Vimeo, etc.) para análise. Analisar não custa créditos.
curl -X POST https://api.cut.pro/api/v1/clips/info \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }'A resposta traz o id do vídeo (é ele que vai como video_id na submissão), o credits_cost (o que será cobrado ao submeter), o current_balance e o título e a duração do vídeo.
Quando o link não serve
Nem todo link público pode ser clipado. Estes casos voltam com 422 e um code que diz o motivo:
code | O que aconteceu |
|---|---|
LIVE_STREAM | A transmissão ainda está no ar. Espere ela terminar e virar vídeo |
PLAYLIST_URL | A URL é de uma playlist. Envie o link de um vídeo |
CHANNEL_URL | A URL é de um canal. Envie o link de um vídeo |
SHORTS_NOT_SUPPORTED | O vídeo já é um curto vertical, não há o que cortar |
AUDIO_ONLY | O link não tem faixa de vídeo |
INVALID_DURATION | Menos de 1 minuto, ou mais do que o seu plano permite |
INVALID_URL | A plataforma não é suportada ou o endereço está errado |
Vídeo privado, com restrição de idade ou bloqueado por região volta com 403 (PRIVATE_VIDEO, AGE_RESTRICTED, REGION_BLOCKED).
Opção B: enviando seu próprio arquivo
Para vídeos do seu computador, o envio é feito em três passos com uma URL pré-assinada (presigned), enviando os bytes direto para o armazenamento.
Extensões aceitas: .mp4, .mov, .webm, .mkv. O tamanho máximo vem do seu plano, e um FILE_TOO_LARGE traz o teto real em extra.max_size. A URL pré-assinada expira em 1 hora.
Inicie o upload
Declare o nome, o tamanho em bytes e o tipo do arquivo. O file_size é obrigatório: é ele que decide se o arquivo cabe no seu plano, e se ele passar de 5 GB a resposta vem em partes (mode: "multipart") em vez de uma URL só.
A resposta traz o video_id, a upload_url (para onde enviar os bytes) e expires_in (segundos até expirar).
curl -X POST https://api.cut.pro/api/v1/videos/upload \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_name": "minha-live.mp4",
"file_size": 734003200,
"content_type": "video/mp4"
}'Envie os bytes para a upload_url
Faça um PUT do arquivo direto na upload_url. Não envie a sua chave de API aqui (a URL já é assinada), e use o mesmo Content-Type que você declarou no passo anterior.
curl -X PUT "UPLOAD_URL" \
-H "Content-Type: video/mp4" \
--data-binary @minha-live.mp4O PUT deve retornar 200 antes de seguir.
Finalize o upload
Registre o upload informando as dimensões e a duração do arquivo (medidas no seu lado). A resposta é a mesma da análise por URL: o id do vídeo, o credits_cost e a metadata.
curl -X POST https://api.cut.pro/api/v1/videos/upload/complete \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_id": "VIDEO_ID",
"file_name": "minha-live.mp4",
"duration": 5400,
"width": 1920,
"height": 1080
}'Chame este passo apenas depois que o PUT retornar 200. Se o arquivo não estiver no armazenamento, a resposta é 404 FILE_NOT_FOUND. Se a duração estiver fora dos limites, é 400 VIDEO_TOO_SHORT ou VIDEO_TOO_LONG, e o extra traz a duration medida e o max_duration do plano.
Próximo passo
Continue no Quickstart
Com o video_id em mãos, siga a partir do passo "Envie para clipagem" (POST /clips)