Pro API : piloter le rendu cloud depuis ton propre serveur
Tout ce que l'application fait en ligne (images, retouches, vidéos, personnages entraînés) est également accessible via HTTP, au même prix en crédits, sans que l'application soit ouverte. Tu le pilotes depuis ton propre serveur, tes scripts ou ton agent, en utilisant les crédits de ta licence.
Disponible avec la licence Pro. La clé se crée dans l'application, sous Paramètres > API.
Tu n'es pas développeur ? La même chose est accessible depuis un agent IA sans écrire une seule ligne : voir MCP.
| Base | https://api.tendre.ai/pro/v1 |
| Authentification | en-tête Authorization: Bearer tk_pro_... |
| Format | JSON en entrée et en sortie, PNG pour les images, MP4 pour les vidéos |
| Description machine | openapi.json (OpenAPI 3.0), pour générer un client |
| Grille tarifaire | GET /pro/v1/pricing |
Obtenir une clé
Dans l'application, avec une licence Pro : Paramètres > API > Nouvelle clé. Donne-lui un nom ("serveur de production", par exemple), choisis ses permissions et, si tu le souhaites, un plafond journalier de crédits et une date d'expiration.
La clé n'est affichée qu'une seule fois. Copie-la immédiatement. Une clé perdue est remplacée, jamais récupérée.
- Trois clés actives par licence au maximum. Suffisant pour en faire tourner une sans couper le service : crée la nouvelle, installe-la, révoque l'ancienne.
- Une clé n'est pas un poste. Ton ordinateur et ton téléphone restent utilisables en parallèle.
- Une clé vaut tes crédits. Ne la mets jamais dans une page web, une application distribuée ou un dépôt public. Fixe-lui un plafond journalier de crédits dès qu'elle vit sur un serveur.
Ce qu'une clé est autorisée à faire
| Permission | Ce qu'elle permet |
|---|---|
| Read | Toujours accordée : statut des rendus, téléchargement de fichiers, solde, liste de personnages |
| Images | Soumettre et annuler des images (génération, retouche, variation), créer des personnages |
| Videos | Soumettre et annuler des vidéos, Multi-Ref Vidéo et Face swap compris |
Un appel dépassant les permissions de la clé renvoie 403 missing_scope, avec la permission
manquante dans scope.
Le cycle de vie d'un rendu
Toujours les mêmes trois étapes.
- Soumettre.
POST /imagesouPOST /videos. Réponse immédiate avec unjobIdet le coût. - Interroger.
GET /images/{jobId}ouGET /videos/{jobId}, toutes les 3 secondes, jusqu'à ce questatussoitcompletedoufailed. - Télécharger.
GET /images/{jobId}/fileouGET /videos/{jobId}/file, dès que le statut estcompleted. Le fichier n'est pas conservé, télécharge-le sans attendre.
Durées indicatives : 10 à 40 secondes pour une image, 1 à 5 minutes pour une vidéo, plus long quand le moteur démarre à froid.
Ton premier appel
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 }Si ça répond, tout le reste fonctionnera.
Un rendu complet, trois façons
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.pngPowerShell
$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.mp4Python
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"))La suite
- Images : génération, les trois modes de retouche, personnages.
- Vidéos : formats, grille tarifaire, images de début et de fin, Multi-Ref Vidéo, Face swap.
- Personnages : une photo, sept vues, à faire jouer dans le Multi-Ref Vidéo.
- Compte : solde, plafonds, personnages entraînés, activité.
- Limites et erreurs : plafonds, tous les codes d'erreur, bonnes pratiques.
- MCP (agents) : branche Claude, ChatGPT ou Cursor directement, sans code.
Ce qui n'est pas encore disponible
Dans l'ordre prévu : l'entraînement de personnages à partir de tes propres photos, les voix, le suréchantillonnage en 2K, une graine fixe pour reproduire un rendu, et les webhooks pour ne plus avoir à interroger l'API en boucle.
L'entraînement mérite une précision : tu ne peux pas entraîner via l'API, mais tu peux
téléverser un .safetensors que tu possèdes déjà et l'utiliser immédiatement pour un
rendu. Voir Compte, crédits et personnages.
L'API est versionnée. Tout ce qui est décrit ici reste valide sous /pro/v1 : les ajouts ne
cassent jamais l'existant, et un changement incompatible serait livré sous /pro/v2.