# Flux 2 | Text to Image Lora A FLUX.2 [dev] text-to-image model with full LoRA support, enabling custom style adaptation and finely tuned visual variations. ## API Information - **Model Slug:** flux-2-lora - **Branded URL:** https://www.eachlabs.ai/black-forest-labs/flux-2/flux-2-lora - **Provider:** Black Forest Labs - **Category:** Text to Image - **Output Type:** array - **Status:** active - **Base Cost:** $0.021 per megapixel per image - **Estimated Processing Time:** 20 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/flux-2-lora ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.021 per megapixel per image - **Pricing Details:** default: $0.021 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the image to generate. | | loras | array | No | - | - | List of LoRA adapters to apply. Each entry needs a path (URL or HuggingFace ID) and optional scale. | | guidance_scale | number | No | 2.5 | 0–20 | Classifier-free guidance scale. Higher values follow the prompt more closely. Range: 0–20. Default: 2.5. | | num_inference_steps | integer | No | 28 | 1–50 | Number of denoising steps. More steps can improve quality but take longer. Range: 1–50. Default: 28. | | image_size | string | No | square_hd | square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9 | Output image size preset. Default: square_hd. | | enable_prompt_expansion | boolean | No | false | - | Automatically expand the prompt for richer results. Default: false. | | enable_safety_checker | boolean | No | true | - | Run safety checker on output. Default: true. | | output_format | string | No | png | jpeg, png, webp | Output image format. Default: png. | | num_images | integer | No | 1 | 1–4 | Number of images to generate. Range: 1–4. Default: 1. | | acceleration | string | No | none | none, regular, high | Inference acceleration mode. Higher acceleration is faster but may reduce quality. Default: none. | | seed | integer | No | - | 1–0 | Random seed for reproducible results. Leave empty for random output. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "flux-2-lora", "input": { "prompt": "Close shot of a woman standing in a luxurious penthouse with floor to ceiling windows overlooking a rainy futuristic metropolis. Shot with a 50mm lens at a side profile angle, soft tungsten light illuminating her silhouette. Capture detailed reflections on the glass, neon city lights diffused by rain, water droplets sliding down the windows, and the atmospheric warm and cool lighting contrast across the room’s polished surfaces." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "array", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **flux-2-lora — Text to Image AI Model** Developed by Black Forest Labs as part of the FLUX.2 family, flux-2-lora is a text-to-image AI model built on a rectified flow transformer architecture that unifies image generation and editing in a single model. Unlike competing solutions that require separate checkpoints for generation and editing workflows, flux-2-lora handles both tasks seamlessly, enabling developers and creators to build faster, more efficient image generation applications. The model combines a 9 billion parameter flow model with an 8 billion parameter Qwen3 text embedder, positioning it as a powerful yet compact solution for production-scale text-to-image AI applications. What sets flux-2-lora apart is its full LoRA (Low-Rank Adaptation) support built on an undistilled base architecture. This means the model preserves its complete training signal, enabling fine-tuning and custom style adaptation without sacrificing model capacity—a critical advantage for teams building specialized image generation workflows or custom style libraries. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.