Llumi Cut · Nordic Byte

API-Dokumentation

Llumi Cut ist ein HTTP-Dienst. Sie laden Medien hoch, senden eine JSON-Timeline und laden das Ergebnis herunter. Diese Seite fasst die Felder zusammen; das vollständige, validierte Schema liegt auf jeder Installation unter /openapi.json.

Authentifizierung

Jede Installation hat einen eigenen Schlüssel. Senden Sie ihn bei jeder /v1-Route mit:

Authorization: Bearer <ihr-schluessel>

Ablauf

  1. Laden Sie jede Datei mit POST /v1/assets?kind=image|video|audio hoch, die Datei als binären Body. Die Antwort ist {"id": "…"}.
  2. Stellen Sie den Schnitt mit POST /v1/renders und der Timeline als JSON in die Warteschlange. Nutzen Sie den Header Idempotency-Key, damit eine Wiederholung kein zweites Rendering erzeugt.
  3. Fragen Sie GET /v1/renders/{id} ab, bis status den Wert completed hat, und laden Sie dann jede Datei aus result.files herunter.

Endpunkte

MethodePfadFunktion
GET/healthStatus des Dienstes
POST/v1/assets?kind=image|video|audioLädt eine Binärdatei hoch und gibt ihre ID zurück
POST/v1/rendersPrüft die Timeline und stellt sie in die Warteschlange
GET/v1/rendersDie letzten 100 Renderings
GET/v1/renders/{id}Status, Fortschritt, Ereignisse und Fehler
POST/v1/renders/{id}/cancelBricht ein wartendes oder laufendes Rendering ab
POST/v1/renders/{id}/retryWiederholt ein angehaltenes Rendering
DELETE/v1/renders/{id}Löscht ein angehaltenes Rendering und seine Dateien
GET/v1/renders/{id}/files/{name}Lädt eine Ausgabe herunter
POST/v1/maintenance/purge?older_than_days=NLöscht angehaltene Renderings, die älter als N Tage sind

Timeline

Pflicht sind nur title, duration und clips. Die Dauer aller Einstellungen muss zusammen duration ergeben.

FeldWerte
duration3–600 s
width · aspect640, 1280 oder 1920 (lange Seite) · 16:9, 9:16, 1:1
fps24 oder 30
backgroundFarbe der Randbalken, #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_outEin- und Ausblendung des gesamten Videos und seines Tons, 0–5 s
audio_asset_id · pausesOptionale Hauptmusik und bis zu zehn Pausen digitaler Stille

Einstellungen (clips[])

FeldWerte
asset_id · durationBild oder Video · bis zu 60 s
trim_start · speedStartsekunde in der Quelle · 0,25–4
volumeOriginalton des Clips, 0–2 (0 schaltet ihn stumm)
fitcontain (mit Balken) oder cover (füllt durch Zuschneiden)
freeze · motionFriert das erste Bild ein · Ken-Burns-Bewegung
effectsBis zu sechs aus 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Übergang von der vorherigen Einstellung

Ton (audio_tracks[])

asset_id, start, trim_start, duration, volume (0–2), fade_in, fade_out, loop und duck. Eine Spur mit duck: true wird um etwa 10 dB leiser, solange die Hauptmusik, eine Stimme oder der Ton eines Clips läuft.

Titel (texts[])

text (bis zu fünf Zeilen), start, end, position (neun Positionen) oder x/y als Anteile des Bildes, size, color, outline_color, outline, box, box_color, box_opacity, font, bold, italic und animation (none, fade, slide_up, slide_left, pop, typewriter).

Ebenen (overlays[])

asset_id (Bild oder Video), start, end, position oder x/y, width, height (mit beiden wird die Fläche gefüllt: Splitscreen und Raster), margin, opacity, trim_start, volume, fade, border und border_color.

Untertitel (captions[])

start, end und text. Sie werden als SRT und WebVTT exportiert und mit burn_subtitles: true ins Bild eingebrannt.

Ausgaben

video.mp4 (H.264 + AAC), audio.wav (finale Tonspur), song.wav (nur mit Hauptmusik), subtitles.srt, subtitles.vtt, qc.json (Länge, Auflösung, Tonquellen, Warnungen) und manifest.json.

Limits