Seedance 2.5 đã ra mắt | Dùng thử trong trình tạo video →

wavespeed-ai/

FLUX.2 [klein] Base 9B Edit is a high-quality image editing model with 9B parameters, offering precise modifications using natural language instructions. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.

image-to-image
Đầu vào

Chờ

Change the forest into a misty mystery scene at dawn. Preserve the same man, face, pose, outfit, camera angle, and composition. Add dense fog, darker trees, soft beams of light, and a red scarf tied to a tree branch in the background as a subtle story clue. Keep the mood suspenseful but realistic.

$0.021cho mỗi lần chạy·~47 / $1

Tiếp theo:

Ví dụXem tất cả

Change the forest into a misty mystery scene at dawn. Preserve the same man, face, pose, outfit, camera angle, and composition. Add dense fog, darker trees, soft beams of light, and a red scarf tied to a tree branch in the background as a subtle story clue. Keep the mood suspenseful but realistic.

Change the forest into a misty mystery scene at dawn. Preserve the same man, face, pose, outfit, camera angle, and composition. Add dense fog, darker trees, soft beams of light, and a red scarf tied to a tree branch in the background as a subtle story clue. Keep the mood suspenseful but realistic.

Transform the scene into a rainy night city street. Preserve the same woman, face identity, pose, coat, camera angle, and composition. Add wet pavement reflections, soft neon bokeh lights, gentle rain, and subtle mist. Keep the lighting realistic and cinematic, no change to the subject's face or body.

Transform the scene into a rainy night city street. Preserve the same woman, face identity, pose, coat, camera angle, and composition. Add wet pavement reflections, soft neon bokeh lights, gentle rain, and subtle mist. Keep the lighting realistic and cinematic, no change to the subject's face or body.

Mô hình liên quan

README

WaveSpeed AI FLUX.2 Klein Base 9B Edit

WaveSpeed AI FLUX.2 Klein Base 9B Edit is a high-quality image editing model built for prompt-driven transformations, compositing, and style changes. Upload one or more source images, describe the edit in natural language, and generate polished results with stronger detail and better prompt understanding than the 4B variant.

Why Choose This?

  • Higher-quality editing The 9B parameter model delivers richer detail, stronger prompt adherence, and better overall edit quality than the 4B variant.

  • Natural-language editing Describe the change you want in plain language — transform style, replace elements, change mood, or combine multiple images.

  • Multi-image support Upload multiple reference images and perform compositing or cross-image edits such as “Put the person in image1 into image2.”

  • Flexible output sizing Optionally set output dimensions, or leave size empty to preserve the original input dimensions.

  • Prompt Enhancer Built-in prompt enhancement can help improve edit quality and clarity.

  • Production-ready workflow Suitable for high-quality creative editing, marketing visuals, and more complex multi-image transformations.

Parameters

ParameterRequiredDescription
promptYesText description of the desired edit.
imagesYesSource images to edit. Multiple images are supported.
sizeNoOutput dimensions. Leave empty to match the input image dimensions.
seedNoRandom seed for reproducibility. Use -1 for random generation.

How to Use

  1. Write your prompt — describe the edit you want, such as “Put the person in image1 into image2” or “Change this to watercolor style.”
  2. Upload your images — add one or more source images using the image input.
  3. Set size (optional) — specify output dimensions, or leave it empty to preserve the original dimensions.
  4. Set seed (optional) — use -1 for random generation, or enter a fixed seed for reproducible results.
  5. Submit — run the model and download the edited image.

Example Prompt

Put the person in image1 into image2, keep realistic lighting and proportions, and match the scene naturally.

Pricing

ItemCost
Per image$0.021

Billing Rules

  • Pricing is fixed at $0.021 per generated image
  • size and seed do not affect pricing
  • Flat-rate pricing applies regardless of image dimensions

Best Use Cases

  • Image compositing — Combine subjects or objects from multiple images into one result.
  • Style transfer — Transform images into different artistic or visual styles with strong fidelity.
  • Professional editing — Use the 9B model when the 4B variant is not sufficient for production-quality work.
  • Content transformation — Change lighting, mood, environment, or visual theme with more precision.
  • Complex multi-image edits — Handle edits that require stronger scene understanding and better subject consistency.

Pro Tips

  • Be specific about what should change and what should stay the same.
  • Reference input images clearly in the prompt, such as image1, image2, and so on.
  • Leave size empty when you want to preserve the original image dimensions.
  • Use the same seed when comparing different prompt variations on the same images.
  • For complex edits, describe both the main transformation and any constraints like lighting, realism, or identity preservation.

Notes

  • Both prompt and images are required.
  • If size is not specified, the output matches the input image dimensions.
  • The 9B model offers better detail and stronger prompt understanding than the 4B variant.
  • Need LoRA support? Try FLUX.2 Klein Base 9B Edit LoRA.

Related Models

Lưu ý:Trang web này sử dụng các mô hình AI do bên thứ ba cung cấp. Giá trong tài liệu chỉ để tham khảo và có thể đã lỗi thời. Nút Generate hiển thị giá ước tính; phí cuối cùng của tác vụ sẽ được áp dụng.

Flux 2 Klein Base 9b Edit API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-klein-base-9b/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 Flux 2 Klein Base 9b Edit below.

HTTP example
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",
    "images": [
        "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
    ],
    "seed": -1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-klein-base-9b/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
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-klein-base-9b/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",
        "images": [
                "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
        ],
        "seed": -1
}),
});
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));
}
Python example
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",
    "images": [
        "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
    ],
    "seed": -1
}

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/wavespeed-ai/flux-2-klein-base-9b/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)

Flux 2 Klein Base 9b Edit API — Frequently asked questions

What is the Flux 2 Klein Base 9b Edit API?

Flux 2 Klein Base 9b Edit is a WaveSpeedAI model for image editing, exposed as a REST API on WaveSpeedAI. FLUX.2 [klein] Base 9B Edit is a high-quality image editing model with 9B parameters, offering precise modifications using natural language instructions. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Flux 2 Klein Base 9b Edit API?

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/wavespeed-ai/flux-2-klein-base-9b-edit.

How much does Flux 2 Klein Base 9b Edit cost per run?

Flux 2 Klein Base 9b Edit starts at $0.021 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.

What inputs does Flux 2 Klein Base 9b Edit accept?

Key inputs: `prompt`, `images`, `seed`, `enable_base64_output`, `enable_sync_mode`. 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/wavespeed-ai/flux-2-klein-base-9b-edit.

How long does Flux 2 Klein Base 9b Edit take to generate?

Median end-to-end generation time on WaveSpeedAI is around 73 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Flux 2 Klein Base 9b Edit outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Flux 2 Klein Base 9B Edit | Fast Image Editing API on WaveSpeedAI