Cut.ProDocs
Guías

Enviando un vídeo para recortar

Las dos formas de obtener un video_id: por URL pública o subiendo tu propio archivo

Antes de generar clips necesitas un video_id. Hay dos formas de conseguirlo, y las dos llevan al mismo paso siguiente: llamar a POST /clips con ese video_id (mira el Quickstart).

El vídeo debe durar como mínimo 1 minuto. La duración máxima depende de tu plan.

Opción A: por URL pública

La forma más simple. Envía la URL de un vídeo público (YouTube, TikTok, Twitch, Kick, Vimeo y otros) para analizarlo. Analizar no cuesta 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" }'

La respuesta trae el id del vídeo (que va como video_id al enviar), el credits_cost (lo que se cobrará), el current_balance y el título y la duración del vídeo.

Cuando el enlace no sirve

No todo enlace público se puede recortar. Estos casos vuelven con 422 y un code que dice el motivo:

codeQué pasó
LIVE_STREAMLa emisión sigue en directo. Espera a que termine y quede como vídeo
PLAYLIST_URLLa URL es de una lista de reproducción. Envía el enlace de un vídeo
CHANNEL_URLLa URL es de un canal. Envía el enlace de un vídeo
SHORTS_NOT_SUPPORTEDEl vídeo ya es un corto vertical, no hay nada que recortar
AUDIO_ONLYEl enlace no tiene pista de vídeo
INVALID_DURATIONMenos de 1 minuto, o más de lo que permite tu plan
INVALID_URLLa plataforma no está soportada o la dirección está mal

Un vídeo privado, con restricción de edad o bloqueado por región vuelve con 403 (PRIVATE_VIDEO, AGE_RESTRICTED, REGION_BLOCKED).

Opción B: subiendo tu propio archivo

Para vídeos de tu ordenador, la subida son tres pasos con una URL prefirmada (presigned), enviando los bytes directo al almacenamiento.

Extensiones aceptadas: .mp4, .mov, .webm, .mkv. El tamaño máximo viene de tu plan, y un FILE_TOO_LARGE trae el techo real en extra.max_size. La URL prefirmada caduca en 1 hora.

Inicia la subida

Declara el nombre, el tamaño en bytes y el tipo del archivo. El file_size es obligatorio: es lo que decide si el archivo cabe en tu plan, y por encima de 5 GB la respuesta llega por partes (mode: "multipart") en vez de una sola URL.

La respuesta trae el video_id, la upload_url (adónde enviar los bytes) y expires_in (segundos hasta que caduque).

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": "mi-directo.mp4",
    "content_type": "video/mp4"
  }'

Envía los bytes a la upload_url

Haz un PUT del archivo directo a la upload_url. No envíes aquí tu clave de API (la URL ya está firmada), y usa el mismo Content-Type que declaraste en el paso anterior.

curl -X PUT "UPLOAD_URL" \
  -H "Content-Type: video/mp4" \
  --data-binary @mi-directo.mp4

El PUT debe devolver 200 antes de seguir.

Finaliza la subida

Registra la subida indicando las dimensiones y la duración del archivo (medidas por tu lado). La respuesta trae los metadatos del vídeo y el credits_cost, igual que el análisis por URL.

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": "mi-directo.mp4",
    "duration": 5400,
    "width": 1920,
    "height": 1080
  }'

Llama a este paso solo después de que el PUT devuelva 200. Si el archivo no está en el almacenamiento, la respuesta es 404 FILE_NOT_FOUND. Si la duración se sale de los límites, es 400 VIDEO_TOO_SHORT o VIDEO_TOO_LONG, y el extra trae la duration medida y el max_duration del plan.

Siguiente paso

Sigue en el Quickstart

Con ese id en la mano, continúa desde el paso "Envíalo al recorte" (POST /clips)

En esta página