Seedream 5.0 Pro ya está aquí | Pruébalo en el Generador de Imágenes →

Flux Kontext Pro Multi

wavespeed-ai /

Experimental FLUX.1 Kontext [pro] with multi-image handling to combine context from multiple images for richer output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-image
Entrada

Inactivo

The boy is holding a gun in his hand.

$0.04por ejecución·~25 / $1

Siguiente:

EjemplosVer todo

The boy is holding a gun in his hand.

The boy is holding a gun in his hand.

A girl with a hat and sunglasses is in the garden.

A girl with a hat and sunglasses is in the garden.

The clown stands in front of the house.

The clown stands in front of the house.

Little girl holding flowers in her hands.

Little girl holding flowers in her hands.

The girl is wearing a hippocampus brooch.

The girl is wearing a hippocampus brooch.

The boy put on sunglasses.

The boy put on sunglasses.

The girl puts on sunglasses.

The girl puts on sunglasses.

The horse is carrying fruits.

The horse is carrying fruits.

The girl happily hugs the doll.

The girl happily hugs the doll.

Santa Claus is standing in front of the tree.

Santa Claus is standing in front of the tree.

A boy wears a chain around his neck.

A boy wears a chain around his neck.

Modelos relacionados

README

FLUX Kontext Pro Multi — wavespeed-ai/flux-kontext-pro/multi

FLUX Kontext Pro Multi is a fast, reliable multi-image model for context-guided generation and editing. Provide a text prompt plus up to 5 reference images, and the model uses them to improve identity consistency, style alignment, and scene coherence—ideal for practical production workflows that need strong control at a lower cost.

Key capabilities

  • Multi-image contextual generation with up to 5 reference images
  • Strong identity and style consistency by grounding outputs in references
  • Reliable composition control for everyday creative and marketing use
  • Efficient for iterative workflows and rapid A/B exploration

Typical use cases

  • Character consistency using multiple portraits, outfits, or angles
  • Product and branding consistency (packaging + logo + lighting references)
  • Style steering with multiple exemplars (art style + texture + mood)
  • Scene creation guided by reference frames
  • Marketing creatives that need predictable, repeatable visual direction

Pricing

$0.04 per image.

Total cost = num_images × $0.04 Example: num_images = 4 → $0.16

Inputs and outputs

Input:

  • prompt (required): Instruction describing what to generate and how to use the references
  • images (required): Up to 5 reference images (upload or public URLs)

Output:

  • One or more generated images (based on your num_images setting, if available in your interface)

Parameters

  • prompt (required): The instruction for generation or editing
  • images (required): Up to 5 reference images
  • seed: Fixed value for reproducibility; leave empty/random for variation
  • guidance_scale: Prompt adherence strength (higher = stricter; too high may over-constrain)
  • aspect_ratio: Output aspect ratio (e.g., 16:9, 1:1, 9:16)

Prompting guide (multi-reference)

Assign roles to references to reduce ambiguity:

Template: Use image 1 for identity. Use image 2 for outfit/material. Use image 3 for style. Use image 4 for lighting. Use image 5 for background/scene. Generate the shot described below. Keep the key traits unchanged.

Example prompts

  • Use image 1 for the person’s identity and image 2 for outfit details. Use image 3 for visual style. Create a 16:9 cinematic medium shot in a rainy city street at night. Match lighting and reflections. Keep face structure and expression consistent.
  • Use image 1 for the product shape and image 2 for label layout. Use image 3 for lighting mood. Generate a clean studio product shot with realistic shadows and crisp edges. Keep branding placement consistent.
  • Use images 1–2 as identity references from different angles. Create a neutral-background portrait with softbox lighting and natural skin texture. Keep proportions realistic and avoid exaggerated stylization.

Best practices

  • Use high-quality references (sharp, well-lit, minimal occlusion)
  • Avoid conflicting references unless you explicitly state which reference dominates (identity vs. style vs. scene)
  • Keep guidance_scale moderate and let references do most of the steering
  • Fix seed when you need stable iteration and consistent comparisons
  • Choose aspect_ratio intentionally to avoid awkward cropping or stretched composition
Nota:Este sitio web utiliza modelos de IA proporcionados por terceros.

Flux Kontext Pro Multi API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-kontext-pro/multi 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 Kontext Pro Multi 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"
    ],
    "guidance_scale": 3.5,
    "aspect_ratio": "21:9"
}
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-kontext-pro/multi" \
  -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-kontext-pro/multi";
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"
        ],
        "guidance_scale": 3.5,
        "aspect_ratio": "21:9"
}),
});
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"
    ],
    "guidance_scale": 3.5,
    "aspect_ratio": "21:9"
}

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-kontext-pro/multi", 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 Kontext Pro Multi API — Frequently asked questions

What is the Flux Kontext Pro Multi API?

Flux Kontext Pro Multi is a WaveSpeedAI model for image editing, exposed as a REST API on WaveSpeedAI. Experimental FLUX.1 Kontext [pro] with multi-image handling to combine context from multiple images for richer output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Flux Kontext Pro Multi 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-kontext-pro-multi.

How much does Flux Kontext Pro Multi cost per run?

Flux Kontext Pro Multi starts at $0.040 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 Kontext Pro Multi accept?

Key inputs: `prompt`, `images`, `aspect_ratio`, `seed`, `guidance_scale`, `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-kontext-pro-multi.

How long does Flux Kontext Pro Multi take to generate?

Median end-to-end generation time on WaveSpeedAI is around 16 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 Kontext Pro Multi 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 Kontext Pro Multi | Fast Image Editing API | WaveSpeedAI