# Flux 3 Image Klein (`flux_3_image_klein`)

> Black Forest Labs FLUX 3 Image Klein. Compact open-weights FLUX 3 Image (5.6B): native 4K, bounding-box layout, edits with up to 10 references.

- Capability: Images (tool `image`) — Text to image, Image to image
- Price: from $0.01 per run (1 credit = $0.01). Exact price for a request: POST https://api.varg.ai/v2/estimate
- Typical time: ~5 s
- JSON Schema: https://api.varg.ai/v2/tools/image?model=flux_3_image_klein (public, no key)
- Try it: https://varg.ai/dashboard/tools/playground?model=flux_3_image_klein

## Call it

REST: `POST https://api.varg.ai/v2/tools/image/call` with `Authorization: Bearer $VARG_API_KEY` (create a key at https://varg.ai/dashboard/api).
It answers `202` with a job right away. Poll `GET /v2/jobs/{id}` until `status` is `completed`, then read `output.outputs[0].url` — or pass `options.webhook_url` and get the finished job POSTed to you.

```bash
curl -X POST https://api.varg.ai/v2/tools/image/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "flux_3_image_klein",
  "prompt": "A woman in black with glowing orange shield sunglasses holds a glass Klein bottle, black-and-white concrete room, orange light through window blinds."
}'
```

MCP: the varg server `https://mcp.varg.ai/mcp` (OAuth sign-in, no key) runs it with `call_tool`:

```json
{
  "tool": "image",
  "input": {
    "model": "flux_3_image_klein",
    "prompt": "A woman in black with glowing orange shield sunglasses holds a glass Klein bottle, black-and-white concrete room, orange light through window blinds."
  },
  "wait": true
}
```

## Inputs

| field | type | required | default | allowed | description |
|---|---|---|---|---|---|
| `model` | string | yes | — | `flux_3_image_klein` or a route key below | Which model runs the job. |
| `prompt` | string | no | — | — | — |
| `files` | array of { url } | no | — | — | — |
| `aspect_ratio` | string | no | — | e.g. 16:9 \| 9:16 \| 1:1 \| 4:3 \| 3:4 \| 21:9 \| auto | — |

Media inputs are URLs. Upload a local file first with `POST /v2/files` and pass the returned URL.

## Provider options

Optional, per provider, under `provider_options.<provider>`. Only the options of the provider that runs the job apply — pin a route to choose it.

### provider_options.fal

| field | type | required | default | allowed | description |
|---|---|---|---|---|---|
| `prompt` | string | no | — | — | The prompt to generate an image from. The model is trained on detailed captions: describe framing, subject, background and lighting. |
| `image_urls` | array of URL strings | no | — | — | — |
| `seed` | integer | no | — | -9007199254740991–9007199254740991 | The same seed and the same prompt given to the same version of the model will output the same image every time. |
| `sync_mode` | boolean | no | — | — | If True, the media will be returned as a data URI and the output data won't be available in the request history. |
| `num_images` | integer | no | — | -9007199254740991–9007199254740991 | The number of images to generate. |
| `output_format` | string | no | — | jpeg \| png \| webp | — |
| `enable_safety_checker` | boolean | no | — | — | If set to true, the safety checker will be enabled. |
| `enable_prompt_expansion` | boolean | no | — | — | If set to true, the prompt is expanded into a detailed caption before generation. |

### provider_options.bfl

| field | type | required | default | allowed | description |
|---|---|---|---|---|---|
| `prompt` | string | no | — | — | Free-form prompt describing the image. |
| `seed` | integer | no | — | 0–4294967295 | — |
| `steps` | integer | no | — | 1–16 | — |
| `width` | integer | no | — | -9007199254740991–9007199254740991 | — |
| `height` | integer | no | — | -9007199254740991–9007199254740991 | — |
| `images` | string | no | — | — | — |
| `resolution` | string | no | — | 768sq \| 1k \| 1.5k \| 2k \| 4k | — |
| `aspect_ratio` | string | no | — | 21:9 \| 2:1 \| 16:9 \| 3:2 \| 7:5 \| 4:3 \| 5:4 \| 1:1 \| 4:5 \| 3:4 \| 5:7 \| 2:3 \| 9:16 \| 1:2 \| 9:21 | — |
| `output_format` | string | no | — | jpeg \| png | — |
| `safety_tolerance` | integer | no | — | 0–7 | Harm moderation tolerance from 0 (strictest) to 7. |

## Routes

`"model": "flux_3_image_klein"` picks a route automatically (priority order, then the inputs you send). To pin one, pass its key as `model`.

| model key | provider | modality | price from | typical time |
|---|---|---|---|---|
| `fal:blackforestlabs/flux-3/klein/text-to-image` | fal | text-to-image | $0.01 | ~5 s |
| `fal:blackforestlabs/flux-3/klein/edit-image` | fal | image-to-image | $0.01 | ~5 s |
| `bfl:flux-3-image-klein` | bfl | text-to-image, image-to-image | $0.01 | ~5 s |

---

Catalog version 2026-11-11T12:59:09.901887+00:00. All models: https://varg.ai/models/llms.txt
