# Post Processing API

> Zana jumuishi ya madoido ya picha inayochanganya chembechembe, urekebishaji wa rangi, mtengano wa rangi, ukungu, vignette, tint na zaidi

Hutekeleza madoido kadhaa kwenye picha moja kwa mwito mmoja, kila moja ikiwashwa kwa swichi ya `enable_`: chembechembe, urekebishaji wa rangi, mtengano wa kromatiki, ukungu, vignette, parabolize na tint. Kila madoido ina viwango vyake, kama mwangaza na utofautishaji kutoka -100 hadi 100, radius ya ukungu hadi 31 na mabadiliko ya chaneli kutoka -20 hadi 20. Ingizo ni `image_url`.

- Model id: `post-processing`
- Made by: Utility
- Category: Image Editing
- Output: image
- Price: $0.001 / request (cheapest run $0.001 (1 API credit))
- Run: `POST https://api.doitong.com/v1/run/post-processing`
- Quote: `POST https://api.doitong.com/v1/quote/post-processing`
- Docs page: https://doitong.com/sw/developers/models/post-processing

## Pricing

Price: **$0.001 / request**. Billed once per request.

The full example input below costs $0.001 = 1 API credit (1 request × 1 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/post-processing` 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 |
|---|---|---|---|---|---|---|
| `image_url` | `image` | string (image URL) | yes |  |  | URL ya picha ya kuchakatwa. |
| `enable_grain` |  | boolean | no | `false` |  | Kigeuza madoido ya chembechembe za filamu. |
| `grain_intensity` |  | number | no | `0.4` | 0 – 1 | Ukali wa chembechembe za filamu madoido yanapowashwa. |
| `grain_scale` |  | number | no | `10` | 1 – 100 | Mizani ya chembechembe za filamu madoido yanapowashwa. |
| `grain_style` |  | enum (string) | no | `modern` | `modern`, `analog`, `kodak`, `fuji`, `cinematic`, `newspaper` | Mtindo unaotumika kwa madoido ya chembechembe za filamu. |
| `enable_color_correction` |  | boolean | no | `false` |  | Kigeuza urekebishaji wa rangi. |
| `temperature` |  | number | no | `0` | -100 – 100 | Marekebisho ya halijoto ya rangi. |
| `brightness` |  | number | no | `0` | -100 – 100 | Marekebisho ya mwangaza wa picha. |
| `contrast` |  | number | no | `0` | -100 – 100 | Marekebisho ya utofautishaji wa picha. |
| `saturation` |  | number | no | `0` | -100 – 100 | Marekebisho ya ujazo wa rangi. |
| `gamma` |  | number | no | `1` | 0.2 – 2.2 | Marekebisho ya gamma. |
| `enable_chromatic` |  | boolean | no | `false` |  | Kigeuza madoido ya upotoshaji wa rangi. |
| `red_shift` |  | integer | no | `0` | -20 – 20 | Kiasi cha uhamishaji wa mkondo mwekundu. |
| `red_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Mwelekeo wa uhamishaji wa mkondo mwekundu. |
| `green_shift` |  | integer | no | `0` | -20 – 20 | Kiasi cha uhamishaji wa mkondo wa kijani. |
| `green_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Mwelekeo wa uhamishaji wa mkondo wa kijani. |
| `blue_shift` |  | integer | no | `0` | -20 – 20 | Kiasi cha uhamishaji wa mkondo wa bluu. |
| `blue_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Mwelekeo wa uhamishaji wa mkondo wa bluu. |
| `enable_blur` |  | boolean | no | `false` |  | Kigeuza madoido ya ukungu. |
| `blur_type` |  | enum (string) | no | `gaussian` | `gaussian`, `kuwahara` | Mbinu ya ukungu ya kutumia. |
| `blur_radius` |  | integer | no | `3` | 0 – 31 | Radi inayotumika kuweka ukungu. |
| `blur_sigma` |  | number | no | `1` | 0.1 – 10 | Thamani ya sigma ya ukungu wa Gaussian. |
| `enable_vignette` |  | boolean | no | `false` |  | Kigeuza madoido ya vignette. |
| `vignette_strength` |  | number | no | `0.5` | 0 – 10 | Nguvu ya vignette madoido yanapowashwa. |
| `enable_parabolize` |  | boolean | no | `false` |  | Kigeuza madoido ya parabolize. |
| `parabolize_coeff` |  | number | no | `1` | -10 – 10 | Kigezo kinachotumiwa na madoido ya parabolize. |
| `vertex_x` |  | number | no | `0.5` | 0 – 1 | Kuratibu X ya kipeo. |
| `vertex_y` |  | number | no | `0.5` | 0 – 1 | Kuratibu Y ya kipeo. |
| `enable_tint` |  | boolean | no | `false` |  | Kigeuza madoido ya kupaka rangi. |
| `tint_strength` |  | number | no | `1` | 0.1 – 1 | Nguvu ya madoido ya upakaji rangi. |
| `tint_mode` |  | enum (string) | no | `sepia` | `sepia`, `red`, `green`, `blue`, `cyan`, `magenta`, `yellow`, `purple`, `orange`, `warm`, `cool`, `lime`, `navy`, `vintage`, `rose`, `teal`, `maroon`, `peach`, `lavender`, `olive` | Hali ya rangi inayotumika kupaka rangi. |
| `enable_dissolve` |  | boolean | no | `false` |  | Kigeuza madoido ya kuyeyusha. |
| `dissolve_image_url` |  | string (image URL) | no | `` |  | URL ya picha ya pili, inayotumika kwa madoido ya kuyeyusha. |
| `dissolve_factor` |  | number | no | `0.5` | 0 – 1 | Kigezo cha kuchanganya kwa madoido ya kuyeyusha. |
| `enable_dodge_burn` |  | boolean | no | `false` |  | Kigeuza madoido ya dodge na burn. |
| `dodge_burn_intensity` |  | number | no | `0.5` | 0 – 1 | Ukali wa madoido ya dodge na burn. |
| `dodge_burn_mode` |  | enum (string) | no | `dodge` | `dodge`, `burn`, `dodge_and_burn`, `burn_and_dodge`, `color_dodge`, `color_burn`, `linear_dodge`, `linear_burn` | Hali inayotumika kwa madoido ya dodge na burn. |
| `enable_glow` |  | boolean | no | `false` |  | Kigeuza madoido ya mwanga. |
| `glow_intensity` |  | number | no | `1` | 0 – 5 | Ukali wa madoido ya mwanga. |
| `glow_radius` |  | integer | no | `5` | 1 – 50 | Radi inayotumika kuweka ukungu kwenye mwanga. |
| `enable_sharpen` |  | boolean | no | `false` |  | Kigeuza madoido ya kunoa. |
| `sharpen_mode` |  | enum (string) | no | `basic` | `basic`, `smart`, `cas` | Mbinu ya kunoa ya kutumia. |
| `sharpen_radius` |  | integer | no | `1` | 1 – 15 | Radi inayotumika kunoa katika hali ya msingi. |
| `sharpen_alpha` |  | number | no | `1` | 0.1 – 5 | Ukali wa kunoa katika hali ya msingi. |
| `noise_radius` |  | integer | no | `7` | 1 – 25 | Radi inayotumika kwa kelele katika kunoa mahiri. |
| `preserve_edges` |  | number | no | `0.75` | 0 – 1 | Kiwango cha kuhifadhi kingo. |
| `smart_sharpen_strength` |  | number | no | `5` | 0 – 25 | Ukali wa kunoa mahiri. |
| `smart_sharpen_ratio` |  | number | no | `0.5` | 0 – 1 | Uwiano wa kuchanganya kwa kunoa mahiri. |
| `cas_amount` |  | number | no | `0.8` | 0 – 1 | Ukali wa kunoa kwa CAS. |
| `enable_solarize` |  | boolean | no | `false` |  | Ikiwa solarization itatumika. |
| `solarize_threshold` |  | number | no | `0.5` | 0 – 1 | Kizingiti cha solarization. |
| `enable_desaturate` |  | boolean | no | `false` |  | Ikiwa uondoaji wa ujazo wa rangi utatumika. |
| `desaturate_factor` |  | number | no | `1` | 0 – 1 | Kiwango cha uondoaji wa ujazo wa rangi. |
| `desaturate_method` |  | enum (string) | no | `luminance (Rec.709)` | `luminance (Rec.709)`, `luminance (Rec.601)`, `average`, `lightness` | Mbinu inayotumika kuondoa ujazo wa rangi. |

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

A fuller example:

```json
{
  "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/post-processing?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "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/post-processing?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "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 = {
    "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/post-processing", 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": "post-processing",
      "input": {
        "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": "post-processing",
  "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": 1,
    "usd": "0.001",
    "charged": 1,
    "refunded": 0
  },
  "input": {
    "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",
        "content_type": "image/jpeg",
        "file_name": "0-output.jpeg",
        "file_size": 1843200,
        "width": 1024,
        "height": 768
      }
    ]
  },
  "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} | Picha zinazotokana na uchakataji. |

## Related models

- [Post Processing Blur](https://doitong.com/developers/models/post-processing/blur.md) (`post-processing/blur`): $0.001 / image
- [Post Processing Chromatic Aberration](https://doitong.com/developers/models/post-processing/chromatic-aberration.md) (`post-processing/chromatic-aberration`): $0.001 / image
- [Post Processing Color Correction](https://doitong.com/developers/models/post-processing/color-correction.md) (`post-processing/color-correction`): $0.001 / image
- [Post Processing Color Tint](https://doitong.com/developers/models/post-processing/color-tint.md) (`post-processing/color-tint`): $0.001 / image
- [Post Processing Desaturate](https://doitong.com/developers/models/post-processing/desaturate.md) (`post-processing/desaturate`): $0.001 / image
- [Post Processing Dissolve](https://doitong.com/developers/models/post-processing/dissolve.md) (`post-processing/dissolve`): $0.001 / image
- [Post Processing Dodge Burn](https://doitong.com/developers/models/post-processing/dodge-burn.md) (`post-processing/dodge-burn`): $0.001 / image
- [Post Processing Grain](https://doitong.com/developers/models/post-processing/grain.md) (`post-processing/grain`): $0.001 / image

## Links

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