Cut.ProDocs

Clipe um vídeo

Analise o link, crie a submissão, acompanhe os estados e trabalhe com os clipes que a IA gerou.

A clipagem tem três recursos: o vídeo (a fonte), a submissão (um processamento daquele vídeo) e os clipes (os cortes que a submissão gerou). Um vídeo pode ter várias submissões, por exemplo com trechos ou templates diferentes.

POST /clips/info  →  POST /clips  →  GET .../submissions/{id}  →  GET .../clips
   análise           submissão          até completed               os cortes
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 título, autor, plataforma, duração em segundos, miniatura e o custo em créditos. Analisar não cobra, mas tem limite próprio de 10 por minuto. Se o arquivo está com você, use o upload no lugar deste passo.

Quando o link não serve, o code diz por quê:

StatusCodesSignifica
400VIDEO_TOO_LONGPassa da duração máxima do plano. extra.duration e extra.max_duration dizem quanto.
403PRIVATE_VIDEO, AGE_RESTRICTED, ACCESS_DENIED, REGION_BLOCKED, COPYRIGHT_BLOCKED, PLATFORM_NOT_SUPPORTEDA plataforma não entrega este vídeo.
404VIDEO_ID_NOT_FOUND, UNAVAILABLE, METADATA_UNAVAILABLEO vídeo não existe ou saiu do ar.
422PLAYLIST_URL, CHANNEL_URL, SHORTS_NOT_SUPPORTED, LIVE_STREAM, PREMIUM_ONLY, AUDIO_ONLY, INVALID_URL, INVALID_DURATION, INVALID_DIMENSIONSO link é válido, mas não é um vídeo que dá para clipar.

Crie a submissão

curl -X POST https://api.cut.pro/api/v1/clips \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_id": "7412908365112823",
    "source_language": "pt",
    "timeframe": { "start": 600, "end": 1800 },
    "template_id": "7398110254410021"
  }'
CampoObrigatórioDescrição
video_idsimO id de POST /clips/info ou do upload.
source_languagenãoauto (padrão), pt ou en. Fixe quando souber: acerta mais.
timeframenão{ start, end } em segundos. Clipa só esse trecho.
template_idnãoUm template de GET /templates. Todo clipe sai editado com ele, pronto para renderizar.
translate_tonãoCódigo ISO 639-1 (en, es). Traduz as legendas dos clipes e custa mais.
strategy_idnãoUma estratégia de clipagem salva na Cut.Pro. Sem ela, a IA usa a configuração padrão.

Os créditos saem na criação. credits_charged na resposta diz quanto saiu.

Erros comuns na criação: 402 INSUFFICIENT_CREDITS, 409 VIDEO_ALREADY_PROCESSING (o mesmo vídeo já está processando), 429 TOO_MANY_PENDING_CLIPS (fila do workspace cheia), 400 TIMEFRAME_OUT_OF_BOUNDS e 400 TIMEFRAME_TOO_SHORT.

Acompanhe a submissão

curl https://api.cut.pro/api/v1/clips/7412908365112823/submissions/7412908371004912 \
  -H "X-Api-Key: $CUTPRO_API_KEY"

Consulte a cada 5 a 10 segundos. Os estados seguem esta ordem:

statusO que está acontecendo
queuedNa fila. queue_position e estimated_time (em segundos) dizem quanto falta.
downloadingBaixando a fonte.
transcribingTranscrevendo o áudio.
video_analysisAnalisando a imagem.
analyzingA IA escolhendo os momentos.
finalizingGerando os clipes.
completedPronto. clips_count diz quantos clipes saíram.
failedFalhou. O motivo está em error_code.

Fonte que ainda não está no ar

Uma submissão pode parar em downloading porque a fonte ainda não existe por inteiro: uma estreia agendada, uma live ainda no ar ou uma gravação que a plataforma ainda processa. Nesse caso waiting_reason vem preenchido:

waiting_reasonSignifica
SOURCE_PREMIERE_SCHEDULEDEstreia agendada. waiting_until traz o horário anunciado, quando a plataforma informa.
SOURCE_LIVE_IN_PROGRESSA live ainda está no ar.
SOURCE_VOD_PROCESSINGA transmissão acabou e a plataforma ainda prepara a gravação.

Não é erro e não travou: a submissão continua sozinha quando a fonte fica disponível. Mostre isso para a pessoa e ofereça cancelar, porque o DELETE nesse estado devolve os créditos.

Quando falha

error_code diz o motivo. Os que começam com DOWNLOAD_ são da fonte (DOWNLOAD_PRIVATE_VIDEO, DOWNLOAD_MEMBERS_ONLY, DOWNLOAD_GEO_RESTRICTED, DOWNLOAD_REMOVED_BY_UPLOADER): trocar de vídeo é o caminho. EMPTY_TRANSCRIPT e DOWNLOAD_NO_AUDIO dizem que não há fala para clipar. Os demais são falha do processamento e valem uma nova tentativa:

curl -X POST https://api.cut.pro/api/v1/clips/7412908365112823/submissions/7412908371004912/retry \
  -H "X-Api-Key: $CUTPRO_API_KEY"

O retry cria uma nova submissão com as mesmas configurações e cobra como POST /clips. A que falhou continua no histórico. Só vale para submissão em failed: nas outras, a resposta é 409 SUBMISSION_NOT_FAILED.

Liste os clipes

curl "https://api.cut.pro/api/v1/clips/7412908365112823/submissions/7412908371004912/clips?min_rating=7&sort=rating&order=desc" \
  -H "X-Api-Key: $CUTPRO_API_KEY"
200 OK
{
  "clips": [
    {
      "id": "7412908412887301",
      "title": "O refrão que todo mundo sabe",
      "description": "O momento de maior energia do vídeo, com o público cantando junto.",
      "rating": 9.2,
      "start_time": 42.5,
      "end_time": 71.0,
      "language": "en",
      "created_at": "2026-10-29T18:04:50.000Z",
      "thumbnail_url": "https://...",
      "download_url": "https://...",
      "play_url": "https://...",
      "has_template_applied": false,
      "edit_id": null
    }
  ],
  "pagination": { "current_page": 1, "total_pages": 1, "total_count": 6, "has_next_page": false, "has_previous_page": false, "limit": 20 }
}
  • rating vai de 0 a 10. Filtre com min_rating e max_rating.
  • Ordene por rating, duration, title ou start_time.
  • download_url é o corte cru, sem edição. Para o MP4 com template e legenda, renderize.
  • Os links são assinados e duram pouco. Peça a lista de novo quando for usar.

Legendas do clipe

curl "https://api.cut.pro/api/v1/clips/7412908365112823/submissions/7412908371004912/clips/7412908412887301/subtitles?format=srt" \
  -H "X-Api-Key: $CUTPRO_API_KEY"

Devolve SRT ou texto puro (format=txt), com o tempo começando em 00:00 e alinhado ao clipe. Se o clipe tem edição, as legendas são as da edição, com correções e tradução.

Retenção

Os clipes de uma submissão não ficam para sempre. Passada a retenção, a submissão aparece com expired: true e as rotas de clipes respondem 410 SUBMISSION_EXPIRED. É permanente: não repita, envie o vídeo de novo. O que você já renderizou continua recuperável pelo edit_id.

Organize a biblioteca

RotaO que faz
GET /clipsLista os vídeos, com contadores de clipes, edições, exports e posts e o estado da última submissão.
GET /clips/{videoId}/submissionsLista as submissões de um vídeo, com credit_cost, timeframe e expired.
DELETE /clips/{videoId}/submissions/{submissionId}Apaga a submissão e os clipes. Se ainda processa, cancela e devolve os créditos.
DELETE /clips/{videoId}/submissions/{submissionId}/clips/{clipId}Apaga um clipe.
DELETE /clips/{videoId}Apaga o vídeo com todas as submissões. As que processam são canceladas e reembolsadas.

Apagar não tem volta.

Nesta página