> ## Documentation Index
> Fetch the complete documentation index at: https://cut.pro/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 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 obter um, e ambas convergem para o mesmo passo seguinte: chamar `POST /clips` com esse `video_id` (veja o [Quickstart](/api-reference/quickstart)).

<Note>
  O vídeo precisa ter **no mínimo 1 minuto**. A duração máxima depende do seu plano.
</Note>

## 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.**

```bash theme={null}
curl -X POST https://api.cut.pro/api/v1/clips/info \
  -H "X-Api-Key: SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://www.youtube.com/watch?v=..." }'
```

A resposta traz `video_id`, `credits_cost` (o que será cobrado ao submeter), `current_balance` e o título/duração do vídeo. Guarde o `video_id` e siga para `POST /clips`.

## 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.

<Note>
  Limites do upload: **máximo 2 GB** e extensões **`.mp4`, `.mov`, `.webm`, `.mkv`**. A URL pré-assinada expira em **1 hora**.
</Note>

<Steps>
  <Step title="Inicie o upload">
    Declare o nome do arquivo e o tipo de conteúdo. A resposta traz o `video_id`, a `upload_url` (para onde enviar os bytes) e `expires_in` (segundos até expirar).

    ```bash theme={null}
    curl -X POST https://api.cut.pro/api/v1/videos/upload \
      -H "X-Api-Key: SUA_CHAVE" \
      -H "Content-Type: application/json" \
      -d '{
        "file_name": "minha-live.mp4",
        "content_type": "video/mp4"
      }'
    ```
  </Step>

  <Step title="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.

    ```bash theme={null}
    curl -X PUT "UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --data-binary @minha-live.mp4
    ```

    O `PUT` deve retornar `200` antes de seguir.
  </Step>

  <Step title="Finalize o upload">
    Registre o upload informando as dimensões e a duração do arquivo (medidas no seu lado). A resposta traz a metadata do vídeo e o `credits_cost`, igual à análise por URL.

    ```bash theme={null}
    curl -X POST https://api.cut.pro/api/v1/videos/upload/complete \
      -H "X-Api-Key: SUA_CHAVE" \
      -H "Content-Type: application/json" \
      -d '{
        "video_id": "VIDEO_ID",
        "file_name": "minha-live.mp4",
        "duration": 5400,
        "width": 1920,
        "height": 1080
      }'
    ```

    <Warning>
      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, retorna `400 VIDEO_TOO_SHORT` ou `VIDEO_TOO_LONG` (com `max_duration`).
    </Warning>
  </Step>
</Steps>

## Próximo passo

Com o `video_id` em mãos (de qualquer uma das opções), submeta para clipagem:

<Card icon="terminal" href="/api-reference/quickstart" horizontal>
  Continue no **Quickstart** a partir do passo "Envie para clipagem" (`POST /clips`).
</Card>
