API-Referenz

Authentifizierung

Alle API-Anfragen benötigen einen API-Key. Sie erhalten ihn unter Settings > API Keys.

Unterstützte Formate:

MethodeFormat
Bearer TokenAuthorization: Bearer sk-xxx
Token HeaderAuthorization: Token sk-xxx
X-API-KeyX-API-Key: sk-xxx
Query Parameter?api_key=sk-xxx

Sicherheitshinweis:

  • API-Keys niemals im Client-Code veröffentlichen
  • API-Aufrufe immer vom Server aus senden

Endpunkt-Überblick

MethodeEndpunktZweck
POST/api/v1/videoPermanente Videoaufgabe anlegen
GET/api/v1/videoVideoaufgaben auflisten
GET/api/v1/video/:taskIdDetails einer Aufgabe abrufen
DELETE/api/v1/video/:taskIdAufgabe löschen
POST/api/v1/video/:taskId/renderRendering starten
POST/api/v1/uploadAssets hochladen
GET/api/v1/filesDateien auflisten
DELETE/api/v1/files/:fileIdDatei löschen
GET/api/v1/creditsGuthaben abfragen
POST/api/v1/previewTemporäre Vorschau erzeugen
GET/api/v1/preview/:tempIdVorschau-Konfiguration lesen
DELETE/api/v1/preview/:tempIdVorschau löschen
POST/api/v1/preview/:tempId/convertVorschau in permanente Aufgabe umwandeln
POST/api/v1/preview/:tempId/renderVorschau in Aufgabe umwandeln und direkt rendern

POST /api/v1/video

Legt eine permanente Aufgabe aus Ihrer Videokonfiguration an. Das Rendering startet dabei noch nicht.

Wichtige Felder:

FeldTypPflichtBeschreibung
configobjectJaVideoschema gemäß JSON Schema
metadataobjectNeinEigene Metadaten für die Aufgabe

Typische Antwortfelder:

  • taskId
  • videoTaskId
  • previewUrl
  • viewerUrl
  • configUrl
  • status
  • quality
  • width
  • height
  • duration

GET /api/v1/video

Listet alle Videoaufgaben des aktuellen Kontos auf.

Query-Parameter:

ParameterTypStandardBeschreibung
pageinteger1Seitennummer
limitinteger20Einträge pro Seite, maximal 100
statusstring-Filter nach letztem Status

Die Antwort enthält eine tasks-Liste und ein pagination-Objekt.


GET /api/v1/video/:taskId

Ruft alle bekannten Details zu einer konkreten Aufgabe ab.

Wichtige Rückgabefelder:

  • taskId
  • videoTaskId
  • status
  • videoUrl
  • previewUrl
  • viewerUrl
  • configUrl
  • costCredits
  • createdAt
  • completedAt
  • metadata

Statuswerte:

StatusBedeutung
createdAufgabe angelegt, Rendering noch nicht gestartet
renderingRendering läuft
completedRendering erfolgreich abgeschlossen
failedRendering fehlgeschlagen

DELETE /api/v1/video/:taskId

Löscht eine Aufgabe dauerhaft zusammen mit lokalen Render-Daten. Die API versucht zusätzlich, die Upstream-Aufgabe zu entfernen.

Wichtige Rückgabefelder:

  • deleted
  • remoteDeleted
  • message

Wenn das Upstream-Löschen fehlschlägt, kann die lokale Löschung trotzdem erfolgreich sein.


POST /api/v1/video/:taskId/render

Startet oder startet das Rendering einer vorhandenen Aufgabe erneut.

Request-Body:

FeldTypPflichtStandardBeschreibung
webhook_urlstringNein-Ziel für Abschlussbenachrichtigungen
num_workersintegerNein5Anzahl der Render-Worker

Mögliche Ergebnisse:

  • neues Rendering wird mit status: rendering gestartet
  • bereits abgeschlossenes Rendering wird mit alreadyRendered: true zurückgegeben

Wichtige Fehler:

  • NOT_FOUND
  • ALREADY_RENDERING
  • INSUFFICIENT_CREDITS
  • RENDER_TRIGGER_FAILED

Webhooks

webhook_url wird auf diesen Render-Start-Endpunkten unterstützt:

  • POST /api/v1/video/:taskId/render
  • POST /api/v1/preview/:tempId/render

Ablauf:

  1. Ihre webhook_url wird zusammen mit der Render-Aufgabe gespeichert
  2. Der Upstream-Renderer meldet completed oder failed
  3. Dieses Projekt aktualisiert zuerst die lokale Datenbank
  4. Danach wird ein POST an Ihre webhook_url gesendet

Der weitergeleitete Payload enthält typischerweise:

  • taskId
  • renderTaskId
  • status
  • videoUrl
  • error
  • timestamp

Aktuelle Einschränkungen:

  • Nur completed und failed werden weitergeleitet
  • webhook_url muss eine absolute URL sein
  • Es gibt aktuell keine Webhook-Signatur
  • Es gibt aktuell keine Retry-Queue und kein Delivery-Log

POST /api/v1/upload

Lädt Bild-, Video- oder Audiodateien für spätere Videokonfigurationen hoch.

Form-Data-Felder:

FeldTypPflichtBeschreibung
fileFileNein*Einzelne Datei
filesFile[]Nein*Mehrere Dateien

*Mindestens eines von file oder files ist erforderlich.

Unterstützte MIME-Bereiche:

  • image/*
  • video/*
  • audio/*

Speicherlimits nach Plan:

PlanLimit
Free512 MB
Starter10 GB
Standard20 GB
Pro50 GB

Die Erfolgsantwort enthält count und eine assets-Liste.


GET /api/v1/files

Listet die hochgeladenen Dateien des aktuellen API-Key-Inhabers auf.

Query-Parameter:

ParameterTypStandardBeschreibung
pageinteger1Seitennummer
limitinteger20Einträge pro Seite
typestring-image, video oder audio

Die Antwort enthält eine files-Liste und ein pagination-Objekt.


DELETE /api/v1/files/:fileId

Entfernt eine Datei dauerhaft aus der Dateibibliothek. Dabei werden sowohl das gespeicherte Objekt als auch der Dateieintrag gelöscht.

Typische Antwortfelder:

  • fileId
  • deleted
  • message

GET /api/v1/credits

Ruft das aktuelle Guthaben des Kontos ab.

Typische Antwort:

{
  "success": true,
  "credits": 985,
  "currency": "credits"
}

POST /api/v1/preview

Erzeugt eine temporäre Vorschau, ohne Guthaben zu verbrauchen.

Wichtige Regeln:

  • Der vollständige Video-JSON wird direkt im Request-Body gesendet
  • Vorschau-Links sind 7 Tage gültig
  • Vorschauen verbrauchen kein Guthaben
  • Vorschauen liefern keine herunterladbare Videodatei

Antwortfelder:

  • tempId
  • previewUrl
  • viewerUrl
  • expiresIn

GET /api/v1/preview/:tempId

Liest die Konfiguration hinter einem temporären Vorschau-Link.

Wichtige Rückgabefelder:

  • tempId
  • config

DELETE /api/v1/preview/:tempId

Löscht einen temporären Vorschau-Link.

Wichtige Rückgabefelder:

  • tempId
  • deleted
  • message

POST /api/v1/preview/:tempId/convert

Klonen Sie eine temporäre Vorschau in eine permanente Videoaufgabe. Die temporäre Vorschau selbst bleibt bestehen.

Optionaler Request-Body:

FeldTypPflichtBeschreibung
categorystringNeinKategorie für die neue permanente Aufgabe

Wichtige Rückgabefelder:

  • converted
  • taskId
  • videoTaskId
  • previewUrl
  • viewerUrl
  • configUrl

POST /api/v1/preview/:tempId/render

Klonen Sie eine temporäre Vorschau in eine permanente Aufgabe und starten Sie das Rendering sofort.

Request-Body:

FeldTypPflichtStandardBeschreibung
categorystringNeinapiKategorie für die neue Aufgabe
webhook_urlstringNein-Webhook für das Render-Ergebnis
num_workersintegerNein5Anzahl der Render-Worker

Typische Erfolgsantwort:

  • converted: true
  • taskId
  • renderTaskId
  • status: rendering
  • cost
  • remainingCredits
  • previewUrl
  • viewerUrl

Guthabenberechnung

Die Kosten werden nach folgender Regel berechnet:

  • Kosten = Videodauer in Sekunden × Qualitätsfaktor
QualitätKurze KanteFaktor
720p<= 720px1.0
1080p<= 1080px1.5
2K<= 1440px2.0

Die Qualität wird automatisch anhand der kürzeren Videodimension bestimmt.


Fehlerformat

Alle Fehlerantworten folgen demselben Grundformat:

{
  "success": false,
  "error": "Human-readable error message",
  "code": "ERROR_CODE",
  "details": {
    "field": "additional context"
  }
}

Häufige Fehlercodes:

  • MISSING_API_KEY
  • INVALID_API_KEY
  • INVALID_API_KEY_FORMAT
  • API_KEY_INACTIVE
  • USER_NOT_FOUND
  • INVALID_REQUEST
  • INVALID_CONFIG
  • INSUFFICIENT_CREDITS
  • NOT_FOUND
  • ALREADY_RENDERING
  • REMOTE_ERROR
  • RENDER_TRIGGER_FAILED
  • INTERNAL_ERROR