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

> FLUX.1 [dev] text-to-image με LoRAs, ControlNets, IP-Adapters, EasyControl και καθοδήγηση από εικόνα αναφοράς

Δημιουργεί εικόνες από ένα `prompt`, επιτρέποντας πολλές μεθόδους καθορισμού συνθηκών: `loras`, `control_loras`, `controlnets`, `controlnet_unions`, `ip_adapters` και `easycontrols`, καθώς και `fill_image` για περιοχές με μάσκα. Δέχεται επίσης `reference_image_url`, αρνητικά prompt και επιλογή χρονοπρογραμματιστή euler ή dpmpp_2m. Έως 10 εικόνες ανά κλήση, σε png ή 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/el/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 |  |  | Prompt που καθοδηγεί την παραγωγή εικόνας. |
| `image_size` |  | object {width, height} \| enum (string) | no |  | `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Διαστάσεις της παραγόμενης εικόνας. |
| `num_inference_steps` |  | integer | no | `28` | 1 – 50 | Αριθμός βημάτων συμπερασμού προς εκτέλεση. |
| `seed` |  | integer \| null | no |  |  | Seed για αναπαραγώγιμες εικόνες: ίδιο prompt και seed παράγουν ίδια εικόνα όταν η έκδοση του μοντέλου δεν αλλάζει. |
| `loras` |  | array of object {path, scale} | no | `[]` |  | LoRA των οποίων το συνδυασμένο αποτέλεσμα παράγει την εικόνα εξόδου, χωρίς περιορισμό στον αριθμό τους. |
| `loras[].path` |  | string | yes |  |  | Θέση των βαρών LoRA, καθορισμένη ως URL ή διαδρομή. |
| `loras[].scale` |  | object \| number | no | `1` |  | Κλιμάκωση που εφαρμόζεται στα βάρη LoRA πριν συγχωνευτούν στο βασικό μοντέλο. Παρέχετε λεξικό της μορφής {"layer_name":layer_scale} για να ορίσετε κλιμάκωση μεμονωμένων επιπέδων· τα μη καθορισμένα επίπεδα χρησιμοποιούν 1.0. |
| `control_loras` |  | array of object {path, scale, control_image_url, preprocess} | no | `[]` |  | LoRA εικόνων ελέγχου που συγχωνεύονται σε ενιαία διαμόρφωση για την παραγωγή της τελικής εικόνας· ο αριθμός τους είναι απεριόριστος. |
| `control_loras[].path` |  | string | yes |  |  | Θέση των βαρών LoRA, καθορισμένη ως URL ή διαδρομή. |
| `control_loras[].scale` |  | object \| number | no | `1` |  | Κλιμάκωση που εφαρμόζεται στα βάρη LoRA πριν συγχωνευτούν στο βασικό μοντέλο. Παρέχετε λεξικό της μορφής {"layer_name":layer_scale} για να ορίσετε κλιμάκωση μεμονωμένων επιπέδων· τα μη καθορισμένα επίπεδα χρησιμοποιούν 1.0. |
| `control_loras[].control_image_url` |  | string (image URL) | yes |  |  | URL εικόνας που παρέχει την εικόνα ελέγχου. |
| `control_loras[].preprocess` |  | enum (string) | no | `None` | `canny`, `depth`, `None` | Μέθοδος προεπεξεργασίας που εφαρμόζεται στην παρεχόμενη εικόνα. |
| `controlnets` |  | array of object {path, config_url, variant, control_image_url, mask_image_url, mask_threshold, conditioning_scale, start_percentage, end_percentage} | no | `[]` |  | Διαμόρφωση ControlNet για παραγωγή εικόνας, επί του παρόντος περιορισμένη σε ένα μόνο ControlNet. |
| `controlnets[].path` |  | string | yes |  |  | Τοποθεσία βάρους ControlNet, καθορισμένη ως URL ή διαδρομή. |
| `controlnets[].config_url` |  | string \| null | no |  |  | Προαιρετικό URL που παραπέμπει στο αρχείο config.json του ControlNet. |
| `controlnets[].variant` |  | string \| null | no |  |  | Προαιρετική παραλλαγή για χρήση με κλειδί αποθετηρίου Hugging Face. |
| `controlnets[].control_image_url` |  | string (image URL) | yes |  |  | URL εικόνας που παρέχει την εικόνα ελέγχου. |
| `controlnets[].mask_image_url` |  | string (image URL) | no |  |  | URL μάσκας που σχετίζεται με την εικόνα ελέγχου. |
| `controlnets[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Τιμή κατωφλίου μάσκας. |
| `controlnets[].conditioning_scale` |  | number | no | `1` | 0 – 2 | Κλιμάκωση που εφαρμόζεται στα βάρη ControlNet πριν συγχωνευτούν στο βασικό μοντέλο. |
| `controlnets[].start_percentage` |  | number | no | `0` | 0 – 1 | Ποσοστό των συνολικών timestep στο οποίο το ControlNet αρχίζει να επηρεάζει την παραγωγή εικόνας. |
| `controlnets[].end_percentage` |  | number | no | `1` | 0 – 1 | Ποσοστό των συνολικών timestep στο οποίο το ControlNet παύει να επηρεάζει την παραγωγή εικόνας. |
| `controlnet_unions` |  | array of object {path, config_url, variant, controls} | no | `[]` |  | Διαμόρφωση ένωσης ControlNet για παραγωγή εικόνας, υπό τον τρέχοντα περιορισμό ενός ControlNet. |
| `controlnet_unions[].path` |  | string | yes |  |  | Τοποθεσία βάρους ControlNet, καθορισμένη ως URL ή διαδρομή. |
| `controlnet_unions[].config_url` |  | string \| null | no |  |  | Προαιρετικό URL που παραπέμπει στο αρχείο config.json του ControlNet. |
| `controlnet_unions[].variant` |  | string \| null | no |  |  | Προαιρετική παραλλαγή για χρήση με κλειδί αποθετηρίου Hugging Face. |
| `controlnet_unions[].controls` |  | array of object {control_image_url, mask_image_url, control_mode, conditioning_scale, mask_threshold, start_percentage, end_percentage} | yes |  |  | Εικόνες ελέγχου και σχετικές λειτουργίες που παρέχονται στο ControlNet. |
| `controlnet_unions[].controls[].control_image_url` |  | string (image URL) | yes |  |  | URL εικόνας που παρέχει την εικόνα ελέγχου. |
| `controlnet_unions[].controls[].mask_image_url` |  | string (image URL) | no |  |  | URL μάσκας που σχετίζεται με την εικόνα ελέγχου. |
| `controlnet_unions[].controls[].control_mode` |  | enum (string) | yes |  | `canny`, `tile`, `depth`, `blur`, `pose`, `gray`, `low-quality` | Λειτουργία ελέγχου που χρησιμοποιείται από το Flux Controlnet Union. Επιλογές: canny καθοδηγεί την παραγωγή με ακμές· tile με πλακίδια· depth με χάρτη βάθους σε κλίμακα του γκρι· blur θολώνει την εικόνα· pose καθοδηγεί με τη στάση της εικόνας· gray μετατρέπει την εικόνα σε κλίμακα του γκρι· low-quality παράγει έκδοση χαμηλής ποιότητας της εικόνας. |
| `controlnet_unions[].controls[].conditioning_scale` |  | number | no | `1` | 0 – 2 | Κλιμάκωση που εφαρμόζεται στα βάρη ControlNet πριν συγχωνευτούν στο βασικό μοντέλο. |
| `controlnet_unions[].controls[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Τιμή κατωφλίου μάσκας. |
| `controlnet_unions[].controls[].start_percentage` |  | number | no | `0` | 0 – 1 | Ποσοστό των συνολικών timestep στο οποίο το ControlNet αρχίζει να επηρεάζει την παραγωγή εικόνας. |
| `controlnet_unions[].controls[].end_percentage` |  | number | no | `1` | 0 – 1 | Ποσοστό των συνολικών timestep στο οποίο το ControlNet παύει να επηρεάζει την παραγωγή εικόνας. |
| `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 που εφαρμόζεται κατά την παραγωγή εικόνας. |
| `ip_adapters[].path` |  | string | yes |  |  | Τοποθεσία IP-Adapter στο Hugging Face. |
| `ip_adapters[].subfolder` |  | string \| null | no |  |  | Υποφάκελος που περιέχει τα βάρη ip_adapter. |
| `ip_adapters[].weight_name` |  | string \| null | no |  |  | Όνομα αρχείου safetensors για τα βάρη του IP-Adapter. |
| `ip_adapters[].image_encoder_path` |  | string | yes |  |  | Τοποθεσία κωδικοποιητή εικόνας IP-Adapter, όπως 'openai/clip-vit-large-patch14'. |
| `ip_adapters[].image_encoder_subfolder` |  | string \| null | no |  |  | Υποφάκελος που περιέχει τα βάρη του κωδικοποιητή εικόνας. |
| `ip_adapters[].image_encoder_weight_name` |  | string \| null | no |  |  | Όνομα κωδικοποιητή εικόνας. |
| `ip_adapters[].image_url` |  | string (image URL) | yes |  |  | URL εικόνας conditioning που παρέχεται στο IP-Adapter. |
| `ip_adapters[].mask_image_url` |  | string (image URL) \| null | no |  |  | URL μάσκας που σχετίζεται με την εικόνα ελέγχου. |
| `ip_adapters[].mask_threshold` |  | number | no | `0.5` | 0.01 – 0.99 | Τιμή κατωφλίου μάσκας. |
| `ip_adapters[].scale` |  | number | yes |  |  | Συντελεστής κλιμάκωσης IP-Adapter. |
| `easycontrols` |  | array of object {control_method_url, scale, image_url, image_control_type} | no | `[]` |  | Είσοδοι EasyControl που εφαρμόζονται κατά την παραγωγή εικόνας. |
| `easycontrols[].control_method_url` |  | string | yes |  |  | URL βάρους safetensor της μεθόδου ελέγχου ή υποστηριζόμενο αναγνωριστικό: `canny`, `depth`, `hedsketch`, `inpainting`, `pose`, `seg`, `subject`, `ghibli`. |
| `easycontrols[].scale` |  | number | no | `1` | 0 – 2 | Συντελεστής κλιμάκωσης της μεθόδου ελέγχου. |
| `easycontrols[].image_url` |  | string (image URL) | yes |  |  | URL εικόνας που παρέχει είσοδο ελέγχου. |
| `easycontrols[].image_control_type` |  | enum (string) | yes |  | `subject`, `spatial` | Λειτουργία ελέγχου εικόνας· δέχεται είτε `spatial` είτε `subject`. |
| `fill_image` |  | object {fill_image_url} \| null | no |  |  | Εικόνα εισόδου που καθοδηγεί την παραγωγή και μπορεί να παρέχει περιεχόμενο για καλυμμένες περιοχές. |
| `fill_image.fill_image_url` |  | string (image URL) \| array of image URL | no | `[]` |  | URL εικόνων για γέμισμα μέσω redux prompting. |
| `guidance_scale` |  | number | no | `3.5` | 0 – 20 | Ισχύς προσήλωσης στο prompt για την επιλογή εικόνας, εκφρασμένη ως CFG (Classifier Free Guidance). |
| `real_cfg_scale` |  | number | no | `3.5` | 0 – 5 | Ισχύς προσήλωσης στο prompt για την επιλογή εικόνας, εκφρασμένη ως CFG (Classifier Free Guidance). |
| `use_real_cfg` |  | boolean | no | `false` |  | Διακόπτης κλασικού CFG, ενεργοποιείται αυτόματα με το XLabs IP-Adapter v1. Η συμπεριφορά καθοδήγησης ταιριάζει με μοντέλα όπως τα SD1.5 και SDXL. |
| `use_cfg_zero` |  | boolean | no | `false` |  | Ενεργοποιεί δειγματοληψία αρχικοποίησης CFG-zero, όπως περιγράφεται στη διεύθυνση https://arxiv.org/abs/2503.18886. |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 10 | Ορίστε πόσες εικόνες θα παραχθούν· η επιλογή ορίζεται σε 1 όταν η έξοδος μεταδίδεται σε ροή. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Έλεγχος ασφάλειας, ο οποίος επιστρέφει μαύρες εικόνες αντί για εικόνες που επισημαίνονται ως μη ασφαλείς. Η τιμή true ενεργοποιεί τον έλεγχο· η false τον απενεργοποιεί μόνο για εξουσιοδοτημένους λογαριασμούς, ενώ τα αιτήματα χωρίς εξουσιοδότηση ελέγχονται πάντα. |
| `reference_image_url` |  | string (image URL) | no |  |  | URL εικόνας που χρησιμοποιείται για καθοδήγηση Reference-Only. |
| `reference_strength` |  | number | no | `0.65` | -3 – 3 | Επίδραση της εικόνας αναφοράς κατά την παραγωγή reference_only· χωρίς παρεχόμενη εικόνα αναφοράς, αυτή η ρύθμιση ισχύος δεν έχει αποτέλεσμα. |
| `reference_start` |  | number | no | `0` | 0 – 1 | Σημείο έναρξης καθοδήγησης αναφοράς, εκφρασμένο ως ποσοστό όλων των timestep. |
| `reference_end` |  | number | no | `1` | 0 – 1 | Σημείο λήξης καθοδήγησης αναφοράς, εκφρασμένο ως ποσοστό όλων των timestep. |
| `base_shift` |  | number | no | `0.5` | 0.01 – 5 | Βασική μετατόπιση που εφαρμόζεται στα προγραμματισμένα timestep. |
| `max_shift` |  | number | no | `1.15` | 0.01 – 5 | Μέγιστη μετατόπιση που εφαρμόζεται στα προγραμματισμένα timestep. |
| `output_format` |  | enum (string) | no | `png` | `jpeg`, `png` | Μορφή αρχείου της τελικής εικόνας. |
| `use_beta_schedule` |  | boolean | no | `false` |  | Καθορίζει αν θα χρησιμοποιηθούν beta sigmas. |
| `sigma_schedule` |  | string \| null | no |  |  | Πρόγραμμα sigma που χρησιμοποιείται κατά την αποθορυβοποίηση. |
| `scheduler` |  | enum (string) | no | `euler` | `euler`, `dpmpp_2m` | Scheduler που χρησιμοποιείται κατά την αποθορυβοποίηση. |
| `negative_prompt` |  | string | no | `` |  | Αρνητικό prompt που επεξεργάζεται από προεπιλογή με NAG για να αποθαρρύνει τα καθορισμένα ανεπιθύμητα χαρακτηριστικά στις παραγόμενες εικόνες. |
| `nag_scale` |  | number | no | `3` | ≤ 10, > 1 | Αποφυγή αρνητικού prompt που ελέγχεται από την κλίμακα NAG: η αύξησή της κάνει την παραγόμενη εικόνα λιγότερο παρόμοια με την αρνητική περιγραφή. |
| `nag_tau` |  | number | no | `2.5` | > 0 | Ρύθμιση NAG tau για κανονικοποίηση hidden state· συνιστάται να παραμείνει αμετάβλητη. Η αύξησή της αποδυναμώνει την κανονικοποίηση και μπορεί να προκαλέσει απρόβλεπτες αποκλίσεις από την αρχική εικόνα. |
| `nag_alpha` |  | number | no | `0.25` | ≤ 1, > 0 | Το NAG alpha καθορίζει πόσο το θετικό prompt ανακατευθύνει την κανονικοποιημένη καθοδήγηση που συνδυάζει τα θετικά και αρνητικά prompt. Αυτή η τελική στάθμιση δίνει μεγαλύτερη επιρροή στο θετικό prompt σε χαμηλότερες ρυθμίσεις και μειώνει την ανακατεύθυνση σε υψηλότερες. |
| `nag_end` |  | number | no | `0.25` | ≤ 1, > 0 | Όριο NAG εκφρασμένο ως αναλογία των βημάτων παραγωγής. Οι αρχικοί attention processors του FLUX αναλαμβάνουν αφού το NAG εκτελεστεί για αυτή την αρχική αναλογία. |

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} | Πληροφορίες αρχείου για τις εικόνες που παράγονται. |
| `timings` | object |  |
| `seed` | integer | Seed παραγωγής εικόνας, συμπεριλαμβανομένης της τυχαία επιλεγμένης τιμής αν η είσοδος δεν περιείχε seed· διαφορετικά, επαναλαμβάνει την παρεχόμενη τιμή. |
| `has_nsfw_concepts` | array of boolean | Υποδεικνύει αν εμφανίζονται έννοιες NSFW στις παραγόμενες εικόνες. |
| `prompt` | string | Prompt που χρησιμοποιείται κατά την παραγωγή εικόνας. |

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