# Kling Video · v3 · 4k · Image to Video API

> v3 image-to-video με εγγενή έξοδο 4K, αρχικά και τελικά καρέ, στοιχεία και ήχο

Κινεί ένα `start_image_url`, προαιρετικά καταλήγοντας σε `end_image_url`, απευθείας σε βίντεο 4K. Χρησιμοποιήστε `prompt` ή λίστα λήψεων `multi_prompt`, με `duration` από 3 έως 15 δευτερόλεπτα. Το `generate_audio` είναι ενεργό από προεπιλογή, ενώ τα `negative_prompt` και `cfg_scale` (0 έως 1) ρυθμίζουν την πιστότητα. Τα `elements` μπορούν να αναφέρονται ως @Element1.

- Model id: `kling-video/v3/4k/image-to-video`
- Made by: Kling
- Category: Image to Video
- Output: video
- Price: $0.42 / second (5 s ≈ $2.10) (cheapest run $2.10 (2100 API credits))
- Run: `POST https://api.doitong.ru/v1/run/kling-video/v3/4k/image-to-video`
- Quote: `POST https://api.doitong.ru/v1/quote/kling-video/v3/4k/image-to-video`
- Docs page: https://doitong.com/el/developers/models/kling-video/v3/4k/image-to-video

## Pricing

Price: **$0.42 / second (5 s ≈ $2.10)**. Billed per second of output (`duration`, default 15).

The full example input below costs $2.10 = 2100 API credits (5 s × 420 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.ru/v1/quote/kling-video/v3/4k/image-to-video` 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 |
|---|---|---|---|---|---|---|
| `enable_safety_checker` |  | boolean | no | `true` |  | Οι έλεγχοι ασφαλείας μπορούν να απενεργοποιηθούν μόνο με εξουσιοδότηση λογαριασμού· τα αιτήματα χωρίς εξουσιοδότηση ελέγχονται πάντα. |
| `prompt` |  | string \| null | no |  | ≤ 2500 characters | Οδηγίες κειμένου για την παραγωγή του βίντεο. Παρέχετε ακριβώς ένα από τα prompt ή multi_prompt. |
| `multi_prompt` |  | array of object {prompt, duration} \| null | no |  |  | Λίστα prompt που χωρίζει το βίντεο σε πολλά πλάνα όταν παρέχεται. |
| `multi_prompt[].prompt` |  | string | yes |  |  | Οδηγίες κειμένου για το τρέχον πλάνο. |
| `multi_prompt[].duration` |  | enum (string) | no | `5` | `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` | Διάρκεια του τρέχοντος πλάνου, σε δευτερόλεπτα. |
| `start_image_url` | `image` | string (image URL) | yes |  |  | URL που παραπέμπει στην εικόνα που χρησιμοποιείται για παραγωγή βίντεο. Το μέγεθος αρχείου δεν πρέπει να υπερβαίνει τα 50 MB· το πλάτος και το ύψος πρέπει να είναι τουλάχιστον 300px το καθένα, με αναλογία διαστάσεων μεταξύ 0.40 και 2.50. |
| `duration` |  | enum (string) | no | `5` | `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` | Διάρκεια βίντεο εξόδου, σε δευτερόλεπτα. |
| `generate_audio` |  | boolean | no | `true` |  | Εναλλαγή παραγωγής φυσικού ήχου βίντεο, με υποστήριξη φωνών στα κινεζικά ή τα αγγλικά και αυτόματη μετάφραση κάθε άλλης γλώσσας στα αγγλικά. Για αγγλική ομιλία, γράψτε τα ακρωνύμια και τα κύρια ονόματα με κεφαλαία και όλα τα υπόλοιπα με πεζά. |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | URL που παραπέμπει στην εικόνα που χρησιμοποιείται στο τέλος του βίντεο. Το μέγεθος αρχείου δεν πρέπει να υπερβαίνει τα 50 MB· το πλάτος και το ύψος πρέπει να είναι τουλάχιστον 300px το καθένα, με αναλογία διαστάσεων μεταξύ 0.40 και 2.50. |
| `elements` |  | array of object {frontal_image_url, reference_image_urls, video_url, voice_id} \| null | no |  |  | Χαρακτήρες ή αντικείμενα που περιλαμβάνονται ως στοιχεία βίντεο και αναφέρονται στο prompt με @Element1, @Element2 κ.ο.κ. Για κάθε παράδειγμα, παρέχετε είτε βίντεο είτε ένα σύνολο που περιέχει μετωπική εικόνα και εικόνες αναφοράς. |
| `elements[].frontal_image_url` |  | string (image URL) \| null | no |  |  | Μετωπική εικόνα που δείχνει την κύρια όψη του στοιχείου. Το μέγεθος αρχείου δεν πρέπει να υπερβαίνει τα 50 MB· το πλάτος και το ύψος πρέπει να είναι τουλάχιστον 300px το καθένα, με αναλογία διαστάσεων μεταξύ 0.40 και 2.50. |
| `elements[].reference_image_urls` |  | array of image URL \| null | no |  |  | Παρέχετε 1–3 επιπλέον εικόνες αναφοράς που δείχνουν διαφορετικές γωνίες. Κάθε εικόνα πρέπει να έχει αναλογία διαστάσεων μεταξύ 0.40 και 2.50, τουλάχιστον 300px και στις δύο διαστάσεις και μέγεθος έως 50.0MB. |
| `elements[].video_url` |  | string (video URL) \| null | no |  |  | URL που παραπέμπει σε βίντεο στοιχείου· μόνο ένα στοιχείο ανά αίτημα μπορεί να περιλαμβάνει βίντεο. Το αρχείο πρέπει να είναι έως 200 MB, με πλάτος και ύψος μεταξύ 720px και 2160px. Η διάρκεια πρέπει να κυμαίνεται μεταξύ 3 δευτερολέπτων και 10.05 δευτερολέπτων και τα FPS μεταξύ 24.0 και 60.0. |
| `elements[].voice_id` |  | string \| null | no |  |  | Voice ID που εκχωρείται στο στοιχείο. Οι αναφορές σε αυτό το στοιχείο χρησιμοποιούν την εκχωρημένη φωνή του. |
| `shot_type` |  | enum (string) | no | `customize` | `customize`, `intelligent` | Επιλέξτε τον τρόπο με τον οποίο η παραγωγή πολλαπλών πλάνων σχεδιάζει τα πλάνα· η επιλογή 'intelligent' αναθέτει τη δομή των πλάνων στο μοντέλο. |
| `negative_prompt` |  | string | no | `blur, distort, and low quality` | ≤ 2500 characters |  |
| `cfg_scale` |  | number | no | `0.5` | 0 – 1 | Ορίστε πόσο πιστά ακολουθεί η παραγωγή το prompt σας με το CFG, συντομογραφία του Classifier Free Guidance. |

File parameters (`image`, `end_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
{
  "start_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.ru/v1/run/kling-video/v3/4k/image-to-video?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "start_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.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/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-video/v3/4k/image-to-video?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "start_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.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "start_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-video/v3/4k/image-to-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.ru/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-video/v3/4k/image-to-video",
      "input": {
        "start_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-video/v3/4k/image-to-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": 2100,
    "usd": "2.10",
    "charged": 2100,
    "refunded": 0
  },
  "input": {
    "start_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "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
    }
  },
  "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.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} | Βίντεο που παράγεται από το μοντέλο. |

## Related models

- [Kling 3.0 Pro Text to Video](https://doitong.com/developers/models/kling-video/v3/pro/text-to-video.md) (`kling-video/v3/pro/text-to-video`): from $0.112 / second
- [Kling Video V3 Text to Video 4K](https://doitong.com/developers/models/kling-video/v3/4k/text-to-video.md) (`kling-video/v3/4k/text-to-video`): $0.42 / second
- [Kling Video v3 Text to Video \[Standard\]](https://doitong.com/developers/models/kling-video/v3/standard/text-to-video.md) (`kling-video/v3/standard/text-to-video`): from $0.084 / second
- [Kling 3.0 Pro Image to Video](https://doitong.com/developers/models/kling-video/v3/pro/image-to-video.md) (`kling-video/v3/pro/image-to-video`): from $0.112 / second
- [Kling Video v3 Image to Video \[Standard\]](https://doitong.com/developers/models/kling-video/v3/standard/image-to-video.md) (`kling-video/v3/standard/image-to-video`): from $0.084 / second
- [FLUX 3 Max Image to Video](https://doitong.com/developers/models/blackforestlabs/flux-3-max/image-to-video.md) (`blackforestlabs/flux-3-max/image-to-video`): from $0.0425 / second of output video
- [Grok Imagine Video 1.5 Image to Video](https://doitong.com/developers/models/xai/grok-imagine-video/v1.5/image-to-video.md) (`xai/grok-imagine-video/v1.5/image-to-video`): from $0.082 / second
- [LTX 2.5 Pro Image to Video](https://doitong.com/developers/models/lightricks/ltx-2.5/image-to-video/pro.md) (`lightricks/ltx-2.5/image-to-video/pro`): from $0.12 / second

## Links

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