Documentation de l'API
Llumi Cut est un service HTTP. Vous envoyez les médias, transmettez une timeline JSON et téléchargez le résultat. Cette page résume les champs ; le schéma complet et validé se trouve à /openapi.json sur chaque installation.
Authentification
Chaque installation a sa propre clé. Envoyez-la sur chaque route /v1 :
Authorization: Bearer <votre-cle>Déroulement
- Envoyez chaque fichier avec
POST /v1/assets?kind=image|video|audioet le fichier en corps binaire. La réponse est{"id": "…"}. - Mettez en file le montage avec
POST /v1/renderset la timeline en JSON. Utilisez l'en-têteIdempotency-Keypour qu'une relance ne crée pas un second rendu. - Interrogez
GET /v1/renders/{id}jusqu'à ce questatusvaillecompleted, puis téléchargez chaque fichier deresult.files.
Endpoints
| Méthode | Chemin | Rôle |
|---|---|---|
| GET | /health | État du service |
| POST | /v1/assets?kind=image|video|audio | Envoie un fichier binaire et renvoie son ID |
| POST | /v1/renders | Valide la timeline et la met en file |
| GET | /v1/renders | Les 100 derniers rendus |
| GET | /v1/renders/{id} | État, progression, événements et erreurs |
| POST | /v1/renders/{id}/cancel | Annule un rendu en file ou en cours |
| POST | /v1/renders/{id}/retry | Relance un rendu arrêté |
| DELETE | /v1/renders/{id} | Supprime un rendu arrêté et ses fichiers |
| GET | /v1/renders/{id}/files/{name} | Télécharge une sortie |
| POST | /v1/maintenance/purge?older_than_days=N | Supprime les rendus arrêtés de plus de N jours |
Timeline
Seuls title, duration et clips sont obligatoires. La somme des durées des plans doit être égale à duration.
| Champ | Valeurs |
|---|---|
duration | 3–600 s |
width · aspect | 640, 1280 ou 1920 (grand côté) · 16:9, 9:16, 1:1 |
fps | 24 ou 30 |
background | Couleur des bandes, #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 | Fondu de toute la vidéo et de son son, 0–5 s |
audio_asset_id · pauses | Musique principale facultative et jusqu'à dix pauses de silence numérique |
Plans (clips[])
| Champ | Valeurs |
|---|---|
asset_id · duration | Image ou vidéo · jusqu'à 60 s |
trim_start · speed | Seconde de départ dans la source · 0,25–4 |
volume | Son propre du clip, 0–2 (0 le coupe) |
fit | contain (avec bandes) ou cover (remplit en recadrant) |
freeze · motion | Fige la première image · mouvement Ken Burns |
effects | Jusqu'à six parmi 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 | Transition depuis le plan précédent |
Son (audio_tracks[])
asset_id, start, trim_start, duration, volume (0–2), fade_in, fade_out, loop et duck. Une piste avec duck: true baisse d'environ 10 dB pendant que la musique principale, une voix ou le son d'un clip est joué.
Titres (texts[])
text (jusqu'à cinq lignes), start, end, position (neuf positions) ou x/y en fractions de l'image, size, color, outline_color, outline, box, box_color, box_opacity, font, bold, italic et animation (none, fade, slide_up, slide_left, pop, typewriter).
Calques (overlays[])
asset_id (image ou vidéo), start, end, position ou x/y, width, height (avec les deux, le cadre est rempli : écran partagé et mosaïques), margin, opacity, trim_start, volume, fade, border et border_color.
Sous-titres (captions[])
start, end et text. Ils sont exportés en SRT et WebVTT et, avec burn_subtitles: true, incrustés dans l'image.
Sorties
video.mp4 (H.264 + AAC), audio.wav (bande son finale), song.wav (uniquement avec une musique principale), subtitles.srt, subtitles.vtt, qc.json (durée, résolution, sources sonores, avertissements) et manifest.json.
Limites
- Fichiers jusqu'à 250 MB, images jusqu'à 8192 × 8192 et médias jusqu'à 610 s.
- Jusqu'à 150 plans, 20 pistes audio, 20 calques, 100 titres et 500 sous-titres.
- Titres, calques et sous-titres se terminent dans la vidéo. Une transition ne peut pas dépasser la moitié de l'un des deux plans qu'elle relie.
- Les chemins disque, les URL et les playlists ne sont pas acceptés comme médias.