Kling V3 Edit is an AI model for editing and transforming images via text prompts, enabling precise modifications with natural-language instructions. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Idle

$0.028per run·~35 / $1

A young man with swept-back golden hair and angular jawline striding through a moody metropolitan street, wearing an intricately patterned gray suede jacket over a tonal gray top and dark trousers, painted in a contemporary hyperrealistic oil painting style with visible brushstrokes on the clothing texture and background architecture while maintaining photographic precision on the face and hair, the embossed floral pattern on the jacket rendered with thick impasto technique adding three-dimensional texture, background dissolving into impressionistic smears of urban gray and muted green suggesting storefronts and vehicles, warm undertone in the skin against the cool gray palette of the wardrobe, dramatic gallery-worthy portrait composition, inspired by the figurative realism of Jeremy Mann and Casey Baugh, museum-quality fine art

A powerful sumo-built samurai warrior running through a bamboo forest carrying a war drum under his right arm, rendered in authentic Edo-period ukiyo-e woodblock print style with bold black outlines and flat color fills, wearing an indigo blue yoroi armor with silver lacing and a kabuto helmet with golden crescent moon crest, his face showing fierce determination with an exaggerated kabuki theater expression, the background composed of stylized bamboo stalks in graduated green ink washes with decorative cloud patterns in gold leaf, cherry blossom petals scattered throughout the composition, traditional Japanese calligraphy text block in the upper right corner, washi paper texture visible throughout, Hokusai and Kuniyoshi inspired, authentic Edo period color palette of indigo prussian blue vermillion and saffron yellow, horizontal scroll composition
Kling Image V3 Edit is Kuaishou's image editing model that transforms existing images based on text instructions. Upload a reference image and describe the changes you want — the model applies edits while preserving the original style, structure, and identity. Supports flexible aspect ratios, resolution options, and batch generation.
Text-guided editing Describe changes in natural language — no manual masking or layer editing required.
Style preservation Maintains the original image's composition, lighting, and aesthetic while applying your edits.
Flexible aspect ratios Multiple options including 1:1, 3:4, 4:3, 9:16, 16:9 and more to fit any use case.
Resolution control Choose output resolution (1k and above) based on your quality and speed requirements.
Batch generation Generate multiple variations in a single request for rapid iteration and comparison.
Prompt Enhancer Built-in tool to automatically improve your edit descriptions for better results.
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the desired edit |
| image | Yes | Reference image to edit (URL or upload) |
| aspect_ratio | No | Output aspect ratio (default: 3:4) |
| resolution | No | Output resolution (default: 1k) |
| num_images | No | Number of images to generate (default: 1) |
| output_format | No | Output format: png or jpeg (default: png) |
| Images | Cost |
|---|---|
| 1 | $0.028 |
| 2 | $0.056 |
| 4 | $0.112 |
| 10 | $0.280 |
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/kwaivgi/kling-image-v3/edit with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Kling Image v3 Edit below.
set -euo pipefail
: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"aspect_ratio": "16:9",
"resolution": "1k",
"num_images": 1,
"output_format": "png",
"shot_type": "customize"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/kwaivgi/kling-image-v3/edit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d "$REQUEST_BODY")
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/kwaivgi/kling-image-v3/edit";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"aspect_ratio": "16:9",
"resolution": "1k",
"num_images": 1,
"output_format": "png",
"shot_type": "customize"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
`https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"aspect_ratio": "16:9",
"resolution": "1k",
"num_images": 1,
"output_format": "png",
"shot_type": "customize"
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/kwaivgi/kling-image-v3/edit", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout"}:
raise RuntimeError(result)
if status not in {"created", "processing"}:
raise RuntimeError(f"Unexpected status: {status}")
time.sleep(2)Kling Image v3 Edit is a Kuaishou model for image editing, exposed as a REST API on WaveSpeedAI. Kling V3 Edit is an AI model for editing and transforming images via text prompts, enabling precise modifications with natural-language instructions. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.
POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/kwaivgi/kwaivgi-kling-image-v3-edit.
Kling Image v3 Edit starts at $0.028 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.
Key inputs: `prompt`, `image`, `aspect_ratio`, `resolution`, `num_images`, `output_format`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/kwaivgi/kwaivgi-kling-image-v3-edit.
Median end-to-end generation time on WaveSpeedAI is around 38 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.
Commercial usage rights depend on the model's license, set by its provider (Kuaishou). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.