# Fooocus API

> انداز کے پری سیٹس، LoRA مرجنگ، ریفائنر آپشن اور تصویر پر مبنی کنٹرول موڈز والا متن سے تصویر جنریٹر

Fooocus کے ڈیفالٹ انداز کے اسٹیک سے پرامپٹ کی بنیاد پر تصاویر بناتا ہے۔ `performance` موڈ (Speed، Quality، Extreme Speed، Lightning) منتخب کریں، `sharpness` اور `aspect_ratio` مقرر کریں، اور 1 سے 4 تصاویر کی درخواست کریں۔ زیادہ سے زیادہ 5 LoRAs ضم کی جا سکتی ہیں، جبکہ اختیاری کنٹرول تصویر ImagePrompt، PyraCanny، CPDS یا FaceSwap رہنمائی کو سپورٹ کرتی ہے۔ آؤٹ پٹ png، jpeg یا webp ہے۔

- Model id: `fooocus`
- Made by: Open model
- Category: Text to Image
- Output: image
- Estimated price per run: $0.444 / image (cheapest run $0.444 (444 API credits))
- Run: `POST https://api.doitong.com/v1/run/fooocus`
- Quote: `POST https://api.doitong.com/v1/quote/fooocus`
- Docs page: https://doitong.com/ur/developers/models/fooocus

## Pricing

Price: **$0.444 / 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.444 = 444 API credits (1 image × 444 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/fooocus` 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 | no | `` |  | جتنی ممکن ہو تفصیل کے ساتھ مطلوبہ تصویر بیان کریں تاکہ بہترین نتائج حاصل ہوں۔ |
| `negative_prompt` |  | string | no | `` |  | خارج کی جانے والی تصویر کی تفصیلات بتانے والا منفی پرامپٹ، مثلاً رنگ، اشیا، مناظر یا باریک خصوصیات۔ مثالوں میں مونچھ، دھندلا پن یا کم ریزولوشن شامل ہیں۔ |
| `styles` |  | array of enum (string) | no | `["Fooocus Enhance","Fooocus Sharp","Fooocus V2"]` |  | تخلیق کے دوران لاگو کیا جانے والا انداز۔ |
| `performance` |  | enum (string) | no | `Extreme Speed` | `Speed`, `Quality`, `Extreme Speed`, `Lightning` | کارکردگی کا انتخاب: Speed یا Quality۔ |
| `guidance_scale` |  | number | no | `4` | 1 – 30 | تصویر کے انتخاب کے لیے پرامپٹ کی پابندی کی طاقت، CFG (Classifier Free Guidance) کے طور پر ظاہر کی جاتی ہے۔ |
| `sharpness` |  | number | no | `2` | 0 – 30 | آؤٹ پٹ تصویر کی شارپنس کی ترتیب۔ اسے بڑھانے سے تصویر اور اس کی ساختیں زیادہ واضح ہو جاتی ہیں۔ |
| `aspect_ratio` |  | string | no | `1024x1024` |  | آؤٹ پٹ تصویر کے ابعاد، presets سے منتخب یا custom width اور height کے طور پر متعین کیے جاتے ہیں۔ دونوں custom dimensions کو 8 سے قابل تقسیم ہونا چاہیے۔ |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 4 | ہر درخواست میں تخلیق کی جانے والی تصاویر کی تعداد۔ |
| `loras` |  | array of object {path, scale} | no | `[{"path":"https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors","scale":0.1}]` |  | حتمی تصویر کی تخلیق کے لیے merge کیا جانے والا LoRA انتخاب؛ زیادہ سے زیادہ 5 LoRAs۔ |
| `loras[].path` |  | string | yes |  |  | LoRA weights کا مقام، URL یا path کے طور پر۔ |
| `loras[].scale` |  | number | no | `0.1` | 0 – 1 | بنیادی ماڈل میں ضم کرنے سے پہلے LoRA weight پر لاگو ہونے والا multiplier۔ |
| `refiner_model` |  | enum (string) | no | `None` | `None`, `realisticVisionV60B1_v51VAE.safetensors` | Refiner کا انتخاب: SDXL یا SD 1.5۔ |
| `refiner_switch` |  | number | no | `0.8` | 0 – 1 | Refiner switch value: حقیقی SD1.5 ماڈلز کے ساتھ 0.4، anime SD1.5 ماڈلز کے ساتھ 0.667، اور XL-refiners کے ساتھ 0.8 استعمال کریں۔ دو SDXL ماڈلز کے درمیان switching کے لیے کوئی بھی قدر استعمال کی جا سکتی ہے۔ |
| `output_format` |  | enum (string) | no | `jpeg` | `png`, `jpeg`, `webp` | نتیجہ خیز تصویر کا فائل فارمیٹ۔ |
| `seed` |  | integer \| null | no |  |  | Stable Diffusion میں تصاویر دوبارہ بنانے کے لیے seed۔ ماڈل ورژن، پرامپٹ اور seed یکساں رکھ کر ہر بار تصویر بالکل دوبارہ بنائی جا سکتی ہے۔ |
| `control_image_url` |  | string (image URL) \| null | no |  |  | حوالہ جاتی تصویر جو تصویر کی تخلیق کی رہنمائی کرتی ہے۔ |
| `control_type` |  | enum (string) | no | `PyraCanny` | `ImagePrompt`, `PyraCanny`, `CPDS`, `FaceSwap` | تصویر کو کنٹرول کرنے کا طریقہ۔ |
| `control_image_weight` |  | number | no | `1` | 0 – 2 | کنٹرول تصویر کی طاقت، جو آؤٹ پٹ اور کنٹرول تصویر کے درمیان مشابہت کی سطح طے کرتی ہے۔ |
| `control_image_stop_at` |  | number | no | `1` | 0 – 1 | کنٹرول تصویر کی stopping value، جو طے کرتی ہے کہ آؤٹ پٹ کنٹرول تصویر سے کتنی قریب مشابہ ہوگی۔ |
| `inpaint_image_url` |  | string (image URL) \| null | no |  |  | اِن پینٹنگ کے دوران استعمال ہونے والی حوالہ جاتی تصویر۔ |
| `mask_image_url` |  | string (image URL) \| null | no |  |  | تصویر کی تخلیق کے دوران لاگو ہونے والی ماسک تصویر۔ |
| `mixing_image_prompt_and_inpaint` |  | boolean | no | `false` |  |  |
| `enable_safety_checker` |  | boolean | no | `true` |  | Safety checker toggle: false صرف اکاؤنٹ کی اجازت کے ساتھ checking کو غیر فعال کرتا ہے۔ اس اجازت کے بغیر درخواستوں کی ہمیشہ جانچ ہوتی ہے، اور غیر محفوظ تصاویر کو سیاہ تصاویر سے بدل دیا جاتا ہے۔ |

File parameters (`control_image_url`, `inpaint_image_url`, `mask_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
{}
```

A fuller example:

```json
{
  "prompt": ""
}
```

## 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/fooocus?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": ""
  }'

# 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/fooocus?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": ""
  }),
});
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": "",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/fooocus", 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": "fooocus",
      "input": {
        "prompt": ""
      },
      "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": "fooocus",
  "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": 444,
    "usd": "0.444",
    "charged": 444,
    "refunded": 0
  },
  "input": {
    "prompt": ""
  },
  "output": {
    "images": [
      {
        "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
        "content_type": "image/jpeg",
        "file_name": "0-output.jpeg",
        "file_size": 1843200,
        "width": 1024,
        "height": 768
      }
    ],
    "timings": {},
    "has_nsfw_concepts": [
      false
    ]
  },
  "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, content_type, file_name, file_size, width, height} | تخلیق شدہ تصویر کی فائل کی معلومات۔ |
| `timings` | object | تخلیق میں گزرا ہوا وقت۔ |
| `has_nsfw_concepts` | array of boolean | بتاتا ہے کہ تخلیق کردہ تصاویر میں NSFW تصورات موجود ہیں یا نہیں۔ |

## Related models

- [Fooocus Image Prompt](https://doitong.com/developers/models/fooocus/image-prompt.md) (`fooocus/image-prompt`): $0.085 / image
- [Fooocus Inpainting](https://doitong.com/developers/models/fooocus/inpaint.md) (`fooocus/inpaint`): $0.055 / image
- [Fooocus Upscale or Vary](https://doitong.com/developers/models/fooocus/upscale-or-vary.md) (`fooocus/upscale-or-vary`): $0.007 / 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
- [GPT Image 2.5 Text to Image](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/text-to-image.md) (`openai/gpt-image-2.5/flare/text-to-image`): from $0.008 / image

## Links

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