upres-cli
Official CLI + SDK for upres.ai — image, video, and speech restoration. One API, 14 public aliases, up to 8K output.
$ 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
Why we built this
- Topaz is $200/yr, desktop-only, no API, no automation
- Upscayl is great for one-offs but can't handle bulk exports or CI pipelines
- Every other SaaS upscaler either watermarks your output, caps resolution at 2K, or charges per image with no monthly plan
upres.ai gives you a clean REST API, 14 public aliases, batch processing, and predictable pricing starting at $9/mo on the Creator launch deal.
Quickstart
Node.js
npx upres-cli upscale photo.jpg
Or install globally:
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
Authentication
- Sign up at upres.ai (free — 5 upscales/month)
- Go to upres.ai/account/api-keys
- Generate a key — it's shown once
export UPRES_API_KEY=upres_yourkey
Or save permanently:
mkdir -p ~/.config/upres
echo '{"apiKey":"upres_yourkey"}' > ~/.config/upres/config.json
Key resolution order: --api-key flag → UPRES_API_KEY env var → ~/.config/upres/config.json
Commands
# 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
Node.js SDK
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);
Files over 50 MB are automatically uploaded via TUS resumable protocol.
Python SDK
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"])
The Python SDK uses httpx — async-ready, no heavy dependencies.
Examples
Models
14 public aliases across image, video, and speech. Each one tells you up front whether it invents detail or leaves your file alone. Aliases that do not enlarge ignore --scale.
Full model catalogue: upres.ai/models · Live spec: api.upres.ai/v1/openapi.json
Pricing
Studio tier unlocks the full API, batch processing, and no output watermark.
Compare plans → · vs. Topaz → · vs. Upscayl →
MCP (Claude, Cursor, Hermes)
claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp
Or in claude_desktop_config.json / Cursor:
{
"mcpServers": {
"upres": {
"command": "npx",
"args": ["-y", "github:auroracapital/upres-cli", "mcp"],
"env": { "UPRES_API_KEY": "upres_yourkey" }
}
}
}
Tools: upres_list_models, upres_get_credits, upres_upscale_image, upres_upscale_video, upres_enhance_audio, upres_get_job.
Free tier for open-source projects
If you're building something open-source on top of the API, email [email protected] with your repo link. We offer 500 ops/month for qualifying OSS projects.
Error handling
The SDK handles these errors automatically:
In Python: raises AuthError, QuotaExceededError, or UpresError.
Contributing
See CONTRIBUTING.md. Tests run with:
# Node
npm test
# Python
pip install -e ".[dev]"
pytest tests/test_client.py -v
License
MIT — see LICENSE