Pro API: steruj renderowaniem w chmurze z własnego serwera

Wszystko, co aplikacja robi online (obrazy, retusz, filmy, wytrenowane postacie), jest dostępne również przez HTTP, w tej samej cenie w kredytach, bez konieczności otwierania aplikacji. Steruj tym z własnego serwera, skryptów lub agenta, używając kredytów na swojej licencji.

Dostępne z licencją Pro. Klucz tworzy się w aplikacji, w Ustawienia > API.

Nie jesteś deweloperem? To samo można osiągnąć za pomocą agenta AI bez pisania ani jednej linii kodu: zobacz MCP.

Bazahttps://api.tendre.ai/pro/v1
Uwierzytelnianienagłówek Authorization: Bearer tk_pro_...
FormatJSON na wejściu i wyjściu, PNG dla obrazów, MP4 dla filmów
Opis maszynyopenapi.json (OpenAPI 3.0), do generowania klienta
CennikGET /pro/v1/pricing

Uzyskaj klucz

W aplikacji, z licencją Pro: Ustawienia > API > Nowy klucz. Nadaj mu nazwę (na przykład "serwer produkcyjny"), wybierz uprawnienia i opcjonalnie dzienny limit kredytów oraz datę wygaśnięcia.

Klucz jest pokazywany tylko raz. Skopiuj go od razu. Utracony klucz jest zastępowany, nigdy odzyskiwany.

  • Maksymalnie trzy aktywne klucze na licencję. Wystarczy, by rotować jeden bez przerywania usługi: utwórz nowy, wdroż go, unieważnij stary.
  • Klucz to nie miejsce. Twój komputer i telefon pozostają użyteczne niezależnie od niego.
  • Klucz jest wart tyle, co Twoje kredyty. Nigdy nie umieszczaj go na stronie internetowej, w rozpowszechnianej aplikacji ani w publicznym repozytorium. Ustaw mu dzienny limit kredytów, gdy tylko trafi na serwer.

Co klucz może robić

UprawnienieCo umożliwia
OdczytZawsze przyznane: status renderowania, pobieranie plików, saldo, lista postaci
ObrazyPrzesyłanie i anulowanie obrazów (generowanie, retusz, wariacja), tworzenie postaci
WideoPrzesyłanie i anulowanie filmów, w tym Multi-Ref Wideo i Face swap

Wywołanie wykraczające poza uprawnienia klucza zwraca 403 missing_scope, z brakującym uprawnieniem w scope.

Cykl życia renderowania

Zawsze te same trzy kroki.

  1. Prześlij. POST /images lub POST /videos. Natychmiastowa odpowiedź z jobId i kosztem.
  2. Odpytuj. GET /images/{jobId} lub GET /videos/{jobId}, co 3 sekundy, aż status wyniesie completed lub failed.
  3. Pobierz. GET /images/{jobId}/file lub GET /videos/{jobId}/file, gdy tylko status wynosi completed. Plik nie jest przechowywany, więc pobierz go bez zwłoki.

Przybliżony czas: 10 do 40 sekund dla obrazu, 1 do 5 minut dla filmu, dłużej gdy silnik startuje od zera.

Pierwsze wywołanie

bash
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
curl -s $B/credits -H "Authorization: Bearer $KEY"
json
{ "balance": 1830, "licenseId": "lic_...", "key": "k_1a2b3c4d",
  "limits": { "concurrent": 2, "perMinute": 60, "perDay": 0 }, "running": 0 }

Jeśli to zadziała, reszta też będzie działać.

Kompletne renderowanie na trzy sposoby

bash

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

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

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"))

Co dalej

  • Obrazy: generowanie, trzy tryby retuszu, postacie.
  • Wideo: formaty, cennik, klatki startowe i końcowe, Multi-Ref Wideo, Face swap.
  • Postacie: jedno zdjęcie, siedem ujęć, do obsadzenia w Multi-Ref Wideo.
  • Konto: saldo, limity, wytrenowane postacie, aktywność.
  • Limity i błędy: limity, wszystkie kody błędów, dobre praktyki.
  • MCP (agenty): podłącz Claude, ChatGPT lub Cursor bezpośrednio, bez żadnego kodu.

Czego jeszcze nie ma

W planowanej kolejności: trenowanie postaci z własnych zdjęć, głosy, skalowanie w górę do 2K, stały seed do odtworzenia renderowania oraz webhooki, by móc przestać odpytywać.

Trenowanie to jedyna rzecz warta komentarza: nie możesz trenować przez API, ale możesz przesłać .safetensors, który już posiadasz i od razu renderować z jego użyciem. Zobacz Konto, kredyty i postacie.

API jest wersjonowane. Wszystko opisane tutaj pozostaje ważne pod /pro/v1: dodawane funkcje nigdy nie psują istniejących, a przełomowa zmiana zostałaby wydana jako /pro/v2.

Windows · Mac · Chmura lub lokalnie

Generuj prywatnie. Już dziś wieczorem.

Pobierz tendre.AI za darmo i generuj bez limitów, prywatnie, na własnym GPU.

OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB zalecaneDysk 20GB

Mac: Apple Silicon (M1 lub nowszy), macOS 13 lub nowszy. Macbooki z procesorami Intel nie są obsługiwane.

Lokalne generowanie obrazów na Macu wymaga M4 z 24 GB pamięci albo M2 lub M3 Pro, Max lub Ultra z 24 GB. Poniżej tego progu wszystko działa online, na kredytach. Retusz i wideo na Macu na razie też działają online.

Wszystko o tendre.AI na Maca

Nie masz karty NVIDIA? Zacznij w 100% w chmurze: 5 darmowych zdjęć i 1 darmowe wideo każdego dnia. Karta NVIDIA (8GB+) odblokowuje nielimitowane generowanie lokalne.