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
- Laden Sie jede Datei mit
POST /v1/assets?kind=image|video|audiohoch, die Datei als binären Body. Die Antwort ist{"id": "…"}. - Stellen Sie den Schnitt mit
POST /v1/rendersund der Timeline als JSON in die Warteschlange. Nutzen Sie den HeaderIdempotency-Key, damit eine Wiederholung kein zweites Rendering erzeugt. - Fragen Sie
GET /v1/renders/{id}ab, bisstatusden Wertcompletedhat, und laden Sie dann jede Datei ausresult.filesherunter.
Endpunkte
| Methode | Pfad | Funktion |
|---|---|---|
| GET | /health | Status des Dienstes |
| POST | /v1/assets?kind=image|video|audio | Lädt eine Binärdatei hoch und gibt ihre ID zurück |
| POST | /v1/renders | Prüft die Timeline und stellt sie in die Warteschlange |
| GET | /v1/renders | Die letzten 100 Renderings |
| GET | /v1/renders/{id} | Status, Fortschritt, Ereignisse und Fehler |
| POST | /v1/renders/{id}/cancel | Bricht ein wartendes oder laufendes Rendering ab |
| POST | /v1/renders/{id}/retry | Wiederholt 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=N | Lö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.
| Feld | Werte |
|---|---|
duration | 3–600 s |
width · aspect | 640, 1280 oder 1920 (lange Seite) · 16:9, 9:16, 1:1 |
fps | 24 oder 30 |
background | Farbe der Randbalken, #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 | Ein- und Ausblendung des gesamten Videos und seines Tons, 0–5 s |
audio_asset_id · pauses | Optionale Hauptmusik und bis zu zehn Pausen digitaler Stille |
Einstellungen (clips[])
| Feld | Werte |
|---|---|
asset_id · duration | Bild oder Video · bis zu 60 s |
trim_start · speed | Startsekunde in der Quelle · 0,25–4 |
volume | Originalton des Clips, 0–2 (0 schaltet ihn stumm) |
fit | contain (mit Balken) oder cover (füllt durch Zuschneiden) |
freeze · motion | Friert das erste Bild ein · Ken-Burns-Bewegung |
effects | Bis 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
- Dateien bis 250 MB, Bilder bis 8192 × 8192 und Medien bis 610 s.
- Bis zu 150 Einstellungen, 20 Audiospuren, 20 Ebenen, 100 Titel und 500 Untertitel.
- Titel, Ebenen und Untertitel enden innerhalb des Videos. Ein Übergang darf nicht länger sein als die Hälfte einer der beiden Einstellungen, die er verbindet.
- Festplattenpfade, URLs und Playlists werden als Medien nicht akzeptiert.