# Post Processing API

> All-in-one na tool para sa mga effect ng larawan na pinagsasama ang grain, color correction, chromatic shift, blur, vignette, tint at iba pa

Naglalapat ng ilang effect sa isang larawan sa iisang call, na bawat isa ay pinapagana gamit ang `enable_` switch: grain, color correction, chromatic aberration, blur, vignette, parabolize at tint. May sariling range ang bawat effect, gaya ng brightness at contrast mula -100 hanggang 100, blur radius hanggang 31 at channel shift mula -20 hanggang 20. Ang input ay `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/fil/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 ng larawan para sa pagproseso. |
| `enable_grain` |  | boolean | no | `false` |  | Toggle para sa film grain effect. |
| `grain_intensity` |  | number | no | `0.4` | 0 – 1 | Intensity ng film grain kapag aktibo ang effect. |
| `grain_scale` |  | number | no | `10` | 1 – 100 | Scale ng film grain kapag aktibo ang effect. |
| `grain_style` |  | enum (string) | no | `modern` | `modern`, `analog`, `kodak`, `fuji`, `cinematic`, `newspaper` | Style na ginagamit para sa film grain effect. |
| `enable_color_correction` |  | boolean | no | `false` |  | Toggle para sa color correction. |
| `temperature` |  | number | no | `0` | -100 – 100 | Pagsasaayos sa color temperature. |
| `brightness` |  | number | no | `0` | -100 – 100 | Pagsasaayos sa liwanag ng larawan. |
| `contrast` |  | number | no | `0` | -100 – 100 | Pagsasaayos sa contrast ng larawan. |
| `saturation` |  | number | no | `0` | -100 – 100 | Pagsasaayos sa color saturation. |
| `gamma` |  | number | no | `1` | 0.2 – 2.2 | Pagsasaayos sa gamma. |
| `enable_chromatic` |  | boolean | no | `false` |  | Toggle para sa chromatic aberration. |
| `red_shift` |  | integer | no | `0` | -20 – 20 | Halaga ng displacement para sa red channel. |
| `red_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Direksyon ng displacement para sa red channel. |
| `green_shift` |  | integer | no | `0` | -20 – 20 | Halaga ng displacement para sa green channel. |
| `green_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Direksyon ng displacement para sa green channel. |
| `blue_shift` |  | integer | no | `0` | -20 – 20 | Halaga ng displacement para sa blue channel. |
| `blue_direction` |  | enum (string) | no | `horizontal` | `horizontal`, `vertical` | Direksyon ng displacement para sa blue channel. |
| `enable_blur` |  | boolean | no | `false` |  | Toggle para sa blur effect. |
| `blur_type` |  | enum (string) | no | `gaussian` | `gaussian`, `kuwahara` | Paraan ng blur na gagamitin. |
| `blur_radius` |  | integer | no | `3` | 0 – 31 | Radius na ginagamit para sa pag-blur. |
| `blur_sigma` |  | number | no | `1` | 0.1 – 10 | Sigma value ng Gaussian blur. |
| `enable_vignette` |  | boolean | no | `false` |  | Toggle para sa vignette effect. |
| `vignette_strength` |  | number | no | `0.5` | 0 – 10 | Lakas ng vignette kapag aktibo ang effect. |
| `enable_parabolize` |  | boolean | no | `false` |  | Toggle para sa parabolize effect. |
| `parabolize_coeff` |  | number | no | `1` | -10 – 10 | Coefficient na ginagamit ng parabolize effect. |
| `vertex_x` |  | number | no | `0.5` | 0 – 1 | X coordinate ng vertex. |
| `vertex_y` |  | number | no | `0.5` | 0 – 1 | Y coordinate ng vertex. |
| `enable_tint` |  | boolean | no | `false` |  | Toggle para sa color tint effect. |
| `tint_strength` |  | number | no | `1` | 0.1 – 1 | Lakas ng tint effect. |
| `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` | Color mode na ginagamit para sa tinting. |
| `enable_dissolve` |  | boolean | no | `false` |  | Toggle para sa dissolve effect. |
| `dissolve_image_url` |  | string (image URL) | no | `` |  | URL ng pangalawang larawan na ginagamit para sa dissolve effect. |
| `dissolve_factor` |  | number | no | `0.5` | 0 – 1 | Blending factor para sa dissolve effect. |
| `enable_dodge_burn` |  | boolean | no | `false` |  | Toggle para sa dodge and burn effect. |
| `dodge_burn_intensity` |  | number | no | `0.5` | 0 – 1 | Intensity ng dodge and burn effect. |
| `dodge_burn_mode` |  | enum (string) | no | `dodge` | `dodge`, `burn`, `dodge_and_burn`, `burn_and_dodge`, `color_dodge`, `color_burn`, `linear_dodge`, `linear_burn` | Mode na ginagamit para sa dodge and burn effect. |
| `enable_glow` |  | boolean | no | `false` |  | Toggle para sa glow effect. |
| `glow_intensity` |  | number | no | `1` | 0 – 5 | Intensity ng glow effect. |
| `glow_radius` |  | integer | no | `5` | 1 – 50 | Radius na ginagamit para i-blur ang glow. |
| `enable_sharpen` |  | boolean | no | `false` |  | Toggle para sa sharpening effect. |
| `sharpen_mode` |  | enum (string) | no | `basic` | `basic`, `smart`, `cas` | Paraan ng sharpening na gagamitin. |
| `sharpen_radius` |  | integer | no | `1` | 1 – 15 | Radius na ginagamit para sa sharpening sa basic mode. |
| `sharpen_alpha` |  | number | no | `1` | 0.1 – 5 | Intensity ng sharpening sa basic mode. |
| `noise_radius` |  | integer | no | `7` | 1 – 25 | Radius na ginagamit para sa noise sa smart sharpening. |
| `preserve_edges` |  | number | no | `0.75` | 0 – 1 | Antas ng edge preservation. |
| `smart_sharpen_strength` |  | number | no | `5` | 0 – 25 | Intensity ng smart sharpening. |
| `smart_sharpen_ratio` |  | number | no | `0.5` | 0 – 1 | Blending ratio para sa smart sharpening. |
| `cas_amount` |  | number | no | `0.8` | 0 – 1 | Intensity ng CAS sharpening. |
| `enable_solarize` |  | boolean | no | `false` |  | Kung ilalapat ang solarization. |
| `solarize_threshold` |  | number | no | `0.5` | 0 – 1 | Threshold para sa solarization. |
| `enable_desaturate` |  | boolean | no | `false` |  | Kung ilalapat ang desaturation. |
| `desaturate_factor` |  | number | no | `1` | 0 – 1 | Antas ng desaturation. |
| `desaturate_method` |  | enum (string) | no | `luminance (Rec.709)` | `luminance (Rec.709)`, `luminance (Rec.601)`, `average`, `lightness` | Paraan na ginagamit para sa desaturation. |

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} | Mga larawang resulta ng pagproseso. |

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