Flux 2 Flex Text To Image
Playground
Try it on WavespeedAI!FLUX.2 [flex] from Black Forest Labs delivers fast, flexible text-to-image generation with enhanced realism, sharper text rendering, and built-in editing for rapid iteration: a ready-to-use REST inference API, best performance, no cold starts, and affordable pricing.
Features
FLUX.2 [flex] — Text-to-Image
FLUX.2 [flex] is the creative workhorse of the FLUX.2 family: a configurable, style-forward text-to-image model that delivers professional visuals while leaving plenty of room for experimentation. It is designed for teams who want more control over aesthetics and behaviour than a strictly “locked” production model.
Where FLUX.2 [flex] fits best
- Style-driven exploration and concept art
- High-volume generation where visual diversity is important
- Brand and product imagery that needs frequent refinements
- Fine-tuning experiments for domain- or brand-specific looks
Creative-first generation with control knobs
Rather than fixing all sampling behaviour, FLUX.2 [flex] keeps the lean FLUX.2 core but exposes more room to steer style, strength, and interpretation. You get production-usable images at good speed, while being able to push colour, mood, and composition further than with purely “set-and-forget” pipelines.
What you can get from this?
• Wide stylistic latitude
Produces a broad range of looks and moods—from clean product shots to heavily stylised illustration—so a single prompt can be explored in multiple creative directions.
• Tunable quality–speed trade-off
Supports configuration of inference settings, letting you run quick drafts cheaply and then dial up quality for shortlisted ideas or final renders.
• Open, extensible foundation
Built on open FLUX.2 tooling and community contributions, making it straightforward to inspect, adapt, and embed flex deeply into custom stacks.
• Friendly to LoRA and custom training
Works well as a base for LoRA adapters or other lightweight fine-tuning, so you can lock in house styles, specific subjects, or niche domains without retraining a heavyweight model.
• Resource-conscious for large runs
The streamlined architecture keeps GPU usage moderate, which is ideal for batch jobs, internal tools, and cost-sensitive creative pipelines.
• Consistent, repeatable results
Seed control and stable behaviour make it easy to recreate favourite generations or generate controlled variations for A/B tests and iterative design work.
Pricing
Simple per-image billing:
- $0.06 per generated image
FLUX.2 family on WaveSpeedAI
Combine FLUX.2 [flex] with the rest of the FLUX.2 lineup for a complete creation and editing workflow:
- FLUX.2 [dev] Text-to-Image – lightweight base model optimised for speed and LoRA training.
- FLUX.2 [dev] Edit – fast, style-consistent edits on existing images with the same lean architecture.
- FLUX.2 [flex] Edit – powerful image editing with a broader stylistic range and precise prompt control.
- FLUX.2 [pro] Text-to-Image – higher-capacity model for maximum-quality hero shots and demanding production use.
- FLUX.2 [pro] Edit – premium editing for detailed, high-fidelity transformations on critical assets.
More Image Tools on WaveSpeedAI
- Nano Banana Pro – Google’s Gemini-based text-to-image model for sharp, coherent, prompt-faithful visuals that work great for ads, keyframes, and product shots.
- Seedream V4 – ByteDance’s style-consistent, multi-image generator ideal for posters, campaigns, and large batches of on-brand illustrations.
- Qwen Edit Plus – an enhanced Qwen-based image editor for precise inpainting, cleanup, and local style changes while preserving overall composition.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-flex/text-to-image" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"size": "1024*1024",
"seed": -1,
"enable_sync_mode": false,
"enable_base64_output": false
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| size | string | No | 1024*1024 | 256 ~ 1536 per dimension | The size of the generated media in pixels (width*height). |
| seed | integer | No | -1 | -1 ~ 2147483647 | The random seed to use for the generation. -1 means a random seed will be used. |
| enable_sync_mode | boolean | No | false | - | If set to true, the function will wait for the result to be generated and uploaded before returning the response. It allows you to get the result directly in the response. This property is only available through the API. |
| enable_base64_output | boolean | No | false | - | If enabled, the output will be encoded into a BASE64 string instead of a URL. This property is only available through the API. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |