# FLUX.1 [dev] with Controlnets and Loras API

> LoRA'lar, ControlNet'ler, IP-Adapter'lar, EasyControl ve referans görüntüsü yönlendirmesiyle FLUX.1 [dev] metinden görüntüye

Bir `prompt` üzerinden görseller oluştururken çeşitli koşullandırma yöntemlerine izin verir: `loras`, `control_loras`, `controlnets`, `controlnet_unions`, `ip_adapters` ve `easycontrols`; maskeli alanlar için ayrıca `fill_image` kullanır. `reference_image_url`, negatif istemler ve euler veya dpmpp_2m scheduler seçeneğini de alır. Çağrı başına en fazla 10 görsel; png veya jpeg olarak.

- Model id: `flux-general`
- Made by: Black Forest Labs
- Category: Text to Image
- Output: image
- Estimated price per run: $0.30 / image (cheapest run $0.30 (300 API credits))
- Run: `POST https://api.doitong.com/v1/run/flux-general`
- Quote: `POST https://api.doitong.com/v1/quote/flux-general`
- Docs page: https://doitong.com/tr/developers/models/flux-general

## Pricing

Price: **$0.30 / image**. Estimated from the typical cost of one run, per output (`num_images`). The quote is exactly what the run charges.

The full example input below costs $0.30 = 300 API credits (1 image × 300 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/flux-general` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Görsel üretimine yön veren istem. |
| `image_size` |  | object {width, height} \| enum (string) | no |  | `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Üretilen görselin boyutları. |
| `num_inference_steps` |  | integer | no | `28` | 1 – 50 | Çalıştırılacak çıkarım adımlarının sayısı. |
| `seed` |  | integer \| null | no |  |  | Tekrarlanabilir görseller için seed: model sürümü değişmediğinde aynı istem ve seed, aynı görseli üretir. |
| `loras` |  | array of object {path, scale} | no | `[]` |  | Birleşik etkisi oluşturulan görseli üreten LoRA'lar; sağlanabilecek sayı sınırsızdır. |
| `loras[].path` |  | string | yes |  |  | URL veya yol olarak belirtilen LoRA ağırlıklarının konumu. |
| `loras[].scale` |  | object \| number | no | `1` |  | Temel modelle birleştirilmeden önce LoRA ağırlıklarına uygulanan ölçekleme. Tek tek katman ölçeklerini ayarlamak için {"layer_name":layer_scale} biçiminde bir sözlük sağlayın; belirtilmeyen katmanlar 1.0 kullanır. |
| `control_loras` |  | array of object {path, scale, control_image_url, preprocess} | no | `[]` |  | Son görseli oluşturmak üzere birleşik bir yapılandırmada birleştirilen kontrol görseli LoRA'ları; sağlanan sayı sınırsızdır. |
| `control_loras[].path` |  | string | yes |  |  | URL veya yol olarak belirtilen LoRA ağırlıklarının konumu. |
| `control_loras[].scale` |  | object \| number | no | `1` |  | Temel modelle birleştirilmeden önce LoRA ağırlıklarına uygulanan ölçekleme. Tek tek katman ölçeklerini ayarlamak için {"layer_name":layer_scale} biçiminde bir sözlük sağlayın; belirtilmeyen katmanlar 1.0 kullanır. |
| `control_loras[].control_image_url` |  | string (image URL) | yes |  |  | Kontrol görselini sağlayan görsel URL'si. |
| `control_loras[].preprocess` |  | enum (string) | no | `None` | `canny`, `depth`, `None` | Sağlanan görsele uygulanan ön işleme yöntemi. |
| `controlnets` |  | array of object {path, config_url, variant, control_image_url, mask_image_url, mask_threshold, conditioning_scale, start_percentage, end_percentage} | no | `[]` |  | Görsel üretimi için ControlNet yapılandırması; şu anda tek bir ControlNet ile sınırlıdır. |
| `controlnets[].path` |  | string | yes |  |  | URL veya yol olarak belirtilen ControlNet ağırlıklarının konumu. |
| `controlnets[].config_url` |  | string \| null | no |  |  | ControlNet'in config.json dosyasına işaret eden isteğe bağlı URL. |
| `controlnets[].variant` |  | string \| null | no |  |  | Hugging Face depo anahtarıyla kullanılacak isteğe bağlı varyant. |
| `controlnets[].control_image_url` |  | string (image URL) | yes |  |  | Kontrol görselini sağlayan görsel URL'si. |
| `controlnets[].mask_image_url` |  | string (image URL) | no |  |  | Kontrol görseliyle ilişkili maske URL'si. |
| `controlnets[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Maske eşik değeri. |
| `controlnets[].conditioning_scale` |  | number | no | `1` | 0 – 2 | ControlNet ağırlıkları temel modelle birleştirilmeden önce uygulanan ölçekleme. |
| `controlnets[].start_percentage` |  | number | no | `0` | 0 – 1 | ControlNet'in görsel üretimini etkilemeye başladığı toplam zaman adımlarının yüzdesi. |
| `controlnets[].end_percentage` |  | number | no | `1` | 0 – 1 | ControlNet'in görsel üretimini etkilemeyi bıraktığı toplam zaman adımlarının yüzdesi. |
| `controlnet_unions` |  | array of object {path, config_url, variant, controls} | no | `[]` |  | Mevcut tek ControlNet kısıtına tabi, görsel üretimi için ControlNet union yapılandırması. |
| `controlnet_unions[].path` |  | string | yes |  |  | URL veya yol olarak belirtilen ControlNet ağırlıklarının konumu. |
| `controlnet_unions[].config_url` |  | string \| null | no |  |  | ControlNet'in config.json dosyasına işaret eden isteğe bağlı URL. |
| `controlnet_unions[].variant` |  | string \| null | no |  |  | Hugging Face depo anahtarıyla kullanılacak isteğe bağlı varyant. |
| `controlnet_unions[].controls` |  | array of object {control_image_url, mask_image_url, control_mode, conditioning_scale, mask_threshold, start_percentage, end_percentage} | yes |  |  | ControlNet'e sağlanan kontrol görselleri ve ilişkili modlar. |
| `controlnet_unions[].controls[].control_image_url` |  | string (image URL) | yes |  |  | Kontrol görselini sağlayan görsel URL'si. |
| `controlnet_unions[].controls[].mask_image_url` |  | string (image URL) | no |  |  | Kontrol görseliyle ilişkili maske URL'si. |
| `controlnet_unions[].controls[].control_mode` |  | enum (string) | yes |  | `canny`, `tile`, `depth`, `blur`, `pose`, `gray`, `low-quality` | Flux Controlnet Union tarafından kullanılan kontrol modu. Seçenekler: canny, üretimi kenarlarla yönlendirir; tile, döşemelerle yönlendirir; depth, gri tonlamalı derinlik haritasıyla yönlendirir; blur görseli bulanıklaştırır; pose, üretimi görselin pozuyla yönlendirir; gray görseli gri tonlamalı yapar; low-quality görselin düşük kaliteli bir sürümünü üretir. |
| `controlnet_unions[].controls[].conditioning_scale` |  | number | no | `1` | 0 – 2 | ControlNet ağırlıkları temel modelle birleştirilmeden önce uygulanan ölçekleme. |
| `controlnet_unions[].controls[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Maske eşik değeri. |
| `controlnet_unions[].controls[].start_percentage` |  | number | no | `0` | 0 – 1 | ControlNet'in görsel üretimini etkilemeye başladığı toplam zaman adımlarının yüzdesi. |
| `controlnet_unions[].controls[].end_percentage` |  | number | no | `1` | 0 – 1 | ControlNet'in görsel üretimini etkilemeyi bıraktığı toplam zaman adımlarının yüzdesi. |
| `ip_adapters` |  | array of object {path, subfolder, weight_name, image_encoder_path, image_encoder_subfolder, image_encoder_weight_name, image_url, mask_image_url, mask_threshold, scale} | no | `[]` |  | Görsel üretimi sırasında uygulanan IP-Adapter. |
| `ip_adapters[].path` |  | string | yes |  |  | IP-Adapter'ın Hugging Face konumu. |
| `ip_adapters[].subfolder` |  | string \| null | no |  |  | ip_adapter ağırlıklarını içeren alt klasör. |
| `ip_adapters[].weight_name` |  | string \| null | no |  |  | IP-Adapter ağırlıkları için Safetensors dosya adı. |
| `ip_adapters[].image_encoder_path` |  | string | yes |  |  | 'openai/clip-vit-large-patch14' gibi IP-Adapter görsel kodlayıcısının konumu. |
| `ip_adapters[].image_encoder_subfolder` |  | string \| null | no |  |  | Görsel kodlayıcı ağırlıklarını içeren alt klasör. |
| `ip_adapters[].image_encoder_weight_name` |  | string \| null | no |  |  | Görsel kodlayıcının adı. |
| `ip_adapters[].image_url` |  | string (image URL) | yes |  |  | IP-Adapter'a sağlanan koşullandırma görselinin URL'si. |
| `ip_adapters[].mask_image_url` |  | string (image URL) \| null | no |  |  | Kontrol görseliyle ilişkili maske URL'si. |
| `ip_adapters[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Maske eşik değeri. |
| `ip_adapters[].scale` |  | number | yes |  |  | IP-Adapter ölçekleme faktörü. |
| `easycontrols` |  | array of object {control_method_url, scale, image_url, image_control_type} | no | `[]` |  | Görsel üretimi sırasında uygulanan EasyControl girdileri. |
| `easycontrols[].control_method_url` |  | string | yes |  |  | Kontrol yönteminin safetensor ağırlık URL'si veya desteklenen bir tanımlayıcı: `canny`, `depth`, `hedsketch`, `inpainting`, `pose`, `seg`, `subject`, `ghibli`. |
| `easycontrols[].scale` |  | number | no | `1` | 0 – 2 | Kontrol yönteminin ölçekleme faktörü. |
| `easycontrols[].image_url` |  | string (image URL) | yes |  |  | Kontrol girdisini sağlayan görsel URL'si. |
| `easycontrols[].image_control_type` |  | enum (string) | yes |  | `subject`, `spatial` | Görsel kontrol modu; `spatial` veya `subject` kabul eder. |
| `fill_image` |  | object {fill_image_url} \| null | no |  |  | Üretimi yönlendiren ve maskeli bölgeler için içerik sağlayabilen girdi görseli. |
| `fill_image.fill_image_url` |  | string (image URL) \| array of image URL | no | `[]` |  | redux istemiyle doldurulacak görsellerin URL'leri. |
| `guidance_scale` |  | number | no | `3.5` | 0 – 20 | Görsel seçimi için isteme uyum gücü; CFG (Classifier Free Guidance) olarak ifade edilir. |
| `real_cfg_scale` |  | number | no | `3.5` | 0 – 5 | Görsel seçimi için isteme uyum gücü; CFG (Classifier Free Guidance) olarak ifade edilir. |
| `use_real_cfg` |  | boolean | no | `false` |  | XLabs IP-Adapter v1 ile otomatik olarak etkinleştirilen klasik CFG anahtarı. Yönlendirme davranışı SD1.5 ve SDXL gibi modellerinkiyle eşleşir. |
| `use_cfg_zero` |  | boolean | no | `false` |  | https://arxiv.org/abs/2503.18886 adresinde açıklanan CFG-zero başlatmalı örneklemeyi etkinleştirir. |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 10 | Kaç görsel üretileceğini ayarlayın; çıktı akış olarak gönderildiğinde bu seçim 1 olarak sabitlenir. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Güvenlik denetimi; güvenli olmadığı işaretlenen görsellerin yerine siyah görseller döndürür. true denetimi etkinleştirir; false yalnızca yetkili hesaplarda denetimi devre dışı bırakır, yetkisiz istekler her durumda denetlenir. |
| `reference_image_url` |  | string (image URL) | no |  |  | Reference-Only yönlendirmesi için kullanılan görsel URL'si. |
| `reference_strength` |  | number | no | `0.65` | -3 – 3 | reference_only üretimi sırasında referans görselinin etkisi; referans görseli sağlanmadığında bu güç ayarının etkisi yoktur. |
| `reference_start` |  | number | no | `0` | 0 – 1 | Tüm zaman adımlarının yüzdesi olarak ifade edilen referans yönlendirme başlangıç noktası. |
| `reference_end` |  | number | no | `1` | 0 – 1 | Tüm zaman adımlarının yüzdesi olarak ifade edilen referans yönlendirme bitiş noktası. |
| `base_shift` |  | number | no | `0.5` | 0.01 – 5 | Zamanlanan zaman adımlarına uygulanan temel kaydırma. |
| `max_shift` |  | number | no | `1.15` | 0.01 – 5 | Zamanlanan zaman adımlarına uygulanan maksimum kaydırma. |
| `output_format` |  | enum (string) | no | `png` | `jpeg`, `png` | Ortaya çıkan görselin dosya biçimi. |
| `use_beta_schedule` |  | boolean | no | `false` |  | Beta sigmalarının kullanılıp kullanılmayacağını denetler. |
| `sigma_schedule` |  | string \| null | no |  |  | Gürültü giderme sırasında kullanılan sigma zamanlaması. |
| `scheduler` |  | enum (string) | no | `euler` | `euler`, `dpmpp_2m` | Gürültü giderme sırasında kullanılan zamanlayıcı. |
| `negative_prompt` |  | string | no | `` |  | Varsayılan olarak NAG ile işlenen negatif istem; oluşturulan görsellerde belirtilen istenmeyen özellikleri engeller. |
| `nag_scale` |  | number | no | `3` | ≤ 10, > 1 | Negatif istemden kaçınma NAG ölçeğiyle denetlenir: artırılması, oluşturulan görselin negatif açıklamaya daha az benzemesini sağlar. |
| `nag_tau` |  | number | no | `2.5` | > 0 | Gizli durum normalleştirmesi için NAG tau ayarı; değiştirilmemesi önerilir. Artırılması normalleştirmeyi zayıflatır ve özgün görselden beklenmeyen sapmalara yol açabilir. |
| `nag_alpha` |  | number | no | `0.25` | ≤ 1, > 0 | NAG alpha, pozitif ve negatif istemleri birleştiren normalleştirilmiş yönlendirmeyi pozitif istemin ne kadar yeniden yönlendireceğini belirler. Bu son ağırlıklandırma, düşük ayarlarda pozitif isteme daha fazla etki verir ve yüksek ayarlarda yeniden yönlendirmeyi azaltır. |
| `nag_end` |  | number | no | `0.25` | ≤ 1, > 0 | Üretim adımlarının oranı olarak ifade edilen NAG kesme noktası. FLUX'ın özgün attention işlemcileri, NAG bu başlangıç oranı boyunca çalıştıktan sonra devreye girer. |

File parameters (`reference_image_url`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/flux-general?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/flux-general?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/flux-general", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "flux-general",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "flux-general",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 300,
    "usd": "0.30",
    "charged": 300,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "images": [
      {
        "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
        "width": 1024,
        "height": 768,
        "content_type": "image/jpeg"
      }
    ],
    "timings": {},
    "seed": 42,
    "has_nsfw_concepts": [
      false
    ],
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "image",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `images` | array of object {url, width, height, content_type} | Üretilen görsellerin dosya bilgileri. |
| `timings` | object |  |
| `seed` | integer | Görsel üretimi seed'i; girdi seed sağlamadıysa rastgele seçilen değeri içerir, aksi durumda sağlanan değeri tekrarlar. |
| `has_nsfw_concepts` | array of boolean | Üretilen görsellerde NSFW kavramlarının bulunup bulunmadığını belirtir. |
| `prompt` | string | Görsel üretimi sırasında kullanılan istem. |

## Related models

- [FLUX.1 \[dev\] with Controlnets and Loras · Differential Diffusion](https://doitong.com/developers/models/flux-general/differential-diffusion.md) (`flux-general/differential-diffusion`): $0.138 / image
- [FLUX.1 \[dev\] with Controlnets and Loras · Image to Image](https://doitong.com/developers/models/flux-general/image-to-image.md) (`flux-general/image-to-image`): $0.15 / image
- [FLUX.1 \[dev\] with Controlnets and Loras · Inpainting](https://doitong.com/developers/models/flux-general/inpainting.md) (`flux-general/inpainting`): $0.192 / image
- [FLUX.1 \[dev\] with Controlnets and Loras · Rf Inversion](https://doitong.com/developers/models/flux-general/rf-inversion.md) (`flux-general/rf-inversion`): $0.025 / image
- [FLUX.1 \[dev\]](https://doitong.com/developers/models/flux/dev.md) (`flux/dev`): $0.025 / megapixel
- [FLUX.1 \[schnell\]](https://doitong.com/developers/models/flux/schnell.md) (`flux/schnell`): $0.003 / megapixel
- [FLUX.2 \[dev\]](https://doitong.com/developers/models/flux-2.md) (`flux-2`): $0.012 / megapixel
- [FLUX.2 \[pro\]](https://doitong.com/developers/models/flux-2-pro.md) (`flux-2-pro`): $0.015 / megapixel of output image

## Links

- HTML page: https://doitong.com/developers/models/flux-general
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=flux-general
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/flux-general
