Introduction
FLUX.2 Klein 4B LoRA Image edit changes or combines up to three source images with a written instruction on Black Forest Labs' FLUX.2 [klein] 4B, with up to three of your own LoRA files loaded. Keep the shape of your first image with auto, or choose one of nine ratios and a 1k or 2k size tier. One flat price per image, and nothing is filtered.
Choose a mode by starting material
| What you have | Mode |
|---|---|
| one to three pictures to change or combine | FLUX.2 Klein 4B LoRA Image edit |
| a written description only | FLUX.2 Klein 4B LoRA Text to image |
Key features & highlights
Edits that follow the instruction
Change light, clothes or setting and keep faces and pose. In our tests the distilled build followed our edit instructions closely, including requests at the Strong level.
Restyle with a LoRA
Load a style LoRA and ask for a redraw: a diner photo came back as a colored-pencil drawing with the woman and her dress kept.
Up to three sources
Combine a portrait with an outfit or a location. Name the sources as image 1, image 2 and image 3; faces can drift a little when you combine them.
Uncensored edits
Sources, prompts, weights and results are never filtered. Strong-level edits rendered without any LoRA; the Very strong level came back toned down.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Say what should change and what must stay the same, up to 5,000 characters. With several sources, refer to them as image 1, image 2 and image 3. at least 1 characters · at most 5000 characters |
image_urls | Yes | One to three source images, up to 10 MB each, in the order your prompt refers to them. Required. at least 1 items · at most 3 items |
aspect_ratio | No | Auto (default) keeps the shape of the first source at about one megapixel. Pick one of nine ratios from 21:9 to 9:21 to reframe the result. |
resolution | No | 1k (default) or 2k, which is 2048 pixels on the long side. It only applies when you choose a ratio; with auto the size is about one megapixel. |
loras | No | Up to three {path, scale} entries trained for FLUX.2 [klein] 4B or Base 4B. The path must download the .safetensors file itself; scale runs from 0 to 4 (default 1). Default: |
seed | No | A number from 0 to 2147483647. Reuse it to compare edits while you change one detail of the prompt; it does not promise identical pixels. |
Pricing
$0.02 / image
Billed per image at one flat price, whatever the number of source images, the aspect ratio or the size tier. Loading LoRAs adds no separate charge.
Use cases
Outfit and setting swaps
Put a person from one photo into a dress from another and a new place, in one request. Name the portrait as image 1 and the outfit as image 2, and say where the scene happens.
Photo to illustration
A style LoRA plus a short redraw instruction turns a set of photos into matching drawings, so a shoot becomes a consistent illustrated series with the same faces and clothes.
Reframing and relighting
Pick a wider ratio than the source and describe what should fill the new space, or keep auto and move a daytime photo to blue hour with one sentence about the light.
Prompt guide & pro tips
Protect first, change second
Open with what must stay (face, hair, pose), then describe the change. Short, concrete instructions work best.
Use auto to keep the shape
Auto keeps the first source's shape at about one megapixel. Choose a ratio only when you want the frame recomposed.
Compare against no LoRA
Run the same prompt and seed without the LoRA. If the two results look the same, the file was made for another base model, such as FLUX.1 or the 9B Klein models: those load without an error and do nothing here.
Use direct, public links
The link must download the .safetensors file itself. A Hugging Face file link or a Civitai download link works; a repository page or a gated file that needs a login fails the request, which is then not charged.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "black-forest-labs/flux-2-klein-4b-lora/edit",
"input": {
"aspect_ratio": "auto",
"image_urls": [
"https://example.com/reference.png"
],
"prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
"resolution": "1k"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.





























