Pro API: Cloud-Rendering vom eigenen Server steuern
Alles, was die App online tut (Bilder, Retusche, Videos, trainierte Charaktere), ist auch per HTTP erreichbar, zum gleichen Preis in Credits, ohne dass die App geöffnet sein muss. Du steuerst es von deinem eigenen Server, deinen Skripten oder deinem Agenten aus und verwendest dabei die Credits deiner Lizenz.
Verfügbar mit der Pro-Lizenz. Der Schlüssel wird in der App unter Einstellungen > API erstellt.
Kein Entwickler? Dasselbe ist über einen KI-Agenten erreichbar, ohne eine einzige Zeile zu schreiben: siehe MCP.
| Basis | https://api.tendre.ai/pro/v1 |
| Authentifizierung | Header Authorization: Bearer tk_pro_... |
| Format | JSON ein und aus, PNG für Bilder, MP4 für Videos |
| Maschinenbeschreibung | openapi.json (OpenAPI 3.0), zur Client-Generierung |
| Preisübersicht | GET /pro/v1/pricing |
Einen Schlüssel erstellen
In der App, mit einer Pro-Lizenz: Einstellungen > API > Neuer Schlüssel. Gib ihm einen Namen (z. B. "Produktionsserver"), wähle seine Berechtigungen und, wenn du möchtest, ein tägliches Credit-Limit sowie ein Ablaufdatum.
Der Schlüssel wird nur einmal angezeigt. Kopiere ihn sofort. Ein verlorener Schlüssel wird ersetzt, nie wiederhergestellt.
- Maximal drei aktive Schlüssel pro Lizenz. Das reicht, um einen zu rotieren, ohne den Betrieb zu unterbrechen: neuen erstellen, einsetzen, alten widerrufen.
- Ein Schlüssel ist kein Sitzplatz. Dein Computer und dein Smartphone bleiben daneben nutzbar.
- Ein Schlüssel ist so viel wert wie deine Credits. Füge ihn niemals in eine Webseite, eine verteilte App oder ein öffentliches Repository ein. Gib ihm ein tägliches Credit-Limit, sobald er auf einem Server läuft.
Was ein Schlüssel darf
| Berechtigung | Was sie erlaubt |
|---|---|
| Lesen | Immer gewährt: Render-Status, Datei-Download, Guthaben, Charakterliste |
| Bilder | Bilder einreichen und abbrechen (Generierung, Retusche, Variation), Charaktere erstellen |
| Videos | Videos einreichen und abbrechen, Multi-Ref Video und Face swap eingeschlossen |
Ein Aufruf jenseits der Schlüsselberechtigungen antwortet mit 403 missing_scope, mit der
fehlenden Berechtigung in scope.
Der Render-Lebenszyklus
Immer die gleichen drei Schritte.
- Einreichen.
POST /imagesoderPOST /videos. Sofortige Antwort mit einerjobIdund den Kosten. - Abfragen.
GET /images/{jobId}oderGET /videos/{jobId}, alle 3 Sekunden, bisstatuscompletedoderfailedist. - Herunterladen.
GET /images/{jobId}/fileoderGET /videos/{jobId}/file, sobald der Statuscompletedist. Die Datei wird nicht gespeichert, also sofort herunterladen.
Grobe Zeitangaben: 10 bis 40 Sekunden für ein Bild, 1 bis 5 Minuten für ein Video, länger wenn die Engine kalt startet.
Dein erster Aufruf
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
curl -s $B/credits -H "Authorization: Bearer $KEY"{ "balance": 1830, "licenseId": "lic_...", "key": "k_1a2b3c4d",
"limits": { "concurrent": 2, "perMinute": 60, "perDay": 0 }, "running": 0 }Wenn das eine Antwort liefert, funktioniert alles andere auch.
Ein vollständiger Render, drei Wege
bash
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
JOB=$(curl -s $B/images -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"prompt":"a lighthouse at dawn, photorealistic","width":1216,"height":832}' | jq -r .jobId)
until curl -s $B/images/$JOB -H "Authorization: Bearer $KEY" | grep -q '"completed"'; do sleep 3; done
curl -s $B/images/$JOB/file -H "Authorization: Bearer $KEY" -o lighthouse.pngPowerShell
$H = @{ Authorization = "Bearer tk_pro_..." }
$B = "https://api.tendre.ai/pro/v1"
$job = Invoke-RestMethod -Uri "$B/videos" -Method Post -Headers $H -ContentType "application/json" `
-Body '{"prompt":"waves on a beach at sunset, gentle wind","width":1080,"height":1920,"audio":true}'
do { Start-Sleep 5; $s = Invoke-RestMethod -Uri "$B/videos/$($job.jobId)" -Headers $H } while ($s.status -eq "pending")
Invoke-WebRequest -Uri "https://api.tendre.ai$($s.file_url)" -Headers $H -OutFile beach.mp4Python
import time, requests
KEY, B = "tk_pro_...", "https://api.tendre.ai/pro/v1"
H = {"Authorization": f"Bearer {KEY}"}
job = requests.post(f"{B}/videos", headers=H, json={"prompt": "waves on a beach at sunset, gentle wind", "audio": True}).json()
while (s := requests.get(f"{B}/videos/{job['jobId']}", headers=H).json())["status"] == "pending":
time.sleep(3)
if s["status"] == "completed":
open("beach.mp4", "wb").write(requests.get("https://api.tendre.ai" + s["file_url"], headers=H).content)
else:
print("failed:", s.get("detail"))Wie es weitergeht
- Bilder: Generierung, die drei Retusche-Modi, Charaktere.
- Videos: Formate, die Preisübersicht, Start- und Endframes, Multi-Ref Video, Face swap.
- Charaktere: ein Foto, sieben Ansichten, für den Einsatz in Multi-Ref Video.
- Konto: Guthaben, Limits, trainierte Charaktere, Aktivität.
- Limits und Fehler: Limits, alle Fehlercodes, bewährte Vorgehensweisen.
- MCP (Agenten): Claude, ChatGPT oder Cursor direkt einbinden, ohne Code.
Was noch fehlt
In der geplanten Reihenfolge: Charakter-Training aus eigenen Fotos, Stimmen, Hochskalierung auf 2K, ein fester Seed zur Reproduktion eines Renders sowie Webhooks, damit du das Polling einstellen kannst.
Das Training verdient eine Erklärung: Über die API kannst du nicht trainieren, aber du kannst
eine bereits vorhandene .safetensors-Datei hochladen und sofort damit rendern. Siehe
Konto, Credits und Charaktere.
Die API ist versioniert. Alles hier Beschriebene bleibt unter /pro/v1 gültig: Ergänzungen
brechen nie das Bestehende, und eine Breaking Change würde als /pro/v2 erscheinen.