Pro API: controla o rendering cloud a partir do teu próprio servidor

Tudo o que a app faz online (imagens, retoque, vídeos, personagens treinadas) está também acessível via HTTP, ao mesmo preço em créditos, sem a app estar aberta. Podes controlá-lo a partir do teu próprio servidor, dos teus scripts ou do teu agente, usando os créditos da tua licença.

Disponível com a licença Pro. A chave é criada na app, em Configurações > API.

Não és programador? A mesma funcionalidade está acessível a partir de um agente de IA sem escrever uma linha: consulta o MCP.

Basehttps://api.tendre.ai/pro/v1
Autenticaçãocabeçalho Authorization: Bearer tk_pro_...
FormatoJSON na entrada e saída, PNG para imagens, MP4 para vídeos
Descrição da máquinaopenapi.json (OpenAPI 3.0), para gerar um cliente
Tabela de preçosGET /pro/v1/pricing

Obter uma chave

Na app, com uma licença Pro: Configurações > API > New key. Dá-lhe um nome (por exemplo, "servidor de produção"), escolhe as permissões e, se quiseres, um limite diário de créditos e uma data de expiração.

A chave é mostrada uma única vez. Copia-a de imediato. Uma chave perdida é substituída, nunca recuperada.

  • No máximo três chaves ativas por licença. É suficiente para rodar uma sem interromper o serviço: cria a nova, instala-a, revoga a antiga.
  • Uma chave não é um lugar. O teu computador e o teu telemóvel continuam a ser utilizáveis a par dela.
  • Uma chave vale os teus créditos. Nunca a coloques numa página web, numa app distribuída ou num repositório público. Define-lhe um limite diário de créditos assim que residir num servidor.

O que uma chave pode fazer

PermissãoO que permite
ReadSempre concedida: estado do render, download de ficheiros, saldo, lista de personagens
ImagesSubmeter e cancelar imagens (geração, retoque, variação), criar personagens
VideosSubmeter e cancelar vídeos, Multi-Ref Vídeo e Face swap incluídos

Uma chamada que ultrapasse as permissões da chave responde com 403 missing_scope, com a permissão em falta em scope.

O ciclo de vida do render

São sempre os mesmos três passos.

  1. Submeter. POST /images ou POST /videos. Resposta imediata com um jobId e o custo.
  2. Fazer polling. GET /images/{jobId} ou GET /videos/{jobId}, a cada 3 segundos, até status ser completed ou failed.
  3. Descarregar. GET /images/{jobId}/file ou GET /videos/{jobId}/file, assim que o estado for completed. O ficheiro não é guardado, por isso descarrega-o sem demora.

Tempos aproximados: 10 a 40 segundos para uma imagem, 1 a 5 minutos para um vídeo, mais tempo quando o motor arranca a frio.

A tua primeira chamada

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 isto responder, tudo o resto vai funcionar.

Um render completo, de três formas

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

O que fazer a seguir

  • Imagens: geração, os três modos de retoque, personagens.
  • Vídeos: formatos, tabela de preços, imagens de início e fim, Multi-Ref Vídeo, Face swap.
  • Personagens: uma foto, sete vistas, para incluir em Multi-Ref Vídeo.
  • Conta: saldo, limites, personagens treinadas, atividade.
  • Limites e erros: limites, todos os códigos de erro, boas práticas.
  • MCP (agentes): liga o Claude, o ChatGPT ou o Cursor diretamente, sem código.

O que ainda não existe

Por ordem planeada: treino de personagens a partir das tuas próprias fotos, vozes, upscaling para 2K, uma seed fixa para reproduzir um render, e webhooks para deixares de fazer polling.

O treino é o que merece uma nota: não podes treinar através da API, mas podes fazer upload de um .safetensors que já tens e renderizá-lo de imediato. Consulta Conta, créditos e personagens.

A API tem versionamento. Tudo o que está aqui descrito mantém-se válido em /pro/v1: as adições nunca quebram o que existe, e uma alteração incompatível seria lançada como /pro/v2.

Windows · Mac · Cloud ou local

Gera em privado. Esta noite.

Descarrega a tendre.AI gratuitamente e gera sem limites, de forma privada, na tua própria GPU.

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

Mac: Apple silicon (M1 ou posterior), macOS 13 ou posterior. Os Macs Intel não são suportados.

A geração local de imagens no Mac precisa de um M4 com 24 GB de memória, ou um M2 ou M3 Pro, Max ou Ultra com 24 GB. Abaixo disso, tudo corre online com créditos. Por agora, a retoque e o vídeo correm online no Mac.

Tudo sobre o tendre.AI para Mac

Sem GPU NVIDIA? Começa 100% na cloud: 5 imagens grátis e 1 vídeo grátis todos os dias. Uma placa NVIDIA (8GB+) desbloqueia a geração local ilimitada.