# Creative Upscaler API

> Bộ phóng to sáng tạo dựa trên diffusion, bổ sung chi tiết, với nền SD 1.5 hoặc SDXL và điều khiển hình dạng

Phóng to hình ảnh từ `image_url` theo `scale` từ 1 đến 5 đồng thời tạo thêm chi tiết. `model_type` là SD_1_5 hoặc SDXL, `creativity` và `detail` đặt mức độ thay đổi, còn `shape_preservation` giữ nguyên cấu trúc gốc. Nếu không có `prompt`, lời nhắc sẽ được tự động tạo. Hỗ trợ URL mô hình cơ sở, LoRA và embedding tùy chỉnh.

- Model id: `creative-upscaler`
- Made by: Open model
- Category: Upscale
- Output: image
- Charged by usage (up to $1.125 per run, typical $0.007; the rest of the hold is refunded): $0.00125 / second of processing time (cheapest run $0.007 (7 API credits))
- Run: `POST https://api.doitong.com/v1/run/creative-upscaler`
- Quote: `POST https://api.doitong.com/v1/quote/creative-upscaler`
- Docs page: https://doitong.com/vi/developers/models/creative-upscaler

## Pricing

Price: **$0.00125 / second of processing time**. Charged by actual usage at $0.00125 / second of processing time: up to $1.125 per run (the quote gives the maximum for your input), the rest is refunded automatically after the run. A typical run costs $0.007.

The full example input below holds up to $1.125 = 1125 API credits (up to 900 s of processing time × $0.00125) when it starts; a typical run costs $0.007 (7 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). This model is charged by usage: `POST https://api.doitong.com/v1/quote/creative-upscaler` with the same JSON body returns the most the run can cost for that input (`credits`, debited when the run starts); after the run you pay the usage the model reports and the rest is refunded automatically. An input whose maximum would exceed the per-run limit is refused with 422. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `model_type` |  | enum (string) | no | `SD_1_5` | `SD_1_5`, `SDXL` | Loại mô hình được sử dụng để nâng cấp; mặc định là SD_1_5. |
| `image_url` | `image` | string (image URL) | yes |  |  | Hình ảnh nguồn để nâng cấp. |
| `prompt` |  | string \| null | no |  |  | Lời nhắc tạo hình ảnh, được BLIP2 tạo khi bạn bỏ qua lời nhắc. Khi tự cung cấp, hãy thêm càng nhiều chi tiết mô tả càng tốt để đạt kết quả tốt nhất. |
| `scale` |  | number | no | `2` | 1 – 5 | Tăng hệ số tỷ lệ này để làm hình ảnh đầu ra lớn hơn. |
| `creativity` |  | number | no | `0.5` | 0 – 1 | Mức độ lệch được phép so với bản gốc. |
| `detail` |  | number | no | `1` | 0 – 5 | Mức độ chi tiết được thêm vào. |
| `shape_preservation` |  | number | no | `0.25` | 0 – 3 | Mức độ giữ lại hình dạng của hình ảnh nguồn. |
| `prompt_suffix` |  | string | no | `high quality, highly detailed, high resolution, sharp` |  | Phần kết thúc lời nhắc dùng chung để thêm token embedding hoặc cụm từ như 'high quality' vào mọi lời nhắc. |
| `negative_prompt` |  | string | no | `blurry, low resolution, bad, ugly, low quality, pixelated, interpolated, compression artifacts, noisey, grainy` |  | Lời nhắc phủ định chỉ định các chi tiết hình ảnh không mong muốn. Có thể loại màu sắc, vật thể, phong cảnh hoặc các đặc điểm và phẩm chất nhỏ hơn, chẳng hạn như ria mép, mờ hoặc độ phân giải thấp. |
| `seed` |  | integer \| null | no |  |  | Seed để tái tạo hình ảnh trong Stable Diffusion. Có thể tái tạo chính xác hình ảnh ở mỗi lần chạy bằng cách giữ nguyên phiên bản mô hình, lời nhắc và seed. |
| `guidance_scale` |  | number | no | `7.5` | 0 – 16 | Mức độ tuân thủ lời nhắc khi chọn hình ảnh, được biểu thị bằng CFG (Classifier Free Guidance). |
| `num_inference_steps` |  | integer | no | `20` | 1 – 200 | Số bước suy luận tạo hình ảnh; số bước lớn hơn cho chất lượng hình ảnh tốt hơn nhưng thời gian tạo sinh lâu hơn. |
| `enable_safety_checks` |  | boolean | no | `true` |  | Tùy chọn kiểm tra an toàn; khi là true, thay thế bằng hình ảnh đen đối với mọi kết quả được phát hiện có nội dung không an toàn tiềm ẩn. |
| `skip_ccsr` |  | boolean | no | `false` |  | Bỏ qua tiền xử lý CCSR khi bật; hình ảnh được chuyển trực tiếp đến mô hình sáng tạo. |
| `override_size_limits` |  | boolean | no | `false` |  | Cho phép tải lên các tệp lớn có thể mất rất nhiều thời gian. |
| `base_model_url` |  | string \| null | no |  |  | URL mô hình cơ sở để nâng cấp. |
| `additional_lora_url` |  | string | no |  |  | Chỉ định LORA bổ sung để nâng cấp bằng cách cung cấp URL mô hình. Nếu không có giá trị, mặc định là None. |
| `additional_lora_scale` |  | number | no | `1` |  | Điều chỉnh mức ảnh hưởng của LORA bổ sung đến việc nâng cấp thông qua cài đặt tỷ lệ, mặc định là 1.0. |
| `additional_embedding_url` |  | string | no |  |  | Cung cấp embedding bổ sung để nâng cấp bằng cách trỏ đến chúng qua URL. Nếu không có giá trị, mặc định là None. |

File parameters (`image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/creative-upscaler?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/creative-upscaler?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/creative-upscaler", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "creative-upscaler",
      "input": {
        "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "creative-upscaler",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 1125,
    "usd": "1.125",
    "charged": 1125,
    "refunded": 0
  },
  "input": {
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "output": {
    "image": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768
    },
    "seed": 42
  },
  "outputs": [
    {
      "type": "image",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `image` | object {url, content_type, file_name, file_size, width, height} | Thông tin tệp của hình ảnh đã tạo. |
| `seed` | integer | Seed tạo sinh hình ảnh, bao gồm giá trị được chọn ngẫu nhiên nếu đầu vào không cung cấp seed; nếu không, lặp lại giá trị đã cung cấp. |

## Related models

- [Topaz Image Upscale](https://doitong.com/developers/models/topaz/upscale/image/precision.md) (`topaz/upscale/image/precision`): $0.08 / 24 megapixels of output image
- [Topaz Video Upscale](https://doitong.com/developers/models/topaz/upscale/video/precision.md) (`topaz/upscale/video/precision`): from $0.00667 / second of input video
- [AuraSR](https://doitong.com/developers/models/aura-sr.md) (`aura-sr`): $0.001111 / second of processing time
- [DRCT-Super-Resolution](https://doitong.com/developers/models/drct-super-resolution.md) (`drct-super-resolution`): $0.0045 / megapixel of output image
- [Flashvsr](https://doitong.com/developers/models/flashvsr/upscale/video.md) (`flashvsr/upscale/video`): $0.0005 / megapixel of output video
- [Fooocus Upscale or Vary](https://doitong.com/developers/models/fooocus/upscale-or-vary.md) (`fooocus/upscale-or-vary`): $0.007 / image
- [Upscale Images](https://doitong.com/developers/models/esrgan.md) (`esrgan`): $0.000575 / second of processing time
- [Video Upscaler](https://doitong.com/developers/models/video-upscaler.md) (`video-upscaler`): $0.0008 / megapixel of output video

## Links

- HTML page: https://doitong.com/developers/models/creative-upscaler
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=creative-upscaler
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/creative-upscaler
