Llumi Cut · Nordic Byte

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

  1. Envoyez chaque fichier avec POST /v1/assets?kind=image|video|audio et le fichier en corps binaire. La réponse est {"id": "…"}.
  2. Mettez en file le montage avec POST /v1/renders et la timeline en JSON. Utilisez l'en-tête Idempotency-Key pour qu'une relance ne crée pas un second rendu.
  3. Interrogez GET /v1/renders/{id} jusqu'à ce que status vaille completed, puis téléchargez chaque fichier de result.files.

Endpoints

MéthodeCheminRôle
GET/healthÉtat du service
POST/v1/assets?kind=image|video|audioEnvoie un fichier binaire et renvoie son ID
POST/v1/rendersValide la timeline et la met en file
GET/v1/rendersLes 100 derniers rendus
GET/v1/renders/{id}État, progression, événements et erreurs
POST/v1/renders/{id}/cancelAnnule un rendu en file ou en cours
POST/v1/renders/{id}/retryRelance 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=NSupprime 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.

ChampValeurs
duration3–600 s
width · aspect640, 1280 ou 1920 (grand côté) · 16:9, 9:16, 1:1
fps24 ou 30
backgroundCouleur des bandes, #RRGGBB
transition · transition_durationcut, fade, fadeblack, fadewhite, dissolve, slideleft, slideright, wipeleft, wiperight, smoothleft, smoothright, circleopen, circleclose · 0,1–2 s
image_motionnone, zoom_in, zoom_out, pan_left, pan_right, auto
fade_in · fade_outFondu de toute la vidéo et de son son, 0–5 s
audio_asset_id · pausesMusique principale facultative et jusqu'à dix pauses de silence numérique

Plans (clips[])

ChampValeurs
asset_id · durationImage ou vidéo · jusqu'à 60 s
trim_start · speedSeconde de départ dans la source · 0,25–4
volumeSon propre du clip, 0–2 (0 le coupe)
fitcontain (avec bandes) ou cover (remplit en recadrant)
freeze · motionFige la première image · mouvement Ken Burns
effectsJusqu'à 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_durationTransition 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