# Workflow Utilities Scale Video API

> Tibdel id-daqs ta’ vidjo skont il-wisa’ u l-għoli b’modi ta’ stretch, pad jew crop u settings tal-codec u tal-kwalità

Jibdel id-daqs ta' vidjo għal `width` fil-mira (sa 7680) u/jew `height` (sa 4320); jekk jingħata wieħed biss, l-ieħor isegwi l-proporzjon tal-aspett. `mode` jista' jwessa', iżid bordura (b'kulur magħżul) jew jaqta'. Ikkodifika b'libx264 jew libx265, b'issettjar minn qabel tal-veloċità minn ultrafast sa slow, u `crf` minn 0 sa 51. Jirritorna d-dimensjonijiet oriġinali u l-ġodda.

- 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/mt/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 |  |  | Ipprovdi l-vidjo li għandu jiġi skalat jew ridimensjonat permezz tal-URL, billi tuża dimensjonijiet pari kemm għall-għoli kif ukoll għall-wisa’ biex tissodisfa r-rekwiżiti tal-codec tal-vidjo. |
| `width` |  | integer \| null | no |  | 2 – 7,680 | Wisa’ tal-output f’pixels, li tista’ tintuża waħedha jew flimkien mal-għoli; hija meħtieġa mill-inqas dimensjoni waħda. Bil-wisa’ biss, l-għoli jiġi kkalkulat awtomatikament mingħajr ma jinbidel il-proporzjon tal-aspett. |
| `height` |  | integer \| null | no |  | 2 – 4,320 | Għoli tal-output f’pixels, li jista’ jintuża waħdu jew flimkien mal-wisa’; hija meħtieġa mill-inqas dimensjoni waħda. Bl-għoli biss, il-wisa’ tiġi kkalkulata awtomatikament mingħajr ma jinbidel il-proporzjon tal-aspett. |
| `mode` |  | enum (string) | no | `stretch` | `stretch`, `pad`, `crop` | Metodu ta’ ridimensjonar: `stretch` jisforza d-dimensjonijiet mitluba u jista’ jbiddel il-proporzjon tal-aspett. Kemm `pad` kif ukoll `crop` iżommu l-proporzjon tal-aspett: `pad` idaħħal il-vidjo fid-dimensjonijiet mitluba u jimla l-ispazju mhux użat bil-kulur magħżul (letterboxing/pillarboxing). `crop` jimla d-dimensjonijiet mitluba, imbagħad jaqta’ miċ-ċentru biex jaqbel mad-daqs eżatt. |
| `pad_color` |  | enum (string) | no | `black` | `black`, `white`, `red`, `green`, `blue`, `gray` | Kulur użat għall-padding fil-modalità `pad`; il-modalitajiet l-oħra jinjorawh. |
| `codec` |  | enum (string) | no | `libx264` | `libx264`, `libx265` | Agħżel il-codec tal-kodifikazzjoni: uża libx265 (H.265/HEVC) għal kompressjoni aħjar, jew libx264 (H.264) għal kompatibbiltà wiesgħa. |
| `preset` |  | enum (string) | no | `fast` | `ultrafast`, `fast`, `medium`, `slow` | Preset li jikkontrolla l-veloċità tal-kodifikazzjoni. L-għażla ta’ preset aktar bil-mod ittejjeb il-kompressjoni iżda żżid il-ħin tal-kodifikazzjoni. |
| `crf` |  | integer | no | `18` | 0 – 51 | Constant Rate Factor li jikkontrolla l-kwalità fil-firxa 0–51, fejn 18 ġeneralment jidher mingħajr telf għall-biċċa l-kbira tal-kontenut. It-tnaqqis tal-issettjar itejjeb il-kwalità iżda jżid id-daqs tal-fajl. |

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} | Vidjo wara l-iskaljar jew ir-ridimensjonar. |
| `original_width` | integer | Wisa’ tal-vidjo oriġinali, imkejla f’pixels. |
| `original_height` | integer | Għoli tal-vidjo oriġinali, imkejjel f’pixels. |
| `scaled_width` | integer | Wisa’ tal-vidjo tal-output, imkejla f’pixels. |
| `scaled_height` | integer | Għoli tal-vidjo tal-output, imkejjel f’pixels. |

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