# Void Video Inpainting API

> Ka tango i tētahi mea mai i te ataata me ōna pānga ki te whakaaturanga, mā te whakamahi i tētahi ataata kopare, i tētahi tohutohu kopare kuputuhi rānei

Ka tango i `video_url` me tētahi `prompt` e whakaahua ana i te papamuri e hiahiatia ana. Homai `quad_mask_video_url`, tukuna rānei `mask_prompt` kia hangaia he kōpare. Ko ngā mana ko `num_frames` (1-197), `num_inference_steps` (1-50), `guidance_scale`, `strength` me te `enable_pass2_refinement` kōwhiringa, he pōturi ake mō te ōrite ā-wā.

- Model id: `void-video-inpainting`
- Made by: Open model
- Category: Video to Video
- Output: video
- Price per run: from $0.10 / run (cheapest run $0.10 (100 API credits))
- Run: `POST https://api.doitong.com/v1/run/void-video-inpainting`
- Quote: `POST https://api.doitong.com/v1/quote/void-video-inpainting`
- Docs page: https://doitong.com/mi/developers/models/void-video-inpainting

## Pricing

Price: **from $0.10 / run** (the lowest tier; the quote prices your exact input). Price per run: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $0.10 = 100 API credits (1 run × $0.10).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/void-video-inpainting` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. 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 ataata pūtake kei roto te ahanoa e whāia ana mō te tango. |
| `quad_mask_video_url` |  | string (video URL) | no | `` |  | URL ataata kanohi-tango; ki te ngaro, ka waihanga te taupānga i tētahi kanohi ataata rangitahi mā te pito ataata SAM-3 e whakamahi ana i `mask_prompt`, kātahi ka huri aunoatia ki te quadmask. Mō ngā hua pai, tukuna he quadmask āhua VOID mā ngā uara hina e 4: 255 mō te papamuri ka puritia, 127 mō te rohe pāngia, 63 mō te inaki, 0 mō te ahanoa ka tangohia. Ka whakaaetia hoki ngā kanohi ā-rua, 255 hei pupuri, 0 hei tango. |
| `mask_prompt` |  | string \| null | no |  |  | Tohutohu whāinga-kanohi mā SAM-3 hei waihanga kanohi ataata rangitahi ina kāore he `quad_mask_video_url`. Tautuhia he aha hei kanohi, hei tauira he ahanoa, he tangata rānei hei tango i te ataata pūtake. |
| `prompt` |  | string | yes |  |  | Whakamārama e tohu ana i te āhua o te papamuri ina tangohia te ahanoa. |
| `enable_pass2_refinement` |  | boolean | no | `false` |  | Whakapainga VOID kōwhiringa, ka pōturi ake te tukatuka mō te taurite wā pai ake pea i ngā topenga roa. Ka whakamahi i te whakapainga haruru warped hei Pass 2, whai muri i Pass 1. |
| `negative_prompt` |  | string | no | `The video is not of a high quality, it has a low resolution. Watermark present in each frame. The background is solid. Strange body and strange trajectory. Distortion.` |  | Tohutohu tōraro e whakaahua ana i ngā hua kāore e hiahiatia ana, hei ārahi atu i te whakaputanga. |
| `num_inference_steps` |  | integer | no | `30` | 1 – 50 | Tatau hipanga whakakore-haruru. Mā te whakanui ka pai ake te kounga, engari ka tāpiri roanga. |
| `guidance_scale` |  | number | no | `1` | 0 – 20 | Te kaha o te arataki kore-whakarōpū. |
| `strength` |  | number | no | `1` | 0 – 1 | Kaha whakakore-haruru; ko 1.0 te whakakore-haruru oti. |
| `seed` |  | integer \| null | no |  |  | Kākano hei whakahaere i te matapōkeretanga mō ngā putanga ka taea te tārua. |
| `num_frames` |  | integer | no | `85` | 1 – 197 | Matapihi whakatau wā e hiahiatia ana, ka whakatikahia e te backend ki tētahi rahi haumaru CogVideoX o 69, 77, 85, ..., 197. Ka kōwhiria te rahi tata hei urutau ki te kōpeketanga wā me te papaki. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Ka whakahohe i ngā tirohanga haumaru mō ngā mea kua whakaputaina. |

File parameters (`video`, `quad_mask_video_url`) 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",
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## 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/void-video-inpainting?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",
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# 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/void-video-inpainting?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
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",
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/void-video-inpainting", 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": "void-video-inpainting",
      "input": {
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "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": "void-video-inpainting",
  "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": 100,
    "usd": "0.10",
    "charged": 100,
    "refunded": 0
  },
  "input": {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "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
    },
    "seed": 42,
    "timings": {}
  },
  "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} | Ataata hua whai muri i te tangohanga o te ahanoa. |
| `seed` | integer | Te uara kākano i whakamahia i te whakaputanga. |
| `timings` | object | Ngā taipitopito wā mō ia wāhanga o te paipa. |

## Related models

- [AMT Interpolation](https://doitong.com/developers/models/amt-interpolation.md) (`amt-interpolation`): $0.000575 / second of processing time
- [AnimateDiff Turbo · Video to Video](https://doitong.com/developers/models/fast-animatediff/turbo/video-to-video.md) (`fast-animatediff/turbo/video-to-video`): $0.00125 / second of processing time
- [AnimateDiff · Video to Video](https://doitong.com/developers/models/fast-animatediff/video-to-video.md) (`fast-animatediff/video-to-video`): $0.00125 / second of processing time
- [Bernini-R Edit Video](https://doitong.com/developers/models/bernini-r/edit-video.md) (`bernini-r/edit-video`): from $0.04 / second of output video
- [Bernini-R Reference Edit Video](https://doitong.com/developers/models/bernini-r/reference-edit-video.md) (`bernini-r/reference-edit-video`): from $0.04 / second of output video
- [DWPose Pose Prediction · Video](https://doitong.com/developers/models/dwpose/video.md) (`dwpose/video`): $0.0006 / second of processing time
- [Editto](https://doitong.com/developers/models/editto.md) (`editto`): from $0.04 / second of output video
- [ID-V2V](https://doitong.com/developers/models/id-v2v.md) (`id-v2v`): $0.20 / second of output video

## Links

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