Documentación de la API
Llumi Cut es un servicio HTTP. Importas recursos, envías un timeline JSON y descargas el resultado. Esta página resume los campos; el esquema completo y validado está en /openapi.json de cada instalación.
Autenticación
Cada instalación tiene su propia clave. Envíala en todas las rutas /v1:
Authorization: Bearer <tu-clave>Flujo
- Importar cada recurso con
POST /v1/assets?kind=image|video|audioy el fichero como cuerpo binario. Devuelve{"id": "…"}. - Encolar el montaje con
POST /v1/rendersy el timeline como JSON. Usa la cabeceraIdempotency-Keypara que un reintento no cree un segundo render. - Consultar
GET /v1/renders/{id}hasta questatusseacompleted, y descargar cada fichero deresult.files.
Endpoints
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /health | Estado del servicio |
| POST | /v1/assets?kind=image|video|audio | Importa un recurso binario y devuelve su id |
| POST | /v1/renders | Valida el timeline y lo encola |
| GET | /v1/renders | Últimos 100 renders |
| GET | /v1/renders/{id} | Estado, progreso, eventos y errores |
| POST | /v1/renders/{id}/cancel | Cancela un render en cola o en curso |
| POST | /v1/renders/{id}/retry | Reintenta un render detenido |
| DELETE | /v1/renders/{id} | Borra un render detenido y sus ficheros |
| GET | /v1/renders/{id}/files/{name} | Descarga una salida |
| POST | /v1/maintenance/purge?older_than_days=N | Borra renders detenidos con más de N días |
Timeline
Solo title, duration y clips son obligatorios. La suma de las duraciones de los planos debe coincidir con duration.
| Campo | Valores |
|---|---|
duration | 3–600 s |
width · aspect | 640, 1280 o 1920 (lado largo) · 16:9, 9:16, 1:1 |
fps | 24 o 30 |
background | Color de las bandas, #RRGGBB |
transition · transition_duration | cut, fade, fadeblack, fadewhite, dissolve, slideleft, slideright, wipeleft, wiperight, smoothleft, smoothright, circleopen, circleclose · 0,1–2 s |
image_motion | none, zoom_in, zoom_out, pan_left, pan_right, auto |
fade_in · fade_out | Fundido de todo el vídeo y su sonido, 0–5 s |
audio_asset_id · pauses | Canción principal opcional y hasta diez pausas de silencio digital |
Planos (clips[])
| Campo | Valores |
|---|---|
asset_id · duration | Imagen o vídeo · hasta 60 s |
trim_start · speed | Segundo de inicio en la fuente · 0,25–4 |
volume | Sonido propio del vídeo, 0–2 (0 lo silencia) |
fit | contain (con bandas) o cover (llena recortando) |
freeze · motion | Congela el primer fotograma · movimiento Ken Burns |
effects | Hasta seis de grayscale, sepia, vintage, noir, warm, cool, blur, sharpen, vignette, invert, mirror, flip |
brightness · contrast · saturation | −0,5–0,5 · 0,3–2 · 0–3 |
transition · transition_duration | Transición desde el plano anterior |
Sonido (audio_tracks[])
asset_id, start, trim_start, duration, volume (0–2), fade_in, fade_out, loop y duck. Una pista con duck: true baja unos 10 dB mientras suena la canción, una voz o el sonido de un vídeo.
Textos (texts[])
text (hasta cinco líneas), start, end, position (nueve posiciones) o x/y en fracciones del cuadro, size, color, outline_color, outline, box, box_color, box_opacity, font, bold, italic y animation (none, fade, slide_up, slide_left, pop, typewriter).
Capas (overlays[])
asset_id (imagen o vídeo), start, end, position o x/y, width, height (con ambos se rellena la caja: pantalla dividida y cuadrículas), margin, opacity, trim_start, volume, fade, border y border_color.
Subtítulos (captions[])
start, end y text. Se exportan como SRT y WebVTT y, con burn_subtitles: true, se integran en la imagen.
Salidas
video.mp4 (H.264 + AAC), audio.wav (banda sonora final), song.wav (solo con canción principal), subtitles.srt, subtitles.vtt, qc.json (duración, resolución, fuentes de sonido, avisos) y manifest.json.
Límites
- Recursos de hasta 250 MB, imágenes de hasta 8192 × 8192 y medios de hasta 610 s.
- Hasta 150 planos, 20 pistas de audio, 20 capas, 100 textos y 500 subtítulos.
- Textos, capas y subtítulos terminan dentro del vídeo. Una transición no puede durar más de la mitad de los planos que une.
- No se aceptan rutas de disco, URLs ni playlists como recursos.