FLUX.1 · FLUX.1 Pro · FLUX 2 Pro
FLUX dev API built for
production workloads
Every FLUX variant behind one REST endpoint. From $0.0047 an image, commercial rights included.
Commercial usage rights on every plan · 100% refund within 24 hours · Cancel anytime
Your first FLUX call
One POST request. Pass model_id to pick a FLUX variant — the request and
response shape stay identical across all of them.
# FLUX.1 [schnell] — 4-step generation curl -X POST "$API_BASE/api/v6/images/text2img" \ -H "Content-Type: application/json" \ -d '{ "key": "YOUR_API_KEY", "model_id": "flux-schnell", "prompt": "an isometric server rack, soft studio lighting, 3d render", "negative_prompt": "blurry, low quality, watermark", "width": 1024, "height": 1024, "samples": 1, "num_inference_steps": 4, "guidance_scale": 3.5, "safety_checker": "yes" }'
import requests URL = API_BASE + "/api/v6/images/text2img" payload = { "key": "YOUR_API_KEY", "model_id": "flux-schnell", "prompt": "an isometric server rack, soft studio lighting, 3d render", "width": 1024, "height": 1024, "samples": 1, "num_inference_steps": 4, "safety_checker": "yes", } res = requests.post(URL, json=payload, timeout=120).json() # status is "success" when synchronous, "processing" when queued if res["status"] == "processing": print("poll:", res["fetch_result"], "eta:", res["eta"]) else: print(res["output"]) # -> ["https://.../generated.png"]
const res = await fetch(`${API_BASE}/api/v6/images/text2img`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ key: process.env.FLUX3_API_KEY, model_id: "flux-schnell", prompt: "an isometric server rack, soft studio lighting, 3d render", width: 1024, height: 1024, samples: 1, num_inference_steps: 4, safety_checker: "yes", }), }); const data = await res.json(); // queued jobs return a fetch_result URL to poll if (data.status === "processing") { await pollUntilReady(data.fetch_result); } else { console.log(data.output); }
API_BASE is issued with your API key.
Which FLUX variant to use
All four share the same request schema. Swap model_id to trade speed
against fidelity — no code changes beyond the string.
| Variant | model_id | Steps | Best for | License |
|---|---|---|---|---|
| FLUX.1 [schnell] | flux-schnell | 1–4 | High-volume, latency-sensitive generation. Thumbnails, previews, drafts. | Apache 2.0 |
| FLUX.1 [dev] | flux-dev | 20–50 | Default choice. Strong prompt adherence and text rendering at moderate cost. | Non-commercial base |
| FLUX.1 [pro] | flux-pro | 25–50 | Client-facing output where fidelity matters more than per-image cost. | Commercial |
| FLUX 2 Pro | flux-2-pro | 25–50 | Latest generation. Best typography, composition, and photoreal detail. | Commercial |
Text to image
/v6/images/text2img — prompt in, image URL out. Control resolution,
step count, guidance scale, seed, and sampler.
Image to image
/v6/images/img2img — pass an init_image plus a
strength value to steer how far generation drifts from the source.
Inpainting
/v6/images/inpaint — supply a mask and regenerate only the masked
region, preserving everything outside it.
What you skip by not self-hosting
FLUX.1 [dev] needs roughly 24 GB of VRAM to run comfortably. Here's what hosting it yourself actually costs you in engineering time.
No GPU capacity planning
An A100 or H100 sitting idle between requests still bills by the hour. Concurrency is a plan setting here, from 5 parallel requests on Basic up to 15 on the unlimited tier.
No cold starts
Loading FLUX weights into VRAM takes tens of seconds on a cold container. Models stay resident, so first-request latency matches steady-state latency.
No weight management
New FLUX releases, quantizations, and LoRA adapters land behind the same
model_id field. No image rebuilds, no multi-gigabyte pulls.
Commercial rights sorted
FLUX.1 [dev] carries a non-commercial base license. Generations through the hosted API include commercial usage rights on every plan.
Pricing
Subscription for predictable volume, pay-as-you-go from wallet for burst. Every plan includes a 100% refund policy.
Basic
- 3,250 API calls per billing period
- 5 concurrent API requests
- Access to all models
- Discord and email support
Standard Popular
- 10,000 API calls per billing period
- 10 concurrent API requests
- Access to all models
- Priority developer support
Open Source Unlimited
- Unlimited open-source generations
- 15 parallel generations
- Priority GPU clusters
- Team members, 24/7 support
| Pay as you go | Rate |
|---|---|
| Open-source image models (FLUX.1 schnell / dev, SDXL) | from $0.0047 per image |
| FLUX 2 Pro | $0.054 per image |
| Qwen Image 2.0 Pro | $0.075 per image |
Frequently asked
Can I use generated images commercially?
Yes. Commercial usage rights for generated content are included on all plans. This matters most for FLUX.1 [dev], whose base weights ship under a non-commercial license when self-hosted.
Is the API synchronous or asynchronous?
Both. Fast requests return status: "success" with output URLs inline.
When a job is queued, you get status: "processing" plus a
fetch_result URL and an eta in seconds to poll against.
How many requests can I run in parallel?
Concurrency is set by plan: 5 on Basic, 10 on Standard, and 15 parallel generations on Open Source Unlimited. Requests beyond your limit queue rather than fail.
Do you support LoRA adapters and ControlNet?
Yes. LoRAs are passed per-request alongside model_id, and ControlNet
conditioning is available on the image endpoints. See the API reference for the
parameter names.
What happens if I cancel?
Plans are month to month and cancellable at any time, with a 100% refund policy.
Ship FLUX today
Pick a plan, grab your API key, and make your first call in under five minutes.
View pricing & get API key