Pro API: lanza renders en la nube desde tu propio servidor

Todo lo que la app hace en línea (imágenes, retoques, vídeos, personajes entrenados) también es accesible por HTTP, al mismo precio en créditos, sin necesidad de tener la app abierta. Lo controlas desde tu propio servidor, tus scripts o tu agente, usando los créditos de tu licencia.

Disponible con la licencia Pro. La clave se crea en la app, en Ajustes > API.

Basehttps://api.tendre.ai/pro/v1
Autenticacióncabecera Authorization: Bearer tk_pro_...
FormatoJSON de entrada y salida, PNG para imágenes, MP4 para vídeos
Descripción de la máquinaopenapi-pro.yaml (OpenAPI 3.0), para generar un cliente

Obtener una clave

En la app, con una licencia Pro: Ajustes > API > Nueva clave. Dale un nombre (por ejemplo, "servidor de producción"), elige sus permisos y, si quieres, un límite diario de créditos y una fecha de caducidad.

La clave se muestra una sola vez. Cópiala de inmediato. Una clave perdida se reemplaza, nunca se recupera.

  • Máximo tres claves activas por licencia. Suficiente para rotar una sin interrumpir el servicio: crea la nueva, instálala, revoca la antigua.
  • Una clave no es un asiento. Tu ordenador y tu teléfono siguen siendo utilizables junto a ella.
  • Una clave vale tanto como tus créditos. Nunca la pongas en una página web, una app distribuida o un repositorio público. Asígnale un límite diario de créditos en cuanto viva en un servidor.

Qué puede hacer una clave

PermisoQué permite
LecturaSiempre concedido: estado del render, descarga de archivos, saldo, lista de personajes
ImágenesEnviar y cancelar imágenes (generación, retoque, variación)
VídeosEnviar y cancelar vídeos

Una llamada que supera los permisos de la clave responde con 403 portee_manquante, con el permiso que falta en portee.

El ciclo de vida del render

Siempre los mismos tres pasos.

  1. Enviar. POST /images o POST /videos. Respuesta inmediata con un jobId y el coste.
  2. Sondear. GET /images/{jobId} o GET /videos/{jobId}, cada 3 segundos, hasta que status sea completed o failed.
  3. Descargar. GET /images/{jobId}/file o GET /videos/{jobId}/file, en cuanto el estado sea completed. El archivo no se conserva, así que descárgalo sin esperar.

Tiempos aproximados: entre 10 y 40 segundos para una imagen, entre 1 y 5 minutos para un vídeo, más tiempo cuando el motor arranca en frío.

Tu primera llamada

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 eso responde, todo lo demás funcionará.

Un render completo, de tres formas

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

Qué ver a continuación

  • Imágenes: generación, los tres modos de retoque, personajes.
  • Vídeos: formatos, la tabla de precios, fotogramas de inicio y fin.
  • Cuenta: saldo, límites, personajes entrenados, actividad.
  • Límites y errores: límites, todos los códigos de error, buenas prácticas.

Lo que aún no está disponible

Por orden de planificación: entrenamiento de personajes a partir de tus propias fotos, voces, escalado a 2K, una semilla fija para reproducir un render, y webhooks para dejar de hacer sondeos.

La API tiene versiones. Todo lo descrito aquí sigue siendo válido bajo /pro/v1: las incorporaciones nunca rompen lo que ya existe, y un cambio incompatible se publicaría como /pro/v2.

Windows · Nube o NVIDIA

Genera en privado. Esta noche.

Descarga tendre.AI, actívalo una vez y úsalo para siempre, totalmente sin conexión, en tu propia GPU.

Descargar para WindowsDescargar para Android (.apk)
Descargar para Mac¡Versión para Mac próximamente!
OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB recomendadoDisco 20GB

¿No tienes GPU NVIDIA? Empieza 100% en la nube: 10 imágenes gratis cada día, luego 1 crédito por imagen. Una tarjeta NVIDIA (8GB+) desbloquea la generación local ilimitada.