# upres-cli

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/auroracapital/upres-cli.git  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/upres-cli

## Description
UpRes MCP: list models, credits, submit 4K image and video upscale jobs.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "upres-cli": {
    "command": "npx",
    "args": ["-y","upres-cli"]
  }
}
```

## Documentation & README

# upres-cli

[![npm version](https://img.shields.io/npm/v/upres-cli?style=flat-square)](https://www.npmjs.com/package/upres-cli)
[![PyPI version](https://img.shields.io/pypi/v/upres-ai?style=flat-square)](https://pypi.org/project/upres-ai/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)

> Star this repo if UpRes helps you.
[![GitHub stars](https://img.shields.io/github/stars/auroracapital/upres-cli?style=flat-square)](https://github.com/auroracapital/upres-cli/stargazers)

Official CLI + SDK for **[upres.ai](https://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

```bash
npx upres-cli upscale photo.jpg
```

Or install globally:

```bash
npm install -g upres-cli
upres upscale photo.jpg --model lumen --scale 8 --output photo_8k.jpg
```

### Python

```bash
pip install upres-ai
upres upscale photo.jpg --model flare --scale 4
```

---

## Authentication

1. Sign up at [upres.ai](https://upres.ai) (free — 5 upscales/month)
2. Go to [upres.ai/account/api-keys](https://upres.ai/account/api-keys)
3. Generate a key — it's shown once

```bash
export UPRES_API_KEY=upres_yourkey
```

Or save permanently:

```bash
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

```bash
# 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

```typescript
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](https://tus.io/).

---

## Python 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"])
```

The Python SDK uses `httpx` — async-ready, no heavy dependencies.

---

## Examples

| Example | What it does |
|---|---|
| [batch-upscale-folder.js](https://github.com/auroracapital/upres-cli/blob/HEAD/examples/batch-upscale-folder.js) | Upscale all images in a folder with configurable concurrency |
| [restore-photo-folder.py](https://github.com/auroracapital/upres-cli/blob/HEAD/examples/restore-photo-folder.py) | Restore old/scanned photos with Lumen |
| [ecommerce-pipeline.js](https://github.com/auroracapital/upres-cli/blob/HEAD/examples/ecommerce-pipeline.js) | Product image pipeline: raw shots → 4K → publish-ready |
| [lightroom-export-hook.md](https://github.com/auroracapital/upres-cli/blob/HEAD/examples/lightroom-export-hook.md) | Auto-upscale Lightroom exports via post-processing hook |
| [figma-plugin-stub.md](https://github.com/auroracapital/upres-cli/blob/HEAD/examples/figma-plugin-stub.md) | Figma plugin integration guide |

---

## 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`.

| Alias | Kind | Best for |
|---|---|---|
| `flare` | Image | Everyday photos, fastest default |
| `prism` | Image | Text, logos, product shots — keeps edges true |
| `lumen` | Image | Maximum detail recovery for print, up to 8x |
| `mirage` | Image | Invents new detail — art and hero images |
| `hush` | Image | Faithful denoise, same size as the source |
| `keen` | Image | Deblur and sharpen, same size |
| `visage` | Image | Faces only, does not enlarge |
| `atelier` | Image | Hush, Visage if a portrait, then Lumen |
| `motion` | Video | Fast 4K finish for AI video |
| `motion-x` | Video | Cinema-grade, for film and commercials |
| `still` | Video | Temporal denoise, resolution stays put |
| `cadence` | Video | Frame interpolation, does not enlarge |
| `atelier-x` | Video | Still, then Motion X |
| `voice` | Speech | Speech denoise to 48 kHz. Not for music |

Full model catalogue: [upres.ai/models](https://upres.ai/models) · Live spec: [api.upres.ai/v1/openapi.json](https://api.upres.ai/v1/openapi.json)

---

## Pricing

| Plan | Price | Includes | API | Watermark |
|---|---|---|---|---|
| **Free** | $0 | 5 upscales/mo | — | Yes |
| **Creator** | $9/mo | 50 stills + 20 min 4K video/mo | — | No |
| **Studio** | $39/mo | 250 stills + 90 min 4K video/mo | **Yes** | No |

**Studio tier unlocks the full API, batch processing, and no output watermark.**

[Compare plans →](https://upres.ai/pricing) · [vs. Topaz →](https://upres.ai/topaz-alternative) · [vs. Upscayl →](https://upres.ai/compare/upscayl)

---

## MCP (Claude, Cursor, Hermes)

```bash
claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp
```

Or in `claude_desktop_config.json` / Cursor:

```json
{
  "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 [support@upres.ai](mailto:support@upres.ai) with your repo link. We offer 500 ops/month for qualifying OSS projects.

---

## Error handling

The SDK handles these errors automatically:

| Status | Behavior |
|---|---|
| `401` | Prints API key error + link to key management, exits |
| `402` | Prints quota exceeded + link to pricing, exits |
| `429` | Prints rate limit message (60 req/min), exits |
| `5xx` | Throws `UpresError` with message |

In Python: raises `AuthError`, `QuotaExceededError`, or `UpresError`.

---

## Contributing

See [CONTRIBUTING.md](https://github.com/auroracapital/upres-cli/blob/HEAD/CONTRIBUTING.md). Tests run with:

```bash
# Node
npm test

# Python
pip install -e ".[dev]"
pytest tests/test_client.py -v
```

---

## License

MIT — see [LICENSE](https://github.com/auroracapital/upres-cli/blob/HEAD/LICENSE)

