Introduction
FLUX.1 Schnell LoRA Image editing redraws one source image on FLUX.1 [schnell], Black Forest Labs' fast, Apache-2.0 FLUX model, with up to three of your own LoRA files loaded. A strength control sets how far the result moves from the source, an optional mask limits the change to one area, and the output keeps the source's aspect ratio. The platform adds no content filter to the prompt, the weights or the image.
Choose a mode by starting material
| What you have | Mode |
|---|---|
| a written description | FLUX.1 Schnell LoRA Text to image |
| a picture to restyle or inpaint | FLUX.1 Schnell LoRA Image editing |
Key features & highlights
Real inpainting with a mask
Send a black-and-white mask and only the white area is redrawn. In our test a trench coat became a red satin robe while the face, hair and gym behind stayed exactly as they were.
Whole-frame edits with a strength dial
Without a mask the whole frame is redrawn. Strength 0.8 to 0.9 kept the framing and pose while changing the outfit and the setting.
LoRAs on edits
FLUX.1 [dev] LoRAs load on the edit too, up to three at once, each with a scale from 0 to 4.
No content filter
Source images can be redrawn with any prompt, inside a mask or across the whole frame. Nothing is filtered on the way in or out.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | With a mask, describe only what goes in the white area. Without one, describe the whole picture including who is in it. at least 1 characters · at most 5000 characters |
image_url | Yes | The picture to edit. The result keeps its aspect ratio; the resolution tier sets the long side. |
mask_url | No | Optional black-and-white mask the size of the source: white areas are redrawn, black areas are kept. Follow the object's outline; a hard rectangle across hair can leave a seam. |
resolution | No | 1k returns a long side of about 1,000 pixels and is the default; 1.5k about 1,500. Both cost the same, and the aspect ratio always follows the source. |
strength | No | How far to move from the source, 0 to 1; 0.8 by default. |
loras | No | Up to three {path, scale} entries trained for FLUX.1 [dev] or FLUX.1 [schnell]; scale 0 to 4, 1 by default. LoRAs apply inside a mask too and do not change the price. Default: |
output_format | No | JPEG by default, or PNG or WebP. The format does not change the price. |
seed | No | Keeps results comparable while you adjust strength or the mask. No seed means a random one. |
Pricing
$0.006 / image
Billed per image, at the same rate as text-to-image. A mask, the resolution tier, the output format and loading LoRAs do not change the price.
Use cases
Change one garment
Mask the clothing, describe the new piece and keep the person and the room untouched.
Restyle a shoot
Run a set of photos at strength 0.8 to 0.9 with the same prompt and LoRA for consistent new outfits or settings.
Fast variations
Keep the source and prompt, change the seed, and get alternate takes in seconds.
Prompt guide & pro tips
Shape the mask to the object
A hard rectangle that cut through hair left a visible seam in our test. A mask that follows the garment blended cleanly.
With a mask, describe only the masked area
"A red satin boxing robe slipping off one shoulder" is enough; the rest of the picture is kept from the source.
Without a mask, describe the person
Above strength 0.85 faces drift. Repeating who is in the picture kept them recognisable in our tests.
Pick the strength by the job
0.5 barely changes the photo, around 0.7 details change, 0.85 to 0.9 is a new outfit in the same framing, and 1 is a new picture. With a mask, use 0.9 to 1.
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-1-schnell-lora/edit",
"input": {
"image_url": "https://example.com/reference.png",
"output_format": "jpeg",
"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.



























