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

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

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

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-pro.yaml (OpenAPI 3.0), do wygenerowania klienta

Utwórz klucz

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

Klucz jest pokazywany tylko raz. Skopiuj go od razu. Utracony klucz można zastąpić, ale nie odzyskać.

  • Maksymalnie trzy aktywne klucze na licencję. Wystarczy, by wymienić jeden bez przerywania usługi: utwórz nowy, zainstaluj go, unieważnij stary.
  • Klucz to nie stanowisko. Twój komputer i telefon pozostają użyteczne równolegle z nim.
  • Klucz ma wartość twoich kredytów. Nigdy nie umieszczaj go na stronie internetowej, w aplikacji dystrybuowanej ani w publicznym repozytorium. Nadaj mu dzienny limit kredytów, gdy tylko trafi na serwer.

Co klucz może robić

UprawnienieCo pozwala
OdczytZawsze przyznawane: status renderowania, pobieranie plików, saldo, lista postaci
ObrazyPrzesyłanie i anulowanie obrazów (generowanie, retusz, wariacja)
FilmyPrzesyłanie i anulowanie filmów

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

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.

Orientacyjne czasy: 10 do 40 sekund dla obrazu, 1 do 5 minut dla filmu, dłużej gdy silnik startuje na zimno.

Twoje pierwsze wywołanie

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 }

Jeśli to odpowie, wszystko inne też zadziała.

Kompletne renderowanie, trzy sposoby

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

Co dalej

  • Obrazy: generowanie, trzy tryby retuszu, postacie.
  • Filmy: formaty, siatka cenowa, klatki startowe i końcowe.
  • Konto: saldo, limity, wytrenowane postacie, aktywność.
  • Limity i błędy: limity, wszystkie kody błędów, dobre praktyki.

Czego jeszcze nie ma

W planowanej kolejności: trenowanie postaci z własnych zdjęć, głosy, powiększanie do 2K, stały seed do odtworzenia renderowania oraz webhooki, dzięki którym możesz przestać odpytywać.

API jest wersjonowane. Wszystko opisane tutaj pozostaje ważne pod /pro/v1: dodatki nigdy nie psują tego, co istnieje, a przełomowa zmiana trafiłaby jako /pro/v2.

Windows · Chmura lub NVIDIA

Generuj prywatnie. Już dziś wieczorem.

Pobierz tendre.AI, aktywuj raz i używaj na zawsze, w pełni offline, na własnym GPU.

Pobierz na WindowsPobierz na Androida (.apk)
Pobierz na MacWersja na Mac już wkrótce!
OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB zalecaneDysk 20GB

Nie masz karty NVIDIA GPU? Zacznij w 100% w chmurze: 10 darmowych obrazów każdego dnia, potem 1 kredyt za obraz. Karta NVIDIA (8GB+) odblokowuje nielimitowane generowanie lokalne.