Pro API: gestisci il rendering cloud dal tuo server

Tutto quello che l'app fa online (immagini, ritocchi, video, personaggi addestrati) è raggiungibile anche via HTTP, allo stesso prezzo in crediti, senza che l'app sia aperta. Lo gestisci dal tuo server, dai tuoi script o dal tuo agente, usando i crediti della tua licenza.

Disponibile con la licenza Pro. La chiave si crea nell'app, in Impostazioni > API.

Non sei sviluppatore? La stessa cosa è accessibile da un agente IA senza scrivere una riga: vedi MCP.

Basehttps://api.tendre.ai/pro/v1
Autenticazioneheader Authorization: Bearer tk_pro_...
FormatoJSON in entrata e uscita, PNG per le immagini, MP4 per i video
Descrizione macchinaopenapi.json (OpenAPI 3.0), per generare un client
Griglia prezziGET /pro/v1/pricing

Ottieni una chiave

Nell'app, con una licenza Pro: Impostazioni > API > New key. Dagli un nome (ad esempio "server di produzione"), scegli i permessi e, se vuoi, un limite giornaliero di crediti e una data di scadenza.

La chiave viene mostrata una sola volta. Copiala subito. Una chiave persa si sostituisce, non si recupera.

  • Al massimo tre chiavi attive per licenza. Abbastanza per ruotarne una senza interrompere il servizio: crea quella nuova, installala, revoca la vecchia.
  • Una chiave non è un posto. Il tuo computer e il tuo telefono restano utilizzabili insieme ad essa.
  • Una chiave vale quanto i tuoi crediti. Non metterla mai in una pagina web, in un'app distribuita o in un repository pubblico. Impostale un limite giornaliero di crediti non appena vive su un server.

Cosa può fare una chiave

PermessoCosa consente
LetturaSempre concesso: stato del rendering, download file, saldo, lista personaggi
ImmaginiInviare e annullare immagini (generazione, ritocco, variazione), creare personaggi
VideoInviare e annullare video, Multi-Ref Video e Face swap inclusi

Una chiamata oltre i permessi della chiave restituisce 403 missing_scope, con il permesso mancante in scope.

Il ciclo di vita del rendering

Sempre gli stessi tre passaggi.

  1. Invia. POST /images o POST /videos. Risposta immediata con un jobId e il costo.
  2. Polling. GET /images/{jobId} o GET /videos/{jobId}, ogni 3 secondi, fino a quando status è completed o failed.
  3. Scarica. GET /images/{jobId}/file o GET /videos/{jobId}/file, non appena lo stato è completed. Il file non viene conservato, quindi scaricalo senza aspettare.

Tempi indicativi: da 10 a 40 secondi per un'immagine, da 1 a 5 minuti per un video, più a lungo quando il motore parte a freddo.

La tua prima chiamata

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 }

Se risponde, tutto il resto funzionerà.

Un rendering completo, in tre modi

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

Dove andare dopo

  • Immagini: generazione, i tre modalità di ritocco, personaggi.
  • Video: formati, griglia prezzi, fotogrammi iniziali e finali, Multi-Ref Video, Face swap.
  • Personaggi: una foto, sette viste, da inserire in Multi-Ref Video.
  • Account: saldo, limiti, personaggi addestrati, attività.
  • Limiti ed errori: limiti, tutti i codici di errore, buone pratiche.
  • MCP (agenti): collega Claude, ChatGPT o Cursor direttamente, senza codice.

Cosa non c'è ancora

Nell'ordine pianificato: addestramento personaggi dalle tue foto, voci, upscaling a 2K, un seed fisso per riprodurre un rendering, e webhook per smettere di fare polling.

L'addestramento è l'unico che merita due parole: non puoi addestrare tramite API, ma puoi caricare un .safetensors che hai già e renderizzare con esso subito. Vedi Account, crediti e personaggi.

L'API è versionata. Tutto quello descritto qui rimane valido sotto /pro/v1: le aggiunte non rompono mai ciò che esiste, e un cambiamento che rompe la compatibilità arriverebbe come /pro/v2.

Windows · Mac · Cloud o locale

Genera in privato. Stasera.

Scarica tendre.AI gratis e genera senza limiti, in privato, sulla tua GPU.

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

Mac: Apple silicon (M1 o successivo), macOS 13 o successivo. I Mac Intel non sono supportati.

La generazione di immagini in locale su Mac richiede un M4 con 24 GB di memoria, oppure un M2 o M3 Pro, Max o Ultra con 24 GB. Al di sotto, tutto funziona online con i crediti. Per ora, ritocco e video su Mac funzionano online.

Tutto su tendre.AI per Mac

Non hai una GPU NVIDIA? Parti al 100% nel cloud: 5 immagini gratuite e 1 video gratuito ogni giorno. Una scheda NVIDIA (8GB+) sblocca la generazione locale illimitata.