Pro API: Cloud-Rendering von deinem 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, mit den Credits deiner Lizenz.

Verfügbar mit der Pro-Lizenz. Der Schlüssel wird in der App unter Einstellungen > API erstellt.

Basishttps://api.tendre.ai/pro/v1
AuthentifizierungHeader Authorization: Bearer tk_pro_...
FormatJSON ein und aus, PNG für Bilder, MP4 für Videos
Maschinenbeschreibungopenapi-pro.yaml (OpenAPI 3.0), zur Client-Generierung

Einen Schlüssel erstellen

In der App, mit einer Pro-Lizenz: Einstellungen > API > Neuer Schlüssel. Gib ihm einen Namen (zum Beispiel "Produktionsserver"), wähle seine Berechtigungen und, falls gewünscht, 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 Dienst zu unterbrechen: den neuen erstellen, installieren, den alten widerrufen.
  • Ein Schlüssel ist kein Sitzplatz. Dein Computer und dein Telefon bleiben daneben nutzbar.
  • Ein Schlüssel ist so wertvoll wie deine Credits. Lege ihn niemals in eine Webseite, eine verteilte App oder ein öffentliches Repository. Gib ihm ein tägliches Credit-Limit, sobald er auf einem Server läuft.

Was ein Schlüssel darf

BerechtigungWas sie erlaubt
LesenImmer gewährt: Render-Status, Datei-Download, Guthaben, Charakterliste
BilderBilder einreichen und abbrechen (Generierung, Retusche, Variation)
VideosVideos einreichen und abbrechen

Ein Aufruf, der die Berechtigungen des Schlüssels überschreitet, antwortet mit 403 portee_manquante, mit der fehlenden Berechtigung in portee.

Der Render-Lebenszyklus

Immer die gleichen drei Schritte.

  1. Einreichen. POST /images oder POST /videos. Sofortige Antwort mit einer jobId und den Kosten.
  2. Abfragen. GET /images/{jobId} oder GET /videos/{jobId}, alle 3 Sekunden, bis status completed oder failed ist.
  3. Herunterladen. GET /images/{jobId}/file oder GET /videos/{jobId}/file, sobald der Status completed ist. Die Datei wird nicht aufbewahrt, also lade sie sofort herunter.

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 antwortet, funktioniert alles andere auch.

Ein vollständiger Render, auf drei Wegen

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.png

PowerShell

$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.mp4

Python

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, das Preisraster, Start- und Endframes.
  • Konto: Guthaben, Limits, trainierte Charaktere, Aktivität.
  • Limits und Fehler: Caps, alle Fehlercodes, Best Practices.

Was noch nicht da ist

In der geplanten Reihenfolge: Charakter-Training aus eigenen Fotos, Stimmen, Hochskalierung auf 2K, ein fester Seed zur Reproduktion eines Renders, und Webhooks, damit du das Abfragen stoppen kannst.

Die API ist versioniert. Alles hier Beschriebene bleibt unter /pro/v1 gültig: Ergänzungen brechen nie, was bereits existiert, und eine breaking Change würde als /pro/v2 erscheinen.

Windows · Cloud oder NVIDIA

Privat generieren. Noch heute Abend.

Lade tendre.AI herunter, aktiviere einmal und nutze es für immer, vollständig offline, auf deiner eigenen GPU.

Für Windows herunterladenFür Android herunterladen (.apk)
Für Mac herunterladenMac-Version kommt bald!
OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB empfohlenDisk 20GB

Keine NVIDIA-GPU? Starte zu 100% in der Cloud: 10 kostenlose Bilder jeden Tag, danach 1 Credit pro Bild. Eine NVIDIA-Karte (ab 8GB) schaltet unbegrenzte lokale Generierung frei.