UpRes (upres-cli)
Servidor MCP e CLI de upscaling de imagens e vídeos com IA, até 8K, em 14 modelos neurais especializados.
Documentação
upres-cli
CLI + SDK oficial para upres.ai — restauração de imagem, vídeo e fala. Uma API, 14 aliases públicos, saída de até 8K.
$ upres upscale photo.jpg --model flare --scale 4
Submitting job... model=flare
Job created: 550e8400-e29b-41d4-a716-446655440000 (status: pending)
Waiting for result.......
Downloading to photo_upscaled.jpg... done.
Result: photo_upscaled.jpg
Por que criamos isso
- Topaz custa US$ 200/ano, apenas desktop, sem API, sem automação
- Upscayl é ótimo para usos pontuais, mas não lida com exportações em lote ou pipelines de CI
- Qualquer outro upscaler SaaS ou coloca marca d'água na sua saída, limita a resolução a 2K, ou cobra por imagem sem plano mensal
O upres.ai oferece uma API REST limpa, 14 aliases públicos, processamento em lote e preços previsíveis a partir de US$ 9/mês na oferta de lançamento Creator.
Início rápido
Node.js
npx upres-cli upscale photo.jpg
Ou instale globalmente:
npm install -g upres-cli
upres upscale photo.jpg --model lumen --scale 8 --output photo_8k.jpg
Python
pip install upres-ai
upres upscale photo.jpg --model flare --scale 4
Autenticação
- Cadastre-se em upres.ai (grátis — 5 upscales/mês)
- Acesse upres.ai/account/api-keys
- Gere uma chave — ela é exibida apenas uma vez
export UPRES_API_KEY=upres_yourkey
Ou salve permanentemente:
mkdir -p ~/.config/upres
echo '{"apiKey":"upres_yourkey"}' > ~/.config/upres/config.json
Ordem de resolução da chave: flag --api-key → variável de ambiente UPRES_API_KEY → ~/.config/upres/config.json
Comandos
# Upscale a single image (local file or URL)
upres upscale photo.jpg --model flare --scale 4
upres upscale photo.jpg --model lumen --scale 8 --output out.jpg
upres upscale https://example.com/photo.jpg --model prism
# Upscale video (AI-generated video from Sora, Kling, Runway etc.)
upres upscale clip.mp4 --model motion --scale 4
# Batch upscale a folder
upres batch ./photos/ --model flare --output ./upscaled/ --concurrency 5
# List available models
upres models
# List recent jobs
upres jobs --limit 20 --status completed
# Account / quota info
upres account
SDK Node.js
import { UpresClient } from "upres-cli";
const client = new UpresClient(); // reads UPRES_API_KEY from env
// Upscale a local file
const job = await client.createJobFromFile("photo.jpg", {
model: "flare",
scale: 4,
});
// Wait for completion
const completed = await client.waitForJob(job.id);
// Download result
await client.downloadResult(completed, "photo_4k.jpg");
console.log("Done:", completed.result_url);
Arquivos acima de 50 MB são enviados automaticamente via protocolo retomável TUS.
SDK Python
from upres import UpresClient
with UpresClient() as client: # reads UPRES_API_KEY from env
job = client.create_job_from_file(
"photo.jpg",
model="flare",
scale=4,
)
completed = client.wait_for_job(job["id"])
client.download_result(completed, "photo_4k.jpg")
print("Done:", completed["result_url"])
O SDK Python usa httpx — pronto para async, sem dependências pesadas.
Exemplos
| Exemplo | O que faz |
|---|---|
| batch-upscale-folder.js | Aumenta a escala de todas as imagens em uma pasta com concorrência configurável |
| restore-photo-folder.py | Restaura fotos antigas/digitalizadas com Lumen |
| ecommerce-pipeline.js | Pipeline de imagens de produto: fotos brutas → 4K → prontas para publicação |
| lightroom-export-hook.md | Aumenta automaticamente a escala de exportações do Lightroom via hook de pós-processamento |
| figma-plugin-stub.md | Guia de integração de plugin para Figma |
Modelos
14 aliases públicos entre imagem, vídeo e fala. Cada um informa antecipadamente se inventa detalhes ou deixa seu arquivo intacto. Aliases que não ampliam ignoram --scale.
| Alias | Tipo | Melhor para |
|---|---|---|
flare | Imagem | Fotos do dia a dia, padrão mais rápido |
prism | Imagem | Texto, logotipos, fotos de produto — mantém bordas fiéis |
lumen | Imagem | Recuperação máxima de detalhes para impressão, até 8x |
mirage | Imagem | Inventa novos detalhes — arte e imagens de destaque |
hush | Imagem | Redução de ruído fiel, mesmo tamanho da fonte |
keen | Imagem | Desfoque e nitidez, mesmo tamanho |
visage | Imagem | Apenas rostos, não amplia |
atelier | Imagem | Hush, Visage se for retrato, depois Lumen |
motion | Vídeo | Acabamento 4K rápido para vídeo de IA |
motion-x | Vídeo | Qualidade de cinema, para filmes e comerciais |
still | Vídeo | Redução de ruído temporal, resolução mantida |
cadence | Vídeo | Interpolação de quadros, não amplia |
atelier-x | Vídeo | Still, depois Motion X |
voice | Fala | Redução de ruído de fala até 48 kHz. Não para música |
Catálogo completo de modelos: upres.ai/models · Especificação ao vivo: api.upres.ai/v1/openapi.json
Preços
| Plano | Preço | Inclui | API | Marca d'água |
|---|---|---|---|---|
| Free | US$ 0 | 5 upscales/mês | — | Sim |
| Creator | US$ 9/mês (oferta de lançamento, era US$ 19) | 50 imagens + 20 min de vídeo 4K/mês | — | Não |
| Studio | US$ 39/mês | 250 imagens + 90 min de vídeo 4K/mês | Sim | Não |
O plano Studio desbloqueia a API completa, processamento em lote e sem marca d'água na saída.
Comparar planos → · vs. Topaz → · vs. Upscayl →
MCP (Claude, Cursor, Hermes)
claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp
Ou em claude_desktop_config.json / Cursor:
{
"mcpServers": {
"upres": {
"command": "npx",
"args": ["-y", "github:auroracapital/upres-cli", "mcp"],
"env": { "UPRES_API_KEY": "upres_yourkey" }
}
}
}
Ferramentas: upres_list_models, upres_get_credits, upres_upscale_image, upres_upscale_video, upres_enhance_audio, upres_get_job.
Plano gratuito para projetos open-source
Se você está construindo algo open-source sobre a API, envie um e-mail para support@upres.ai com o link do seu repositório. Oferecemos 500 operações/mês para projetos OSS qualificados.
Tratamento de erros
O SDK lida com estes erros automaticamente:
| Status | Comportamento |
|---|---|
401 | Exibe erro de chave de API + link para gerenciamento de chaves, encerra |
402 | Exibe cota excedida + link para preços, encerra |
429 | Exibe mensagem de limite de requisições (60 req/min), encerra |
5xx | Lança UpresError com mensagem |
Em Python: levanta AuthError, QuotaExceededError ou UpresError.
Contribuindo
Veja CONTRIBUTING.md. Os testes são executados com:
# Node
npm test
# Python
pip install -e ".[dev]"
pytest tests/test_client.py -v
Licença
MIT — veja LICENSE