FLUX.2 [klein] 4B.

flux-2-klein-4b implements image.generate on Windpaint. The smallest FLUX.2 model, a 4-step distilled 4B text-to-image model. Open-source, Apache-2.0, from $0.005 per image.

1970s Kodachrome photograph of a family on a road trip standing by a station wagon at a desert overlook, warm faded colors
1970s Kodachrome photograph of a family on a road trip standing by a station wagon at a desert overlook, warm faded colorsFLUX.2 [klein] 4B · seed 42
Status
Live
Model id
flux-2-klein-4b
Capability
image.generate
Input
Prompt
Output
1 to 4 images
From
$0.005 per image
Developer
Black Forest Labs
Parameters
4B
Licence
Apache-2.0
Released
January 2026

Text to image, open source.

The catalog describes it as “FLUX.2 [klein] 4B. 4-step distilled text to image.” Up to 4 images per request (num_outputs), PNG, JPEG or WebP.

Text in, image out

Send a prompt and get back PNG, JPEG or WebP. On Windpaint it takes no input images; the prompt is the whole request.

image.generate

Up to four per job

Set num_outputs from 1 to 4 for variations of one prompt. You pay per image delivered, not per request.

num_outputs

Repeatable with a seed

The same prompt, resolution, aspect ratio and seed give the same image, so you can change one setting and compare.

seed

What it costs.

Prices are fixed per output at the tier you ask for, and locked when you submit. One credit costs $0.05.

$0.005
per image at 1k1024 px long edge · 0.1 credits

Price per output. 1 credit = $0.05. Aspect ratio and output format don't change the price.

A request with num_outputs set costs the per-image price times the images delivered. If the model delivers fewer than you asked for, the rest of the hold is released.

Failed, refused and canceled jobs aren't charged. Pricing covers credits, top-ups and storage.

Request fields.

Submit to POST /v1/generation/capabilities/image.generate. A prompt. No input media. Anything outside these values returns 422.

Fields flux-2-klein-4b accepts on image.generate.
FieldValuesDefaultNotes
prompt
string
none
Required. Sent to the model as written.
resolution
1k
1k
Sets the long edge: 1024 px.
aspect_ratio
any of the ten
1:1
Sets the short edge from the long edge.
num_outputs
1 to 4
1
Images in one job, billed per image delivered.
seed
integer
random
Same seed and same request give the same image.
output_format
png, jpeg, webp
png
Re-encoded on the server.
output_quality
1 to 100
90
jpeg and webp only.
preset
preset slug
none
Wraps your prompt in a Windpaint template.
webhook_url
https URL
none
Signed POST when the job finishes.

Pixels per tier.

The tier sets the long edge and the aspect ratio sets the other, rounded to a multiple of 16. Portrait ratios swap the edges.

Output width × height for each aspect ratio. Default 1:1.
Aspect ratio1k
1:11024 × 1024
4:31024 × 768
3:4768 × 1024
3:21024 × 688
2:3688 × 1024
16:91024 × 576
9:16576 × 1024
21:91024 × 432
4:5816 × 1024
5:41024 × 816

Call it.

Most images finish within a few seconds of being picked up, so you can send Prefer: wait and get the finished job back in the submit response instead of polling.

image.generatebash
curl -X POST https://api.windpaint.ai/v1/generation/capabilities/image.generate \  -H "Authorization: Bearer $WINDPAINT_API_KEY" \  -H "Content-Type: application/json" \  -H "Prefer: wait" \  -d '{    "model": "flux-2-klein-4b",    "prompt": "a ceramic teapot on a linen tablecloth, soft window light",    "resolution": "1k",    "aspect_ratio": "3:2",    "seed": 7  }'
By model: /v1/generation/models/flux-2-klein-4bbash
curl -X POST https://api.windpaint.ai/v1/generation/models/flux-2-klein-4b \  -H "Authorization: Bearer $WINDPAINT_API_KEY" \  -H "Content-Type: application/json" \  -d '{"prompt": "a ceramic teapot on a linen tablecloth", "num_outputs": 4}'
outputs[0]json
{  "id": "d77a4c1e-9b2f-4a3d-8e6f-7a8b9c0d1e2f",  "url": "https://api.windpaint.ai/v1/generation/assets/d77a4c1e-.../content",  "content_type": "image/png",  "width": 1024,  "height": 688,  "duration_s": null}

The submit returns 202 with a request_id and a status_url. Send an Idempotency-Key header so a retried submit returns the first job instead of billing a second. Each output is an asset in your project; its id can go straight into another job's inputs, for example as the start frame of a video.

FLUX.2 [klein] 4B prompt guide.

Windpaint sends your prompt to the model as written. There's no prompt rewriting and no negative prompt field. Plan to try a few seeds.

  1. Important things first

    BFL's FLUX.2 prompting guide says to put the most important elements early in the prompt.

  2. Say what you want

    There are no negative prompts. Describe the scene you want rather than what to leave out.

  3. Quote any text

    Put the words to render in quotes. The card notes rendered text may be inaccurate, so check the letters in the result.

  4. Mind the style of the prompt

    The card notes that prompt following depends heavily on how the prompt is written, so try a few phrasings.

Example prompts from the Windpaint prompting guide.
UsePromptSettings
Product shot
“A matte black ceramic coffee mug on a pale oak table, studio product photo, soft light from the left, plain light grey background, shallow depth of field”
1k, 1:1
Editorial photo
“A fisherman mending a green net on a wooden dock at dawn, low fog over the water, muted colors, 35mm film photo, natural light”
1k, 3:2
Illustration
“Flat vector illustration of a bicycle courier riding through a city at night, limited palette of navy, orange and cream, clean shapes, no outlines”
1k, 4:5

From Black Forest Labs's own prompt tooling and examples. Their prompt enhancer isn't applied on Windpaint, but you can follow the same advice when you write the prompt.

  • BFL's FLUX.2 prompting guide, which is written for [pro] and [max], says FLUX.2 does not support negative prompts. Describe what you want instead: "sharp focus throughout" rather than "no blur", "empty scene" rather than "no people". BFL docs
  • The same guide says word order matters and FLUX.2 pays more attention to what comes first. Its suggested order: main subject, key action, critical style, essential context, secondary details. BFL docs
  • The same guide says to put text to render in quotation marks and give its placement, style and size, and to tie hex colours to specific objects ("The car is #FF0000"). BFL docs
  • The card notes that prompt following is heavily influenced by prompting style. FLUX.2-klein-4B model card

Ready-made styles.

A preset wraps your prompt in a Windpaint template and fills settings you leave out. Add "preset": "product-shot", or pin a version with @1. The price is the same as without one. Each swatch is a real output of its preset, with the subject that was sent.

  • A matte mint-green ceramic pour-over coffee set

    Product shot on seamlessA matte mint-green ceramic pour-over coffee setproduct-shot 1:1 · seed 42

  • Two astronauts sharing a thermos on a dusty red ridge

    Cinematic stillTwo astronauts sharing a thermos on a dusty red ridgecinematic-still 16:9 · seed 11

  • A tiny rooftop greenhouse cafe

    Isometric illustrationA tiny rooftop greenhouse cafeisometric-illustration 1:1 · seed 11

  • A boy waiting at a rural bus stop in the rain beside a giant moss-covered stag spirit

    Anime key artA boy waiting at a rural bus stop in the rain beside a giant moss-covered stag spiritanime-key-art 2:3 · seed 202

  • A ceramicist in her studio with clay on her hands

    Editorial portraitA ceramicist in her studio with clay on her handseditorial-portrait 4:5 · seed 42

  • A city park on a sunny Sunday

    Flat vector illustrationA city park on a sunny Sundayflat-illustration 4:3 · seed 11

  • A bowl of spicy miso ramen with soft eggs

    Overhead food photoA bowl of spicy miso ramen with soft eggsfood-overhead 4:5 · seed 42

FLUX.2 [klein] 4B limitations.

Current limits on Windpaint, as the docs state them, then the ones the developer states for the model itself.

  • Text to image only. Reference images and editing aren't available yet; sending inputs, duration or quality returns 422.
  • No negative prompt field. Describe what you want in the frame instead.
  • One tier, 1k. Any other resolution returns 422.
  • The seed is not reported when you leave it out, so send one if you might want the image again.

From the developer:

  • Not intended or able to provide factual information. FLUX.2-klein-4B model card
  • It can output text, but rendered text may be inaccurate or distorted. FLUX.2-klein-4B model card
  • It may represent or amplify biases in its training data, may fail to match the prompt, and its prompt following depends heavily on prompting style. FLUX.2-klein-4B model card
  • BFL's FLUX.2 overview lists [klein] multi-reference editing as "Up to 4" images. BFL docs

Where it runs.

flux-2-klein-4b is an open-source model licensed Apache-2.0.

Windpaint runs it on our own GPUs. Your prompts and inputs aren't sent to a third-party model API to make these outputs, and Windpaint doesn't train on your prompts, inputs or outputs.

Outputs are stored as assets in your project for your organization's retention period, 7 days by default. See Trust for moderation, data use and retention.

Is FLUX.2 [klein] 4B licensed for commercial use?

Licence: Apache-2.0.

Yes. Apache-2.0 allows commercial use, including running the model behind a paid API, with no revenue or user caps. The 9B [klein] models and FLUX.2 [dev] are under BFL's non-commercial licence instead; only the 4B models are Apache-2.0.

  • Apache-2.0 covers [klein] 4B and [klein] 4B Base. [klein] 9B, 9B KV, 9B Base and FLUX.2 [dev] are under BFL's FLUX Non-Commercial License. flux2 repo
  • The card's out-of-scope list rules out: illegal use, exploiting or harming minors, deceptive, fraudulent or misleading content, harmful PII, harassment, non-consensual intimate imagery or illegal pornography, and fully automated decision-making or high-risk applications that adversely affect someone's legal rights. The card says nothing in it restricts or modifies the licence. FLUX.2-klein-4B model card
  • Filters or manual review are required only for the 9B models, under the non-commercial licence. For the 4B models BFL encourages deployers to add them, and the repo includes NSFW and protected-content filters. The reference inference code has an example of pixel-layer watermarking, and the repo links to the C2PA metadata standard. FLUX.2-klein-4B model card
  • The card's Policies section says acceptable use for commercial open-weight users is governed by BFL's Developer Terms of Service, Self-Hosted Commercial License Terms and Usage Policy. It doesn't explain how that sits alongside the Apache-2.0 grant for the 4B models. FLUX.2-klein-4B model card
  • Trademarks: using BFL or FLUX trademarks or logos in modified versions must not cause confusion or imply sponsorship or endorsement. FLUX.2-klein-4B model card

This is our reading of the licence, not legal advice. Read the licence text before you rely on it.

FLUX.2 [klein] 4B VRAM requirements.

Published by Black Forest Labs for running the weights yourself. These aren't Windpaint's figures: Windpaint runs flux-2-klein-4b on its own GPUs, so you don't need any of this to call it.

Published VRAM
About 13 GB
GPUs named
RTX 3090, RTX 4070 and above
Applies to
Model card figure. BFL's GitHub README says about 8 GB instead.
  • The card says the model fits in about 13GB of VRAM and is accessible on NVIDIA RTX 3090/4070 and above. FLUX.2-klein-4B model card
  • The official GitHub README says "Klein 4B fits in ~8GB VRAM (RTX 3090/4070 and up)", which conflicts with the card's ~13GB. BFL's FLUX.2 overview and launch post both say ~13GB. flux2 repo
  • BFL released FP8 and NVFP4 versions of all [klein] variants. On Hugging Face these are FLUX.2-klein-4b-fp8, FLUX.2-klein-4b-nvfp4, FLUX.2-klein-base-4b-fp8 and FLUX.2-klein-base-4b-nvfp4. The launch post says FP8 uses up to 40% less VRAM and NVFP4 up to 55% less, benchmarked on RTX 5080/5090 at 1024 × 1024. BFL blog
  • The card's diffusers example calls pipe.enable_model_cpu_offload() to save VRAM. FLUX.2-klein-4B model card

FLUX.2 [klein] 4B native resolution.

What the developer's own code and examples use. On Windpaint, the tiers and aspect ratios in output sizes apply instead.

Recommended settings for FLUX.2 [klein] 4B.

Steps, guidance and defaults from the developer's card and code. The Windpaint API doesn't take steps or guidance; these are for running the weights yourself.

  • num_inference_steps=4, guidance_scale=1.0, 1024 × 1024 (card example). FLUX.2-klein-4B model card
  • BFL's README says to use the distilled models (4 steps) for production apps and real-time generation, and the undistilled Base models (50 steps) for fine-tuning and LoRA training. flux2 repo

Questions.

How much does flux-2-klein-4b cost?

0.1 credits ($0.005) per image at 1k. Aspect ratio and output format don't change the price. A request with num_outputs set costs the per-image price times the images delivered. The 200 signup credits cover 2,000 images at 1k.

Is flux-2-klein-4b open source?

Yes. FLUX.2 [klein] 4B's weights are licensed Apache-2.0, an OSI-approved open-source licence. Windpaint runs it on its own GPUs; your prompts and inputs are not sent to a third-party model API, and Windpaint does not train on them.

Am I charged if a job fails?

No. The price is held when you submit and captured only if the job completes. A failed, refused (nsfw) or canceled job releases the hold in full.

Can I pass a reference image or edit an image?

No. On Windpaint flux-2-klein-4b is text-to-image only and takes no input assets; sending inputs returns 422. Image editing is defined in the API as image.edit but has no model yet.

Why does a different aspect ratio change the image with the same seed?

The model starts from noise the size of the output, so a different aspect ratio is a different starting point. Keep the ratio fixed while you work on the prompt.

Can I get an exact pixel size?

The tier sets the long edge and the aspect ratio sets the other, rounded to a multiple of 16, so some sizes are slightly off the exact ratio. Crop afterwards if you need an exact size. POST /v1/generation/estimate returns width and height before you pay.

How much VRAM does FLUX.2 [klein] 4B need?

The model card says it fits in about 13GB of VRAM, on an NVIDIA RTX 3090/4070 or above. That's for running the weights yourself. On Windpaint the model runs on Windpaint's GPUs.

Can I use FLUX.2 [klein] 4B commercially?

Yes. [klein] 4B and 4B Base are Apache-2.0. The 9B [klein] models are under BFL's non-commercial licence.

What's the difference between FLUX.2 [klein] 4B and 9B?

4B is Apache-2.0, while 9B is under BFL's non-commercial licence. BFL's README recommends 4B for consumer GPUs such as the RTX 3090/4070. Both are step-distilled, and BFL runs its distilled models at 4 steps.

What is FLUX.2 [klein] 4B Base?

The undistilled version of [klein] 4B. It runs 50 steps and is meant for fine-tuning and LoRA training. It's also Apache-2.0.

Is there an official FP8 version of FLUX.2 [klein] 4B?

Yes. BFL released FP8 and NVFP4 versions of all [klein] variants, including FLUX.2-klein-4b-fp8 and FLUX.2-klein-4b-nvfp4 on Hugging Face.

Is there a prompt guide for FLUX.2 [klein]?

BFL's FLUX.2 prompting guide is written for [pro] and [max], but it states rules for FLUX.2 in general. There are no negative prompts, so describe what you want, put the important elements first, and quote any text to render.

Start yours.

Request early access. We’ll email you when your account is approved, with 200 free credits to spend in the first 30 days.