Pro API: styr molnrendering från din egen server
Allt appen gör online (bilder, retuschering, videor, tränade karaktärer) är också tillgängligt via HTTP, till samma pris i krediter, utan att appen behöver vara öppen. Du styr det från din egen server, dina skript eller din agent, med krediterna på din licens.
Tillgängligt med Pro-licensen. Nyckeln skapas i appen under Inställningar > API.
| Bas | https://api.tendre.ai/pro/v1 |
| Autentisering | header Authorization: Bearer tk_pro_... |
| Format | JSON in och ut, PNG för bilder, MP4 för videor |
| Maskindokumentation | openapi-pro.yaml (OpenAPI 3.0), för att generera en klient |
Hämta en nyckel
I appen med en Pro-licens: Inställningar > API > Ny nyckel. Ge den ett namn (till exempel "produktionsserver"), välj dess behörigheter och, om du vill, ett dagligt kredittak och ett utgångsdatum.
Nyckeln visas bara en gång. Kopiera den direkt. En förlorad nyckel ersätts, den kan aldrig återställas.
- Högst tre aktiva nycklar per licens. Tillräckligt för att rotera en nyckel utan att avbryta tjänsten: skapa den nya, installera den, återkalla den gamla.
- En nyckel är inte en plats. Din dator och din telefon kan fortsätta användas parallellt med den.
- En nyckel är lika värd som dina krediter. Lägg aldrig en nyckel på en webbsida, i en distribuerad app eller i ett publikt repository. Ge den ett dagligt kredittak så snart den lever på en server.
Vad en nyckel får göra
| Behörighet | Vad den tillåter |
|---|---|
| Läsa | Alltid beviljad: renderingsstatus, filnedladdning, saldo, karaktärslista |
| Bilder | Skicka in och avbryta bilder (generering, retuschering, variation) |
| Videor | Skicka in och avbryta videor |
Ett anrop utanför nyckelns behörigheter svarar med 403 portee_manquante, med den saknade
behörigheten i portee.
Renderingslivscykeln
Alltid samma tre steg.
- Skicka in.
POST /imagesellerPOST /videos. Omedelbart svar med ettjobIdoch kostnaden. - Polla.
GET /images/{jobId}ellerGET /videos/{jobId}, var 3:e sekund, tillsstatusärcompletedellerfailed. - Ladda ned.
GET /images/{jobId}/fileellerGET /videos/{jobId}/file, så snart statusen ärcompleted. Filen sparas inte, så ladda ned den utan att vänta.
Ungefärliga tider: 10 till 40 sekunder för en bild, 1 till 5 minuter för en video, längre när motorn startar kallt.
Ditt första anrop
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 }
Om det svarar fungerar allt annat också.
En komplett rendering, tre sätt
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"))
Vad du kan göra härnäst
- Bilder: generering, de tre retuscheringslägen, karaktärer.
- Videor: format, prisraster, start- och slutramar.
- Konto: saldo, tak, tränade karaktärer, aktivitet.
- Gränser och fel: tak, alla felkoder, god praxis.
Vad som inte finns ännu
I planerad ordning: karaktärsträning från egna foton, röster, uppskalning till 2K, ett fast seed för att reproducera en rendering, och webhooks så att du kan sluta polla.
API:et är versionerat. Allt som beskrivs här förblir giltigt under /pro/v1: tillägg bryter aldrig det som redan finns, och en brytande förändring skulle levereras som /pro/v2.