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

> עריכת תמונה ב־FLUX.1 [dev] באמצעות מפת שינויים שקובעת את עוצמת השינוי בכל אזור

משנה תמונת מקור אזור אחר אזור, באמצעות תמונת מפת שינויים השולטת במידת השינוי בכל אזור. דורש `prompt`, `image_url` ו־`change_map_image_url`. מקבל גם LoRAs, ControlNets, IP-Adapters ותמונת ייחוס. `num_inference_steps` נע בין 1 ל־50 ו־`num_images` עד 10, עם פלט png או jpeg.

- Model id: `flux-general/differential-diffusion`
- Made by: Black Forest Labs
- Category: Image Editing
- Output: image
- Estimated price per run: $0.138 / image (cheapest run $0.138 (138 API credits))
- Run: `POST https://api.doitong.com/v1/run/flux-general/differential-diffusion`
- Quote: `POST https://api.doitong.com/v1/quote/flux-general/differential-diffusion`
- Docs page: https://doitong.com/he/developers/models/flux-general/differential-diffusion

## Pricing

Price: **$0.138 / 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.138 = 138 API credits (1 image × 138 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/differential-diffusion` 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 |  |  | הנחיה המנחה את יצירת התמונה. |
| `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 לתמונות ניתנות לשחזור: הנחיה ו־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-ים של תמונת הבקרה שמוזגו לתצורה משולבת לצורך יצירת התמונה הסופית; מספר ה־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 | אחוז צעדי הזמן הכוללים שבו ControlNet מתחיל להשפיע על יצירת התמונה. |
| `controlnets[].end_percentage` |  | number | no | `1` | 0 – 1 | אחוז צעדי הזמן הכוללים שבו 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 | אחוז צעדי הזמן הכוללים שבו ControlNet מתחיל להשפיע על יצירת התמונה. |
| `controlnet_unions[].controls[].end_percentage` |  | number | no | `1` | 0 – 1 | אחוז צעדי הזמן הכוללים שבו 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 של תמונת ההתניה שסופקה ל־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 של תמונות למילוי באמצעות הנחיה מחדש. |
| `guidance_scale` |  | number | no | `3.5` | 0 – 20 | עוצמת ההיצמדות להנחיה עבור בחירת תמונה, המבוטאת כ-CFG (Classifier Free Guidance). |
| `real_cfg_scale` |  | number | no | `3.5` | 0 – 5 | עוצמת ההיצמדות להנחיה עבור בחירת תמונה, המבוטאת כ-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 | נקודת ההתחלה של הנחיית הייחוס, המבוטאת כאחוז מכל צעדי הזמן. |
| `reference_end` |  | number | no | `1` | 0 – 1 | נקודת הסיום של הנחיית הייחוס, המבוטאת כאחוז מכל צעדי הזמן. |
| `base_shift` |  | number | no | `0.5` | 0.01 – 5 | הסטת בסיס המוחלת על צעדי הזמן המתוזמנים. |
| `max_shift` |  | number | no | `1.15` | 0.01 – 5 | הסטה מרבית המוחלת על צעדי הזמן המתוזמנים. |
| `output_format` |  | enum (string) | no | `png` | `jpeg`, `png` | פורמט הקובץ של התמונה שהתקבלה. |
| `use_beta_schedule` |  | boolean | no | `false` |  | קובע אם להשתמש ב־beta sigmas. |
| `sigma_schedule` |  | string \| null | no |  |  | לוח הסיגמאות המשמש במהלך הסרת הרעש. |
| `scheduler` |  | enum (string) | no | `euler` | `euler`, `dpmpp_2m` | מתזמן המשמש במהלך הסרת הרעש. |
| `negative_prompt` |  | string | no | `` |  | הנחיה שלילית המעובדת כברירת מחדל באמצעות NAG כדי להרתיע מהמאפיינים הלא רצויים שצוינו בתמונות שנוצרות. |
| `nag_scale` |  | number | no | `3` | ≤ 10, > 1 | הימנעות מהנחיה שלילית הנשלטת על ידי קנה המידה של NAG: הגדלתו הופכת את התמונה שנוצרת לפחות דומה לתיאור השלילי. |
| `nag_tau` |  | number | no | `2.5` | > 0 | הגדרת NAG tau לנרמול מצב חבוי; מומלץ להשאיר אותה ללא שינוי. הגדלתה מחלישה את הנרמול ועלולה לגרום לסטיות בלתי צפויות מהתמונה המקורית. |
| `nag_alpha` |  | number | no | `0.25` | ≤ 1, > 0 | NAG alpha קובע עד כמה ההנחיה החיובית מנתבת מחדש את ההנחיה המנורמלת המשלבת את ההנחיות החיובית והשלילית. שקלול סופי זה מעניק להנחיה החיובית השפעה רבה יותר בהגדרות נמוכות ומפחית את הניתוב מחדש בהגדרות גבוהות. |
| `nag_end` |  | number | no | `0.25` | ≤ 1, > 0 | חיתוך NAG המבוטא כחלק מצעדי היצירה. מעבדי הקשב המקוריים של FLUX נכנסים לפעולה לאחר ש־NAG פעל במשך אותו חלק ראשוני. |
| `image_url` | `image` | string (image URL) | yes |  |  | כתובת URL של תמונה המספקת את התמונה הראשונית. |
| `change_map_image_url` |  | string (image URL) | yes |  |  | כתובת URL המצביעה על מפת השינויים. |
| `strength` |  | number | no | `0.85` | 0.01 – 1 | עוצמת דיפוזיה דיפרנציאלית, משימור המקור ב־0.0 ועד יצירה מחדש מלאה ב־1.0. |

File parameters (`reference_image_url`, `image`, `change_map_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",
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
  "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
  "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## 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/differential-diffusion?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",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
    "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# 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/differential-diffusion?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",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
    "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
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",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
    "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/flux-general/differential-diffusion", 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/differential-diffusion",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
        "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "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/differential-diffusion",
  "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": 138,
    "usd": "0.138",
    "charged": 138,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
    "change_map_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "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 | הנחיה המשמשת במהלך יצירת התמונה. |

## Related models

- [FLUX.1 \[dev\] with Controlnets and Loras](https://doitong.com/developers/models/flux-general.md) (`flux-general`): $0.30 / 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 Kontext \[pro\]](https://doitong.com/developers/models/flux-pro/kontext.md) (`flux-pro/kontext`): $0.04 / image
- [GPT Image 2.5 Edit](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/edit.md) (`openai/gpt-image-2.5/flare/edit`): from $0.12 / image
- [Nano Banana 2 Edit](https://doitong.com/developers/models/nano-banana-2/edit.md) (`nano-banana-2/edit`): from $0.06 / image
- [Nano Banana Pro Edit](https://doitong.com/developers/models/nano-banana-pro/edit.md) (`nano-banana-pro/edit`): from $0.15 / image

## Links

- HTML page: https://doitong.com/developers/models/flux-general/differential-diffusion
- 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/differential-diffusion
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/flux-general/differential-diffusion
