Images · Image to image

CCSR API

CCSR image upscaler. Free on provider, minimal cost.

Typical time
~30 s
Model id
ccsr

CCSR runs on one varg API key and one credit balance, the same as every other model here. You pay the provider's price, with no markup.

POST /v2/tools/image/call
curl -X POST https://api.varg.ai/v2/tools/image/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ccsr",
  "files": [
    {
      "url": "https://example.com/input.png"
    }
  ]
}'

CCSR inputs

The JSON body of the request. Media inputs are URLs: upload a local file with POST /v2/files and pass the URL it returns. Full JSON Schema, no key needed: api.varg.ai/v2/tools/image?model=ccsr

CCSR request fields
FieldWhat it does
model string requiredccsr picks a route automatically.
prompt string —
files array of { url } —
aspect_ratio string Allowed e.g. 16:9 | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | auto

Provider options

Optional, under provider_options.<provider>. Only the options of the provider that runs the job apply; pin a route to choose it.

provider_options.fal

CCSR options for fal
FieldWhat it does
seed integer Allowed -9007199254740991–9007199254740991
scale number The scale of the output image. The higher the scale, the bigger the output image will be. Allowed 1–4
steps integer The number of steps to run the model for. The higher the number the better the quality and longer it will take to generate. Allowed 10–100
t_max number The ending point of uniform sampling strategy. Allowed 0–1
t_min number The starting point of uniform sampling strategy. Allowed 0–1
tile_vae boolean If specified, a patch-based sampling strategy will be used for VAE decoding.
image_url string (URL) The URL or data URI of the image to upscale.
color_fix_type string Allowed none | wavelet | adain
tile_diffusion string Allowed none | mix | gaussian
tile_diffusion_size integer Size of patch. Allowed 256–2048
tile_diffusion_stride integer Stride of sliding patch. Allowed 128–1024
tile_vae_decoder_size integer Size of VAE patch. Allowed 64–2048
tile_vae_encoder_size integer Size of latent image Allowed 128–2048

Call the CCSR API

POST https://api.varg.ai/v2/tools/image/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.

1. Send the request

cURL
curl -X POST https://api.varg.ai/v2/tools/image/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ccsr",
  "files": [
    {
      "url": "https://example.com/input.png"
    }
  ]
}'
JavaScript
JavaScript
const headers = {
  Authorization: `Bearer ${process.env.VARG_API_KEY}`,
  'Content-Type': 'application/json',
}

const res = await fetch('https://api.varg.ai/v2/tools/image/call', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    "model": "ccsr",
    "files": [
      {
        "url": "https://example.com/input.png"
      }
    ]
  }),
})
const job = await res.json() // { id: "job_…", status: "queued" }
Python
Python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}

job = requests.post(
    "https://api.varg.ai/v2/tools/image/call",
    headers=headers,
    json={
      "model": "ccsr",
      "files": [
        {
          "url": "https://example.com/input.png"
        }
      ]
    },
).json()  # {"id": "job_…", "status": "queued"}

2. Get the result

Poll the job until its status is completed, failed or cancelled; CCSR typically takes about 30 s. The result is at output.outputs[0].url.

GET /v2/jobs/{id}
curl https://api.varg.ai/v2/jobs/$JOB_ID \
  -H "Authorization: Bearer $VARG_API_KEY"

# Poll until "status" is completed, failed or cancelled.
# The result is in output.outputs[0].url
JavaScript
JavaScript
let current = job
while (!['completed', 'failed', 'cancelled'].includes(current.status)) {
  await new Promise((resolve) => setTimeout(resolve, 3000))
  current = await (await fetch(`https://api.varg.ai/v2/jobs/${current.id}`, { headers })).json()
}
console.log(current.output?.outputs?.[0]?.url)
Python
Python
import time

while job["status"] not in ("completed", "failed", "cancelled"):
    time.sleep(3)
    job = requests.get(f"https://api.varg.ai/v2/jobs/{job['id']}", headers=headers).json()

print(job["output"]["outputs"][0]["url"])
Or take a webhook instead of polling

Add options.webhook_url and varg POSTs the finished job to it.

request body
{
  "model": "ccsr",
  "files": [
    {
      "url": "https://example.com/input.png"
    }
  ],
  "options": {
    "webhook_url": "https://your-app.com/varg-webhook"
  }
}

From Claude, ChatGPT or Cursor (MCP)

The varg MCP server, https://mcp.varg.ai/mcp, runs CCSR with call_tool. Sign in with varg, no API key to paste. How to connect it

call_tool
{
  "tool": "image",
  "input": {
    "model": "ccsr",
    "files": [
      {
        "url": "https://example.com/input.png"
      }
    ]
  },
  "wait": true
}

CCSR API: questions

How much does CCSR cost on varg?
The price of a CCSR run depends on the request. varg charges the provider's price with no markup, from one credit balance. For the exact price of a request before you run it, send the same body to POST https://api.varg.ai/v2/estimate.
How do I call the CCSR API?
Send POST https://api.varg.ai/v2/tools/image/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "ccsr". The call answers 202 with a job right away. Poll GET https://api.varg.ai/v2/jobs/{id} until "status" is "completed", then read output.outputs[0].url, or pass options.webhook_url to be called back.
Can I use CCSR from Claude, ChatGPT or Cursor?
Yes. Add the varg MCP server (https://mcp.varg.ai/mcp) to Claude, ChatGPT, Cursor or any other MCP client and sign in with varg, with no API key to paste. The agent runs CCSR with call_tool, passing tool "image" and "model": "ccsr".
How long does a CCSR request take?
Typically about 30 s on the fastest route, by the catalog's estimate. The API answers at once with a job id, so nothing waits on an open connection while it runs.

For AI agents: this page as Markdown is varg.ai/models/ccsr.md, and every model is listed in varg.ai/models/llms.txt.