# Workflow Utilities Scale Video API

> 按宽度和高度调整视频大小，支持拉伸、填充或裁剪模式，以及编码器和质量设置

将视频缩放到目标 `width`（最大 7680）和/或 `height`（最大 4320）；只提供其中一个时，另一个会按宽高比确定。`mode` 可设为 stretch、pad（使用指定颜色）或 crop。可使用 libx264 或 libx265 编码，速度预设范围从 ultrafast 到 slow，`crf` 范围为 0 到 51。返回原始和新尺寸。

- Model id: `workflow-utilities/scale-video`
- Made by: Utility
- Category: Video to Video
- Output: video
- Charged by usage (up to $3.60 per run, typical $0.032; the rest of the hold is refunded): $0.001 / second of processing time (cheapest run $0.032 (32 API credits))
- Run: `POST https://api.doitong.com/v1/run/workflow-utilities/scale-video`
- Quote: `POST https://api.doitong.com/v1/quote/workflow-utilities/scale-video`
- Docs page: https://doitong.com/zh/developers/models/workflow-utilities/scale-video

## Pricing

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

The full example input below holds up to $3.60 = 3600 API credits (up to 3600 s of processing time × $0.001) when it starts; a typical run costs $0.032 (32 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/workflow-utilities/scale-video` 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 |
|---|---|---|---|---|---|---|
| `video_url` | `video` | string (video URL) | yes |  |  | 通过 URL 提供要缩放或调整大小的视频；高度和宽度都使用偶数尺寸，以满足视频编解码器要求。 |
| `width` |  | integer \| null | no |  | 2 – 7,680 | 输出宽度，单位为像素，可单独使用或与高度搭配；至少需要提供一个尺寸。仅提供宽度时，高度会自动推导且不会改变宽高比。 |
| `height` |  | integer \| null | no |  | 2 – 4,320 | 输出高度，单位为像素，可单独使用或与宽度搭配；至少需要提供一个尺寸。仅提供高度时，宽度会自动推导且不会改变宽高比。 |
| `mode` |  | enum (string) | no | `stretch` | `stretch`, `pad`, `crop` | 调整大小方法：`stretch` 强制使用请求的尺寸，可能改变宽高比。`pad` 和 `crop` 都会保留宽高比：`pad` 将视频适配到请求尺寸内，并用所选颜色填充未使用空间（上下或左右黑边）。`crop` 填满请求尺寸，然后从中心裁剪以匹配精确大小。 |
| `pad_color` |  | enum (string) | no | `black` | `black`, `white`, `red`, `green`, `blue`, `gray` | `pad` 模式下用于填充的颜色；其他模式会忽略该值。 |
| `codec` |  | enum (string) | no | `libx264` | `libx264`, `libx265` | 选择编码编解码器：使用 libx265 (H.265/HEVC) 以获得更好的压缩，或使用 libx264 (H.264) 以获得广泛兼容性。 |
| `preset` |  | enum (string) | no | `fast` | `ultrafast`, `fast`, `medium`, `slow` | 控制编码速度的预设。选择较慢的预设可改善压缩效果，但会增加编码时间。 |
| `crf` |  | integer | no | `18` | 0 – 51 | 控制 0–51 范围内质量的 Constant Rate Factor，18 通常对大多数内容呈现无损效果。降低该设置可提高质量，但会增加文件大小。 |

File parameters (`video`) 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
{
  "video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

A fuller example:

```json
{
  "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

## 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/workflow-utilities/scale-video?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }'

# 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/workflow-utilities/scale-video?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }),
});
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 = {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/workflow-utilities/scale-video", 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": "workflow-utilities/scale-video",
      "input": {
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
      },
      "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": "workflow-utilities/scale-video",
  "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": 3600,
    "usd": "3.60",
    "charged": 3600,
    "refunded": 0
  },
  "input": {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "original_width": 1929,
    "original_height": 1082,
    "scaled_width": 1920,
    "scaled_height": 1080
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "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 |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} | 缩放或调整大小后的视频。 |
| `original_width` | integer | 原视频宽度，单位为像素。 |
| `original_height` | integer | 原视频高度，单位为像素。 |
| `scaled_width` | integer | 输出视频宽度，单位为像素。 |
| `scaled_height` | integer | 输出视频高度，单位为像素。 |

## Related models

- [Workflow Utilities Extract Nth Frame](https://doitong.com/developers/models/workflow-utilities/extract-nth-frame.md) (`workflow-utilities/extract-nth-frame`): $0.001 / second of processing time
- [Workflow Utilities Pick Image By Index](https://doitong.com/developers/models/workflow-utilities/pick-image-by-index.md) (`workflow-utilities/pick-image-by-index`): $0.001 / run
- [Workflow Utilities Auto Subtitle](https://doitong.com/developers/models/workflow-utilities/auto-subtitle.md) (`workflow-utilities/auto-subtitle`): $0.03 / minute of input video
- [Workflow Utilities Blend Video](https://doitong.com/developers/models/workflow-utilities/blend-video.md) (`workflow-utilities/blend-video`): $0.001 / second of processing time
- [Workflow Utilities Interleave Video](https://doitong.com/developers/models/workflow-utilities/interleave-video.md) (`workflow-utilities/interleave-video`): $0.00017 / second of processing time
- [Workflow Utilities Reverse Video](https://doitong.com/developers/models/workflow-utilities/reverse-video.md) (`workflow-utilities/reverse-video`): $0.001 / second of processing time
- [Workflow Utilities Trim Video](https://doitong.com/developers/models/workflow-utilities/trim-video.md) (`workflow-utilities/trim-video`): $0.001 / second of processing time
- [Workflow Utilities Audio Compressor](https://doitong.com/developers/models/workflow-utilities/audio-compressor.md) (`workflow-utilities/audio-compressor`): $0.001 / second of processing time

## Links

- HTML page: https://doitong.com/developers/models/workflow-utilities/scale-video
- 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=workflow-utilities/scale-video
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/workflow-utilities/scale-video
