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

> FLUX.1 [dev] text-to-image með LoRAs, ControlNets, IP-Adapters, EasyControl og stýringu með viðmiðunarmynd

Býr til myndir út frá `prompt` og leyfir nokkrar skilyrðingaraðferðir: `loras`, `control_loras`, `controlnets`, `controlnet_unions`, `ip_adapters` og `easycontrols`, auk `fill_image` fyrir svæði með grímu. Tekur einnig við `reference_image_url`, neikvæðum promptum og vali á euler- eða dpmpp_2m-tímasetjara. Allt að 10 myndir í hverju kalli, í png eða jpeg.

- 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/is/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 |  |  | Kvaðning sem stýrir myndgerð. |
| `image_size` |  | object {width, height} \| enum (string) | no |  | `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Víddir myndaðrar myndar. |
| `num_inference_steps` |  | integer | no | `28` | 1 – 50 | Fjöldi ályktunarskrefa sem á að keyra. |
| `seed` |  | integer \| null | no |  |  | Frægildi fyrir endurtekningarhæfar myndir: eins kvaðning og frægildi framleiða sömu mynd þegar útgáfa líkansins er óbreytt. |
| `loras` |  | array of object {path, scale} | no | `[]` |  | LoRA-vigtir þar sem sameinuð áhrif þeirra skapa myndina sem verður til, án takmörkunar á fjölda. |
| `loras[].path` |  | string | yes |  |  | Staðsetning LoRA-vigtanna, tilgreind sem slóð eða vefslóð. |
| `loras[].scale` |  | object \| number | no | `1` |  | Kvarði sem er beitt á LoRA-vigtir áður en þær eru sameinaðar grunnlíkaninu. Gefðu upp orðabók á forminu {"layer_name":layer_scale} til að stilla einstök lög; ótilgreind lög nota 1.0. |
| `control_loras` |  | array of object {path, scale, control_image_url, preprocess} | no | `[]` |  | Control-image LoRA-vigtir sameinaðar í sameiginlega uppsetningu til að búa til lokaúttaksmyndina; fjöldi þeirra er ótakmarkaður. |
| `control_loras[].path` |  | string | yes |  |  | Staðsetning LoRA-vigtanna, tilgreind sem slóð eða vefslóð. |
| `control_loras[].scale` |  | object \| number | no | `1` |  | Kvarði sem er beitt á LoRA-vigtir áður en þær eru sameinaðar grunnlíkaninu. Gefðu upp orðabók á forminu {"layer_name":layer_scale} til að stilla einstök lög; ótilgreind lög nota 1.0. |
| `control_loras[].control_image_url` |  | string (image URL) | yes |  |  | Myndslóð sem gefur control-myndina. |
| `control_loras[].preprocess` |  | enum (string) | no | `None` | `canny`, `depth`, `None` | Forvinnsluaðferð sem er beitt á gefnu myndina. |
| `controlnets` |  | array of object {path, config_url, variant, control_image_url, mask_image_url, mask_threshold, conditioning_scale, start_percentage, end_percentage} | no | `[]` |  | ControlNet-uppsetning fyrir efnisgerð mynda, sem stendur takmörkuð við eitt ControlNet. |
| `controlnets[].path` |  | string | yes |  |  | Staðsetning ControlNet-vigta, tilgreind sem slóð eða leið. |
| `controlnets[].config_url` |  | string \| null | no |  |  | Valfrjáls slóð að config.json-skrá ControlNet. |
| `controlnets[].variant` |  | string \| null | no |  |  | Valfrjáls afbrigði til notkunar með Hugging Face-geymslulykli. |
| `controlnets[].control_image_url` |  | string (image URL) | yes |  |  | Myndslóð sem gefur control-myndina. |
| `controlnets[].mask_image_url` |  | string (image URL) | no |  |  | Maskaslóð tengd control-myndinni. |
| `controlnets[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Þröskuldsgildi maska. |
| `controlnets[].conditioning_scale` |  | number | no | `1` | 0 – 2 | Kvarði sem er beitt á ControlNet-vigtir áður en þær eru sameinaðar grunnlíkaninu. |
| `controlnets[].start_percentage` |  | number | no | `0` | 0 – 1 | Hlutfall heildartímaskrefa þar sem ControlNet byrjar að hafa áhrif á efnisgerð myndar. |
| `controlnets[].end_percentage` |  | number | no | `1` | 0 – 1 | Hlutfall heildartímaskrefa þar sem ControlNet hættir að hafa áhrif á efnisgerð myndar. |
| `controlnet_unions` |  | array of object {path, config_url, variant, controls} | no | `[]` |  | ControlNet-union-uppsetning fyrir efnisgerð mynda, háð núverandi takmörkun við eitt ControlNet. |
| `controlnet_unions[].path` |  | string | yes |  |  | Staðsetning ControlNet-vigta, tilgreind sem slóð eða leið. |
| `controlnet_unions[].config_url` |  | string \| null | no |  |  | Valfrjáls slóð að config.json-skrá ControlNet. |
| `controlnet_unions[].variant` |  | string \| null | no |  |  | Valfrjáls afbrigði til notkunar með Hugging Face-geymslulykli. |
| `controlnet_unions[].controls` |  | array of object {control_image_url, mask_image_url, control_mode, conditioning_scale, mask_threshold, start_percentage, end_percentage} | yes |  |  | Control-myndir og tengdar stillingar sem eru gefnar ControlNet. |
| `controlnet_unions[].controls[].control_image_url` |  | string (image URL) | yes |  |  | Myndslóð sem gefur control-myndina. |
| `controlnet_unions[].controls[].mask_image_url` |  | string (image URL) | no |  |  | Maskaslóð tengd control-myndinni. |
| `controlnet_unions[].controls[].control_mode` |  | enum (string) | yes |  | `canny`, `tile`, `depth`, `blur`, `pose`, `gray`, `low-quality` | Control-stilling notuð af Flux Controlnet Union. Valkostir: canny stýrir efnisgerð með brúnum; tile stýrir henni með flísum; depth stýrir henni með grátóna-dýptarkorti; blur gerir myndina óskýra; pose stýrir efnisgerð með stellingu myndarinnar; gray gerir myndina að grátónamynd; low-quality býr til útgáfu í lágum gæðum. |
| `controlnet_unions[].controls[].conditioning_scale` |  | number | no | `1` | 0 – 2 | Kvarði sem er beitt á ControlNet-vigtir áður en þær eru sameinaðar grunnlíkaninu. |
| `controlnet_unions[].controls[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Þröskuldsgildi maska. |
| `controlnet_unions[].controls[].start_percentage` |  | number | no | `0` | 0 – 1 | Hlutfall heildartímaskrefa þar sem ControlNet byrjar að hafa áhrif á efnisgerð myndar. |
| `controlnet_unions[].controls[].end_percentage` |  | number | no | `1` | 0 – 1 | Hlutfall heildartímaskrefa þar sem ControlNet hættir að hafa áhrif á efnisgerð myndar. |
| `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 | `[]` |  | IP-Adapter sem er notaður við efnisgerð myndar. |
| `ip_adapters[].path` |  | string | yes |  |  | Staðsetning IP-Adapter á Hugging Face. |
| `ip_adapters[].subfolder` |  | string \| null | no |  |  | Undirmappa sem inniheldur ip_adapter-vigtirnar. |
| `ip_adapters[].weight_name` |  | string \| null | no |  |  | Safetensors-skráarheiti fyrir vigtir IP-Adapter. |
| `ip_adapters[].image_encoder_path` |  | string | yes |  |  | Staðsetning myndkóðara IP-Adapter, svo sem 'openai/clip-vit-large-patch14'. |
| `ip_adapters[].image_encoder_subfolder` |  | string \| null | no |  |  | Undirmappa sem inniheldur vigtir myndkóðarans. |
| `ip_adapters[].image_encoder_weight_name` |  | string \| null | no |  |  | Heiti myndkóðara. |
| `ip_adapters[].image_url` |  | string (image URL) | yes |  |  | URL að skilyrðismynd sem er gefin IP-Adapter. |
| `ip_adapters[].mask_image_url` |  | string (image URL) \| null | no |  |  | Maskaslóð tengd control-myndinni. |
| `ip_adapters[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Þröskuldsgildi maska. |
| `ip_adapters[].scale` |  | number | yes |  |  | Kvarði IP-Adapter. |
| `easycontrols` |  | array of object {control_method_url, scale, image_url, image_control_type} | no | `[]` |  | EasyControl-inntak sem er notað við efnisgerð myndar. |
| `easycontrols[].control_method_url` |  | string | yes |  |  | Slóð að safetensor-vigt control-aðferðar, eða studd auðkenning: `canny`, `depth`, `hedsketch`, `inpainting`, `pose`, `seg`, `subject`, `ghibli`. |
| `easycontrols[].scale` |  | number | no | `1` | 0 – 2 | Kvarði control-aðferðar. |
| `easycontrols[].image_url` |  | string (image URL) | yes |  |  | Myndslóð sem gefur control-inntak. |
| `easycontrols[].image_control_type` |  | enum (string) | yes |  | `subject`, `spatial` | Control-stilling myndar; tekur annaðhvort við `spatial` eða `subject`. |
| `fill_image` |  | object {fill_image_url} \| null | no |  |  | Inntaksmynd sem stýrir efnisgerð og getur lagt til efni fyrir svæði með maska. |
| `fill_image.fill_image_url` |  | string (image URL) \| array of image URL | no | `[]` |  | Myndslóðir til fyllingar með redux-kvaðningu. |
| `guidance_scale` |  | number | no | `3.5` | 0 – 20 | Styrkur fylgni við kvaðningu fyrir val á mynd, gefinn upp sem CFG (Classifier Free Guidance). |
| `real_cfg_scale` |  | number | no | `3.5` | 0 – 5 | Styrkur fylgni við kvaðningu fyrir val á mynd, gefinn upp sem CFG (Classifier Free Guidance). |
| `use_real_cfg` |  | boolean | no | `false` |  | Klassískur CFG-rofi, virkjaður sjálfkrafa með XLabs IP-Adapter v1. Leiðsagnarhegðunin samsvarar hegðun líkana á borð við SD1.5 og SDXL. |
| `use_cfg_zero` |  | boolean | no | `false` |  | Virkjar CFG-zero-frumstillingarsýnatöku, sem lýst er á https://arxiv.org/abs/2503.18886. |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 10 | Stilltu hversu margar myndir á að búa til; þetta val er fast við 1 þegar úttak er streymt. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Öryggisathugun sem skilar svörtum myndum í stað mynda sem merktar eru óöruggar. true virkjar athugun; false slekkur aðeins á henni fyrir heimilaða reikninga, en beiðnir án heimildar eru alltaf athugaðar. |
| `reference_image_url` |  | string (image URL) | no |  |  | Myndslóð sem er notuð fyrir Reference-Only-leiðsögn. |
| `reference_strength` |  | number | no | `0.65` | -3 – 3 | Áhrif viðmiðunarmyndar við reference_only-efnisgerð; án gefinnar viðmiðunarmyndar hefur þessi styrksstilling engin áhrif. |
| `reference_start` |  | number | no | `0` | 0 – 1 | Upphafspunktur viðmiðunarleiðsagnar, gefinn sem hlutfall allra tímaskrefa. |
| `reference_end` |  | number | no | `1` | 0 – 1 | Endapunktur viðmiðunarleiðsagnar, gefinn sem hlutfall allra tímaskrefa. |
| `base_shift` |  | number | no | `0.5` | 0.01 – 5 | Grunnfærslu sem er beitt á tímasett tímaskref. |
| `max_shift` |  | number | no | `1.15` | 0.01 – 5 | Hámarksfærsla sem er beitt á tímasett tímaskref. |
| `output_format` |  | enum (string) | no | `png` | `jpeg`, `png` | Skráarsnið myndarinnar sem verður til. |
| `use_beta_schedule` |  | boolean | no | `false` |  | Stýrir því hvort beta-sigma-gildi séu notuð. |
| `sigma_schedule` |  | string \| null | no |  |  | Sigma-áætlun sem er notuð við hreinsun. |
| `scheduler` |  | enum (string) | no | `euler` | `euler`, `dpmpp_2m` | Tímaáætlari sem er notaður við hreinsun. |
| `negative_prompt` |  | string | no | `` |  | Neikvæð kvaðning sem er sjálfgefið unnin með NAG til að draga úr tilgreindum óæskilegum eiginleikum í myndum sem verða til. |
| `nag_scale` |  | number | no | `3` | ≤ 10, > 1 | Forðun neikvæðrar kvaðningar sem NAG-kvarðinn stýrir: hækkun hans gerir myndina sem verður til ólíkari neikvæðu lýsingunni. |
| `nag_tau` |  | number | no | `2.5` | > 0 | NAG tau-stilling fyrir stöðlun falins ástands; mælt er með að breyta henni ekki. Hækkun hennar veikir stöðlun og getur valdið óvæntum frávikum frá upprunalegu myndinni. |
| `nag_alpha` |  | number | no | `0.25` | ≤ 1, > 0 | NAG alpha ákvarðar hversu mikið jákvæða kvaðningin beinir stöðluðu leiðsögninni sem sameinar jákvæðu og neikvæðu kvaðningarnar. Þessi lokaþyngd gefur jákvæðu kvaðningunni meiri áhrif við lægri gildi og dregur úr endurstýringu við hærri gildi. |
| `nag_end` |  | number | no | `0.25` | ≤ 1, > 0 | NAG-lokun gefin sem hlutfall efnisgerðarskrefa. Upprunalegir athyglivinnsluaðilar FLUX taka við eftir að NAG hefur keyrt í gegnum þetta upphafshlutfall. |

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} | Skráarupplýsingar fyrir myndirnar sem verða til. |
| `timings` | object |  |
| `seed` | integer | Sáðgildi fyrir myndgerð, þar með talið slembivalið gildi ef inntakið innihélt ekkert sáðgildi; annars endurtekur það gefna gildið. |
| `has_nsfw_concepts` | array of boolean | Gefur til kynna hvort NSFW-hugtök komi fyrir í myndunum sem verða til. |
| `prompt` | string | Kvaðning notuð við myndgerð. |

## 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
