API-Doku

Mit der API reichen eigene Skripte, Bots oder Werkzeuge wie n8n Clips ein, fragen den Status ab und laden fertige Clips herunter. Alles, was die API kann, geht auch in der Oberfläche, und jeder Clip kostet dieselben Tokens.

Wer die API nutzen kann

Im Studio-Tarif und solange du Guthaben aus einem Token-Paket hast. Das wird bei jeder Anfrage neu geprüft: Wechselst du in einen kleineren Tarif ohne Paketguthaben, antwortet die API mit plan_required, bis wieder eine der Bedingungen erfüllt ist.

Schlüssel

Den Schlüssel erzeugst du in den Einstellungen unter „API-Zugriff". Er wird genau einmal angezeigt, danach speichern wir nur noch einen nicht umkehrbaren Hash. Ein neuer Schlüssel macht den alten sofort ungültig.

Behandle den Schlüssel wie ein Passwort. Nie in Browser-Code, öffentliche Repositories, Screenshots oder Chats. Die API erlaubt bewusst keine Aufrufe aus dem Browser. Wenn du glaubst, dass jemand deinen Schlüssel kennt, widerrufe ihn sofort in den Einstellungen. Der Schlüssel kann nur Clips verarbeiten, nie Konto, Zahlung oder Sicherheitseinstellungen ändern.

Anmeldung

Schicke den Schlüssel bei jeder Anfrage im Header mit. Alle Adressen beginnen mit https://lazyclipper.com/api/v1.

Authorization: Bearer ct_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpunkte

Methode und PfadZweck
GET/meTarif, Guthaben und Tokenpreise
POST/clipsClip einreichen
GET/clipsListe deiner fertigen Clips der letzten 14 Tage
GET/clips/{id}Status eines Clips
GET/clips/{id}/fileFertigen Clip als MP4 herunterladen

Clip einreichen

Anfrage mit JSON. Nur url ist Pflicht. Werte, die dein Tarif nicht enthält oder die unbekannt sind, fallen auf den Standard zurück, genau wie in der Oberfläche.

FeldWerteStandard
urlLink zu einem Twitch- oder Kick-ClipPflicht
targetDuration"15", "30", "45", "full""full"
sfxIntensity"low", "medium", "high""medium"
captionStyle"classic", "box", "minimal""classic"
speed"normal", "schneller", "viel-schneller""normal"
pitch"normal", "hoeher", "viel-hoeher""normal"
silenceCut, faceZoom, faceSplittrue oder falsefalse
speakerFocus, channelOverlaytrue oder false, je nach Tariffalse
contextKurze Beschreibung des Clips, höchstens 300 Zeichenleer
introTextGesprochenes Intro, höchstens 200 Zeichen, kostet 10 Tokens extraleer

Die Antwort kommt mit Status 202, sobald der Clip in der Warteschlange steht:

{
  "id": "590ad858-8e71-4fac-ac88-d86fbf4cc7c5",
  "status": "queued",
  "queuePosition": 2,
  "tokensCharged": 10,
  "tokensRemaining": 2490,
  "statusUrl": "/api/v1/clips/590ad858-8e71-4fac-ac88-d86fbf4cc7c5"
}

Beispiel: kompletter Ablauf

# 1. Submit a clip
curl -X POST https://lazyclipper.com/api/v1/clips \
  -H "Authorization: Bearer $LAZYCLIPPER_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-clip-001" \
  -d '{"url":"https://www.twitch.tv/channel/clip/ClipSlug","targetDuration":"30"}'

# 2. Poll the status until it is "done" or "failed" (at most every 5 seconds)
curl https://lazyclipper.com/api/v1/clips/CLIP_ID \
  -H "Authorization: Bearer $LAZYCLIPPER_KEY"

# 3. Download the finished clip
curl -L -o clip.mp4 https://lazyclipper.com/api/v1/clips/CLIP_ID/file \
  -H "Authorization: Bearer $LAZYCLIPPER_KEY"

Status

WertBedeutung
queuedWartet in der Schlange, queuePosition sagt, wie viele Clips vorher drankommen
processingWird gerade bearbeitet, progress in Prozent
doneFertig, downloadUrl ist gesetzt
failedFehlgeschlagen, die Tokens wurden automatisch erstattet
expiredFertig gewesen, nach 14 Tagen gelöscht

Doppelte Aufträge vermeiden

Schicke bei POST /clips einen eigenen Idempotency-Key mit, zum Beispiel eine ID aus deinem System. Kommt dieselbe Anfrage innerhalb von 24 Stunden noch einmal, etwa weil dein Skript nach einem Netzwerkfehler neu versucht, bekommst du die erste Antwort zurück, und es wird nichts doppelt abgebucht. Die Antwort trägt dann den Header Idempotent-Replayed: true.

Grenzen

Fehler

Fehler haben immer dieselbe Form:

{ "error": { "code": "insufficient_tokens", "message": "Not enough tokens (10 needed, 0 left). ..." } }
CodeHTTPBedeutung
missing_api_key401Kein Schlüssel im Header
invalid_api_key401Schlüssel unbekannt oder widerrufen
plan_required403Dein Tarif enthält keinen API-Zugang
account_disabled403Konto gesperrt
not_in_plan403Eine angefragte Funktion ist nicht in deinem Tarif
invalid_request400Anfrage unvollständig oder ungültig, zum Beispiel ein falscher Clip-Link
insufficient_tokens402Nicht genug Tokens
not_found404Clip oder Endpunkt gibt es nicht in deinem Konto
rate_limited429Zu viele Anfragen, siehe Retry-After
queue_full429Warteschlange voll, siehe Retry-After
server_error500Fehler bei uns, bitte später erneut versuchen

Versionen

Version 1 bleibt stabil. Neue Felder können dazukommen, bestehende ändern ihre Bedeutung nicht. Was bestehende Skripte brechen würde, kommt nur als neue Version mit Vorlauf.

Für die Nutzung der API gelten zusätzlich die Nutzungsbedingungen, besonders §5d.

← Zurück