FLUX 3 Image bounding box API: boxes live inside the prompt
There is no separate bounding-box parameter. POST https://api.bfl.ai/v1/flux-3-image with your key in the x-key header, and put a caption plus a JSON element table in prompt. Each box is [top, left, bottom, right] on a 0 to 1000 grid. Only prompt is required.
What this call is
FLUX 3 Image is the image part of Black Forest Labs' FLUX 3 family. The model page shows composition from boxes, edits that leave other regions alone, up to ten reference images, and native 2K and 4K output. The API contract is on FLUX 3 Image overview and the generate-an-image reference. This site is an independent layout guide. It is not Black Forest Labs.
Reseller APIs sometimes expose a field such as settings.boundingBoxes. That is their wrapper. On api.bfl.ai the published schema is Flux3ImageInputs with additionalProperties: false. Allowed fields are prompt, images, aspect_ratio, resolution, safety_tolerance, grounding, and version. A stray box field is a validation error, not a layout.
Draw the layout in the Playground first
The model page tells you to draw boxes by hand in the BFL Playground or to send the same layout to the API. The on-page walkthrough is four steps. Checked against that page on 3 October 2026.
- Pick an aspect ratio. Whatever the shape, both axes are a 0 to 1000 grid.
- Drag a box for every element that matters, and describe what goes in it.
- Write one scene line that ties the elements together. The page's example cites each id, and the element table is a JSON array of
id,bbox, anddesc. - Generate. FLUX 3 Image is supposed to render each element inside its box.
The same page says you can skip boxes and send a plain prompt. Boxes are for compositions with strict relationships: type around a photo, panel grids, editorial spreads, crowded scenes. An agent can also draft the table from one line plus an aspect ratio. The page says a prompt upsampler may add suggested elements, but every box you drew is sent on with the same id and the same coordinates.
How to send a new layout
The bounding-box guide builds the prompt in three parts. Write one paragraph and mark each element with an angle-bracket id such as <title_1>. Add one JSON row per id. Join them with a single space: caption, space, JSON array. Send that string as prompt, and send the aspect ratio you designed the boxes for. The 0–1000 grid stretches with the frame, so a 16:9 box map is wrong on a 9:16 canvas.
A generation row has three fields: id, bbox, and desc. [0, 0, 500, 500] is the top-left quarter. Text gets its own row, with the exact words quoted in desc. The guide says boxes set placement and scale, not a clipping mask, and an element can extend slightly past its box.
curl -sS -X POST https://api.bfl.ai/v1/flux-3-image \
-H "x-key: $BFL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A square poster: cream serif title <title_1> across the top, a single red ceramic cup <cup_1> centered on a pale table. [{\"id\":\"title_1\",\"bbox\":[40,120,180,880],\"desc\":\"The words Morning List in a cream serif, one line.\"},{\"id\":\"cup_1\",\"bbox\":[280,300,820,700],\"desc\":\"A small red ceramic cup, handle on the right, soft shadow.\"}]",
"aspect_ratio": "1:1",
"resolution": "1k",
"grounding": false
}'
That body is a shortened illustration of the documented shape, not a copied launch prompt. resolution defaults to 1k. grounding defaults to true, which may run web and image search before generation. Set it false when you want the prompt alone. safety_tolerance is an integer from 0 (strictest) to 4, default 2. version defaults to latest.
The response is asynchronous. It returns id, polling_url, and cost in credits. Poll polling_url with the same x-key header until status is Ready, then download result.sample. The overview says to download that file within one hour. Status values listed on the get-result reference include Pending, Reasoning, Generating, Ready, Error, Request Moderated, Content Moderated, and Task not found. You can also GET /v1/get_result?id= with the task id.
Edit, move, or remove one element
Send the source image in images (one to ten items, each an http or https URL or base64, from 256 by 256 pixels up to 16 megapixels). The first image is ref_image_0. Edit rows replace bbox with from, src_bbox, and tgt_bbox. The guide's table:
| Intent | from | src_bbox | tgt_bbox |
|---|---|---|---|
| Keep | ref_image_0 | its box | the same box |
| Move or resize | ref_image_0 | its box | the new box |
| Add, replace, or recolor | null | null | the output box |
| Remove | ref_image_0 | its box | null |
State the change in the instruction as well as in the rows. Anchor anything that must not move with a keep row. With aspect_ratio set to auto (the default), a ratio named in the prompt wins; otherwise the output keeps the first reference framing. Several new rows in one request can change several elements at once. Multi-reference prompts cite images by position, up to ten, which the model page also shows in the Playground as tokens starting at ref_image_0.
To turn pixel rectangles into the grid, the guide uses round(top / height * 1000) and the same for left, bottom, and right. Design the numbers for the aspect ratio you will send.
Pricing and limits
Prices below are from the Black Forest Labs pricing page, fetched 3 October 2026. One credit equals $0.01. The page says Playground and API use the same price, and that the submit response includes cost. 1.5k is a legal resolution value and appears in the calculator on bfl.ai/pricing, but that docs table has no 1.5k row.
| resolution | Output size on the docs page | List price per image |
|---|---|---|
| 768sq | 768 by 768 | $0.041 |
| 1k | about 1 megapixel | $0.048 |
| 2k | about 4 megapixels | $0.100 |
| 4k | about 16 megapixels | $0.607 |
The marketing calculator's extracted text the same day showed both $0.048 and $0.024 on one rate line, without naming the selected resolution. Reseller pages (not Black Forest Labs) describe a 50 percent launch rate through 8 October 2026. The docs pricing page fetched here does not state that discount or an end date. Read cost on a real response before you budget. Commercial weights for self-hosting are a separate license on the model page. This guide does not apply for API keys.
Known limitations
- Boxes guide placement. They are not clipping masks, and an element can spill slightly past its box.
- In Black Forest Labs' own tests, a new element in a box of about 40 by 25 pixels often did not appear. Give new elements room.
- The guide says pixels outside edited boxes usually stay identical. That is not a promise that every untouched pixel is bit-locked, and news write-ups that say otherwise go past the guide.
- Unlisted areas usually hold, but the guide tells you to add a keep row for anything that must stay put. The instruction and the table should agree.
- The sample URL should be downloaded within one hour.
- Moderation can return Request Moderated or Content Moderated.
safety_tolerancedoes not turn that off. - Reference images outside 256 by 256 to 16 megapixels, or more than ten of them, are outside the documented input range.
- You need a Black Forest Labs API key. Nothing on this site generates images.
Related reading: FLUX 3 boxes compared with FLUX.2 prompt edits, the layout prompting guide, and image editing with boxes.
FAQ
Is there a separate bounding-box field on the FLUX 3 Image API?
No. Black Forest Labs puts the JSON array at the end of prompt. The published schema rejects extra properties, so a boundingBoxes field is not part of POST /v1/flux-3-image.
What order are FLUX 3 Image box coordinates?
Each box is [top, left, bottom, right], integers from 0 to 1000, measured from the top-left. [0, 0, 500, 500] is the top-left quarter at any aspect ratio.
How do I edit one region and leave the rest alone?
Send the source in images and use edit rows. A keep row repeats src_bbox and tgt_bbox. A new row sets from and src_bbox to null and describes the replacement. A remove row sets tgt_bbox to null. The guide says pixels outside edited boxes usually stay the same, and boxes are not hard masks.
Can I try FLUX 3 Image without writing code?
Yes. The model page says to draw boxes in the Playground at playground.bfl.ai, or send a layout prompt to the API. Playground and API are billed the same way. This guide does not hand out an API key.
How much does one FLUX 3 Image cost?
On the docs pricing page checked 3 Oct 2026, list prices are $0.041 at 768sq, $0.048 at 1k, $0.100 at 2k, and $0.607 at 4k. One credit is $0.01. The submit response includes cost in credits. A 50 percent launch discount is not stated on that page.
How many reference images can one request include?
From 1 to 10. Each is an http(s) URL or base64, between 256 by 256 pixels and 16 megapixels. The first image is ref_image_0. aspect_ratio auto follows that first image when the prompt does not ask for a ratio.