Pro API: genera en el cloud desde tu propio servidor

Todo lo que hace la app online (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.

¿No eres desarrollador? Lo mismo es accesible desde un agente de IA sin escribir ni una línea: consulta MCP.

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.json (OpenAPI 3.0), para generar un cliente
Tabla de preciosGET /pro/v1/pricing

Obtener una clave

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

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 puesto. 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. Ponle un límite diario de créditos en cuanto viva en un servidor.

Qué puede hacer una clave

PermisoLo que permite
ReadSiempre concedido: estado del render, descarga de archivos, saldo, lista de personajes
ImagesEnviar y cancelar imágenes (generación, retoque, variación), crear personajes
VideosEnviar y cancelar vídeos, Multi-Ref Vídeo y Face swap incluidos

Una llamada fuera de los permisos de la clave responde 403 missing_scope, con el permiso que falta en scope.

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. Consultar. 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: de 10 a 40 segundos para una imagen, de 1 a 5 minutos para un vídeo, más tiempo cuando el motor arranca en frío.

Tu primera llamada

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 }

Si eso responde, todo lo demás funcionará.

Un render completo, de tres maneras

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

Qué hacer 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, Multi-Ref Vídeo, Face swap.
  • Personajes: una foto, siete vistas, para usar en Multi-Ref Vídeo.
  • Cuenta: saldo, límites, personajes entrenados, actividad.
  • Límites y errores: límites, todos los códigos de error, buenas prácticas.
  • MCP (agentes): conecta Claude, ChatGPT o Cursor directamente, sin código.

Lo que aún no está disponible

En el orden previsto: entrenamiento de personajes desde tus propias fotos, voces, upscaling a 2K, una semilla fija para reproducir un render y webhooks para dejar de consultar el estado.

El entrenamiento merece una aclaración: no puedes entrenar a través de la API, pero puedes subir un .safetensors que ya tengas y renderizar con él de inmediato. Consulta Cuenta, créditos y personajes.

La API está versionada. Todo lo descrito aquí sigue siendo válido bajo /pro/v1: las adiciones nunca rompen lo existente, y un cambio que rompa la compatibilidad se publicaría como /pro/v2.

Windows · Mac · Nube o local

Genera en privado. Esta noche.

Descarga tendre.AI gratis y genera sin límites, de forma privada, en tu propia GPU.

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

Mac: Apple silicon (M1 o posterior), macOS 13 o posterior. Los Mac con Intel no son compatibles.

La generación de imágenes local en Mac necesita un M4 con 24 GB de memoria, o un M2 o M3 Pro, Max o Ultra con 24 GB. Por debajo de eso, todo se ejecuta online con créditos. El retoque y el video se ejecutan online en Mac por ahora.

Todo sobre tendre.AI para Mac

¿No tienes GPU NVIDIA? Empieza 100% en la nube: 5 imágenes y 1 vídeo gratis cada día. Una tarjeta NVIDIA (8GB+) desbloquea la generación local ilimitada.