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:
code | Qué pasó |
|---|---|
LIVE_STREAM | La emisión sigue en directo. Espera a que termine y quede como vídeo |
PLAYLIST_URL | La URL es de una lista de reproducción. Envía el enlace de un vídeo |
CHANNEL_URL | La URL es de un canal. Envía el enlace de un vídeo |
SHORTS_NOT_SUPPORTED | El vídeo ya es un corto vertical, no hay nada que recortar |
AUDIO_ONLY | El enlace no tiene pista de vídeo |
INVALID_DURATION | Menos de 1 minuto, o más de lo que permite tu plan |
INVALID_URL | La 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.mp4El 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)