# Kling Image · v3 · Image to Image API

> v3 image-to-image איבערסטיליזירונג פֿון איין רעפֿערענץ־בילד, אין 1K אָדער 2K, ביז 9 רעזולטאַטן

עדיטירט אָדער שאַפֿט ווידער איין רעפֿערענץ־בילד (`image_url`) לויט אַ טעקסט־פּראָמפּט. דאָס בילד דאַרף האָבן כאָטש 300px אויף יעדן זייַט און אַן אַספּעקט־פֿאַרהעלטעניש צווישן 0.40 און 2.50, מיט אַ 10MB לימיט. `resolution` איז 1K אָדער 2K, `num_images` איז 1-9, און `elements` גיט פּנים־קאָנטראָל. רעזולטאַט־פֿאָרמאַטן זענען jpeg, png אָדער webp.

- Model id: `kling-image/v3/image-to-image`
- Made by: Kling
- Category: Image Editing
- Output: image
- Price: $0.028 / image (cheapest run $0.028 (28 API credits))
- Run: `POST https://api.doitong.com/v1/run/kling-image/v3/image-to-image`
- Quote: `POST https://api.doitong.com/v1/quote/kling-image/v3/image-to-image`
- Docs page: https://doitong.com/yi/developers/models/kling-image/v3/image-to-image

## Pricing

Price: **$0.028 / image**. Billed per generated image (`num_images`, default 1).

The full example input below costs $0.028 = 28 API credits (1 image × 28 API credits).

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/kling-image/v3/image-to-image` 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 |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  | ≤ 2500 characters | פּראָמפּט פֿאַר בילד־גענערירונג מיט אַ באַגרענעצונג פֿון 2500 אותיות. |
| `image_url` | `image` | string (image URL) | yes |  |  | רעפֿערענץ־בילד גענוצט ווי אַרײַנגעבונג פֿאַר בילד־צו־בילד־גענערירונג, מיט אַ פֿײַלגרייס־גרענעץ פֿון 10.0MB. ביידע דימענסיעס מוזן זײַן לכל־הפּחות 300px, און דער אַספּעקט־פֿאַרהעלטעניש מוז זײַן צווישן 0.40 און 2.50. דער טיימאַוט איז 20.0s. |
| `elements` |  | array of object {frontal_image_url, reference_image_urls} \| null | no |  |  | אָפּציאָנאַלע פּנים־קאָנטראָל דורך צוגעשטעלטע עלעמענטן וואָס ספּעציפיצירן וועלכע כאַראַקטערן אָדער אָביעקטן זאָלן דערשײַנען אינעם בילד. |
| `elements[].frontal_image_url` |  | string (image URL) \| null | no |  |  | אָפּציאָנעלער פֿאָרנט־בילד וואָס גיט דעם הויפּט־אויסזען פון עלעמענט. פֿײַל־גרייס טאָר נישט איבערגיין 10.0 MB; ברייט און הייך מוזן יעדער זײַן ווייניקסטנס 300px, מיט אַ אַספּעקט־ראַטע פֿון 0.40 ביז 2.50. |
| `elements[].reference_image_urls` |  | array of image URL \| null | no |  |  | אָפּציאָנעלע זאַמלונג פון 0–3 נאָך בילדער וואָס ווײַזן אַנדערע ווינקלען. יעדער פֿײַל טאָר נישט זײַן גרעסער ווי 10.0 MB, מיט ברייט און הייך יעדער ווייניקסטנס 300px און אַ אַספּעקט־ראַטע פֿון 0.40 ביז 2.50. |
| `resolution` |  | enum (string) | no | `1K` | `1K`, `2K` | רעזולטאַט־בילד־רעזאָלוציע: 1K פֿאַר סטאַנדאַרט־רעזאָלוציע אָדער 2K פֿאַר הויכע רעזאָלוציע. |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 9 | צאָל רעזולטאַט־בילדער, פֿון 1 ביז 9. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `3:2`, `2:3`, `21:9` | ברייט־צו־הייך־פֿאַרהעלטעניש פֿאַר גענערירטע בילדער. |
| `output_format` |  | enum (string) | no | `png` | `jpeg`, `png`, `webp` | פֿײַל־פֿאָרמאַט פון דעם רעזולטירנדיקן בילד. |
| `enable_safety_checker` |  | boolean | no | `true` |  | סקרינינג קען ווערן פאַרלייכטערט דורך שטעלן false, אויב דער רופער איז אָטעריזירט. |

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
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "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/kling-image/v3/image-to-image?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "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/kling-image/v3/image-to-image?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "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 = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "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/kling-image/v3/image-to-image", 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": "kling-image/v3/image-to-image",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "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": "kling-image/v3/image-to-image",
  "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": 28,
    "usd": "0.028",
    "charged": 28,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "output": {
    "images": [
      {
        "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
      }
    ]
  },
  "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 |
|---|---|---|
| `images` | array of object {url, content_type, file_name, file_size, width, height} | בילדער געשאַפֿן פֿונעם מאָדעל. |

## Related models

- [Kling Image · v3 · Text to Image](https://doitong.com/developers/models/kling-image/v3/text-to-image.md) (`kling-image/v3/text-to-image`): $0.028 / image
- [FLUX.1 Kontext \[pro\]](https://doitong.com/developers/models/flux-pro/kontext.md) (`flux-pro/kontext`): $0.04 / image
- [GPT Image 2.5 Edit](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/edit.md) (`openai/gpt-image-2.5/flare/edit`): from $0.12 / image
- [Nano Banana 2 Edit](https://doitong.com/developers/models/nano-banana-2/edit.md) (`nano-banana-2/edit`): from $0.06 / image
- [Nano Banana Pro Edit](https://doitong.com/developers/models/nano-banana-pro/edit.md) (`nano-banana-pro/edit`): from $0.15 / image
- [Qwen Image 3 Edit](https://doitong.com/developers/models/alibaba/qwen-image-3/edit.md) (`alibaba/qwen-image-3/edit`): from $0.04 / image
- [Seedream 5.0 Pro Edit](https://doitong.com/developers/models/bytedance/seedream/v5/pro/edit.md) (`bytedance/seedream/v5/pro/edit`): from $0.0675 / run of output image
- [Kling Image · O3 · Image to Image](https://doitong.com/developers/models/kling-image/o3/image-to-image.md) (`kling-image/o3/image-to-image`): from $0.028 / image

## Links

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