Images · Text to image · Image to image

Flux 3 Image Klein API

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.

Price
From $0.01 per run from $0.01/image
Typical time
~5 s
Model id
flux_3_image_klein

Flux 3 Image Klein runs on one varg API key and one credit balance, the same as every other model here. You pay the provider's price, with no markup.

POST /v2/tools/image/call
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."
}'
Flux 3 Image Klein sample output
Real outputA woman in black with glowing orange shield sunglasses holds a glass Klein bottle, black-and-white concrete room, orange light through window blinds.

Flux 3 Image Klein pricing

From $0.01 per run. Prices are in US dollars and are the provider's own, with no markup. Flux 3 Image Klein has 3 routes: "model": "flux_3_image_klein" picks one automatically, or pass a route key as "model" to pin it. For the exact price of a request, send the same body to POST https://api.varg.ai/v2/estimate.

  • fal from $0.01/image
    fal:blackforestlabs/flux-3/klein/text-to-image

    Text to image FLUX 3 Image Klein text-to-image (via fal) — compact open-weights FLUX 3 Image. 5.6B params, native 4K, bounding-box layout, prompt expansion on by default.

    Image size square_hd
    $0.01/image
    Image size square
    $0.01/image
    Image size portrait_4_3
    $0.01/image
    Image size portrait_16_9
    $0.01/image
    Image size landscape_4_3
    $0.01/image
    Image size landscape_16_9
    $0.01/image
    Other
    $0.01/image
    Minimum charge
    $0.01
    Most one request can cost
    $0.04
    Typical time
    ~5 s
  • fal from $0.01/image
    fal:blackforestlabs/flux-3/klein/edit-image

    Image to image FLUX 3 Image Klein edit (via fal) — edits and composes up to 10 references with bounding-box layout control. Compact open-weights, prompt expansion on by default.

    Image size square_hd
    $0.01/image
    Image size square
    $0.01/image
    Image size portrait_4_3
    $0.01/image
    Image size portrait_16_9
    $0.01/image
    Image size landscape_4_3
    $0.01/image
    Image size landscape_16_9
    $0.01/image
    Other
    $0.01/image
    Minimum charge
    $0.01
    Most one request can cost
    $0.04
    Typical time
    ~5 s
  • bfl from $0.01/image
    bfl:flux-3-image-klein

    Text to image, Image to image FLUX 3 Image Klein (direct BFL) — compact open-weights FLUX 3 Image. Single endpoint for text-to-image and editing with up to 10 references. 5.6B params, native 4K, bounding-box layout. Poll-only.

    Resolution 768sq
    $0.01/image
    Resolution 1k
    $0.01/image
    Resolution 1.5k
    $0.02/image
    Resolution 2k
    $0.02/image
    Resolution 4k
    $0.04/image
    Other
    $0.01/image
    Minimum charge
    $0.01
    Most one request can cost
    $0.04
    Typical time
    ~5 s

Flux 3 Image Klein inputs

The JSON body of the request. Media inputs are URLs: upload a local file with POST /v2/files and pass the URL it returns. Full JSON Schema, no key needed: api.varg.ai/v2/tools/image?model=flux_3_image_klein

Flux 3 Image Klein request fields
FieldWhat it does
model string requiredflux_3_image_klein picks a route automatically. To pin one, pass a route key from Pricing above.
prompt string —
files array of { url } —
aspect_ratio string Allowed e.g. 16:9 | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | auto

Provider options

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

provider_options.fal

Flux 3 Image Klein options for fal
FieldWhat it does
prompt string 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 —
seed integer The same seed and the same prompt given to the same version of the model will output the same image every time. Allowed -9007199254740991–9007199254740991
sync_mode boolean 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 The number of images to generate. Allowed -9007199254740991–9007199254740991
output_format string Allowed jpeg | png | webp
enable_safety_checker boolean If set to true, the safety checker will be enabled.
enable_prompt_expansion boolean If set to true, the prompt is expanded into a detailed caption before generation.

provider_options.bfl

Flux 3 Image Klein options for bfl
FieldWhat it does
prompt string Free-form prompt describing the image.
seed integer Allowed 0–4294967295
steps integer Allowed 1–16
width integer Allowed -9007199254740991–9007199254740991
height integer Allowed -9007199254740991–9007199254740991
images string —
resolution string Allowed 768sq | 1k | 1.5k | 2k | 4k
aspect_ratio string Allowed 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 Allowed jpeg | png
safety_tolerance integer Harm moderation tolerance from 0 (strictest) to 7. Allowed 0–7

Call the Flux 3 Image Klein API

POST https://api.varg.ai/v2/tools/image/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.

1. Send the request

cURL
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."
}'
JavaScript
JavaScript
const headers = {
  Authorization: `Bearer ${process.env.VARG_API_KEY}`,
  'Content-Type': 'application/json',
}

const res = await fetch('https://api.varg.ai/v2/tools/image/call', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    "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."
  }),
})
const job = await res.json() // { id: "job_…", status: "queued" }
Python
Python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}

job = requests.post(
    "https://api.varg.ai/v2/tools/image/call",
    headers=headers,
    json={
      "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."
    },
).json()  # {"id": "job_…", "status": "queued"}

2. Get the result

Poll the job until its status is completed, failed or cancelled; Flux 3 Image Klein typically takes about 5 s. The result is at output.outputs[0].url.

GET /v2/jobs/{id}
curl https://api.varg.ai/v2/jobs/$JOB_ID \
  -H "Authorization: Bearer $VARG_API_KEY"

# Poll until "status" is completed, failed or cancelled.
# The result is in output.outputs[0].url
JavaScript
JavaScript
let current = job
while (!['completed', 'failed', 'cancelled'].includes(current.status)) {
  await new Promise((resolve) => setTimeout(resolve, 3000))
  current = await (await fetch(`https://api.varg.ai/v2/jobs/${current.id}`, { headers })).json()
}
console.log(current.output?.outputs?.[0]?.url)
Python
Python
import time

while job["status"] not in ("completed", "failed", "cancelled"):
    time.sleep(3)
    job = requests.get(f"https://api.varg.ai/v2/jobs/{job['id']}", headers=headers).json()

print(job["output"]["outputs"][0]["url"])
Or take a webhook instead of polling

Add options.webhook_url and varg POSTs the finished job to it.

request body
{
  "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.",
  "options": {
    "webhook_url": "https://your-app.com/varg-webhook"
  }
}

From Claude, ChatGPT or Cursor (MCP)

The varg MCP server, https://mcp.varg.ai/mcp, runs Flux 3 Image Klein with call_tool. Sign in with varg, no API key to paste. How to connect it

call_tool
{
  "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
}

Flux 3 Image Klein API: questions

How much does Flux 3 Image Klein cost on varg?
Flux 3 Image Klein costs from $0.01 per run on varg (from $0.01/image on the cheapest route). varg charges the provider's price with no markup, from one credit balance. For the exact price of a request before you run it, send the same body to POST https://api.varg.ai/v2/estimate.
How do I call the Flux 3 Image Klein API?
Send POST https://api.varg.ai/v2/tools/image/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "flux_3_image_klein". The call answers 202 with a job right away. Poll GET https://api.varg.ai/v2/jobs/{id} until "status" is "completed", then read output.outputs[0].url, or pass options.webhook_url to be called back.
Can I use Flux 3 Image Klein from Claude, ChatGPT or Cursor?
Yes. Add the varg MCP server (https://mcp.varg.ai/mcp) to Claude, ChatGPT, Cursor or any other MCP client and sign in with varg, with no API key to paste. The agent runs Flux 3 Image Klein with call_tool, passing tool "image" and "model": "flux_3_image_klein".
How long does a Flux 3 Image Klein request take?
Typically about 5 s on the fastest route, by the catalog's estimate. The API answers at once with a job id, so nothing waits on an open connection while it runs.

For AI agents: this page as Markdown is varg.ai/models/flux_3_image_klein.md, and every model is listed in varg.ai/models/llms.txt.