Post Processing Image to Image

fal-ai/post-processing
Post Processing is an endpoint that can enhance images using a variety of techniques including grain, blur, sharpen, and more.
Inference
Commercial use

About

Process Image

1. Calling the API#

Install the client#

The client provides a convenient way to interact with the model API.

npm install --save @fal-ai/client

Setup your API Key#

Set FAL_KEY as an environment variable in your runtime.

export FAL_KEY="YOUR_API_KEY"

Submit a request#

The client API handles the API submit protocol. It will handle the request status updates and return the result when the request is completed.

import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/post-processing", {
  input: {
    image_url: "https://storage.googleapis.com/falserverless/web-examples/post-process/postpro-input.jpg"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});
console.log(result.data);
console.log(result.requestId);

2. Authentication#

The API uses an API Key for authentication. It is recommended you set the FAL_KEY environment variable in your runtime when possible.

API Key#

In case your app is running in an environment where you cannot set environment variables, you can set the API Key manually as a client configuration.
import { fal } from "@fal-ai/client";

fal.config({
  credentials: "YOUR_FAL_KEY"
});

3. Queue#

Submit a request#

The client API provides a convenient way to submit requests to the model.

import { fal } from "@fal-ai/client";

const { request_id } = await fal.queue.submit("fal-ai/post-processing", {
  input: {
    image_url: "https://storage.googleapis.com/falserverless/web-examples/post-process/postpro-input.jpg"
  },
  webhookUrl: "https://optional.webhook.url/for/results",
});

Fetch request status#

You can fetch the status of a request to check if it is completed or still in progress.

import { fal } from "@fal-ai/client";

const status = await fal.queue.status("fal-ai/post-processing", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b",
  logs: true,
});

Get the result#

Once the request is completed, you can fetch the result. See the Output Schema for the expected result format.

import { fal } from "@fal-ai/client";

const result = await fal.queue.result("fal-ai/post-processing", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b"
});
console.log(result.data);
console.log(result.requestId);

4. Files#

Some attributes in the API accept file URLs as input. Whenever that's the case you can pass your own URL or a Base64 data URI.

Data URI (base64)#

You can pass a Base64 data URI as a file input. The API will handle the file decoding for you. Keep in mind that for large files, this alternative although convenient can impact the request performance.

Hosted files (URL)#

You can also pass your own URLs as long as they are publicly accessible. Be aware that some hosts might block cross-site requests, rate-limit, or consider the request as a bot.

Uploading files#

We provide a convenient file storage that allows you to upload files and use them in your requests. You can upload files using the client API and use the returned URL in your requests.

import { fal } from "@fal-ai/client";

const file = new File(["Hello, World!"], "hello.txt", { type: "text/plain" });
const url = await fal.storage.upload(file);

Read more about file handling in our file upload guide.

5. Schema#

Input#

image_url string* required

URL of image to process

enable_grain boolean

Enable film grain effect

grain_intensity float

Film grain intensity (when enabled) Default value: 0.4

grain_scale float

Film grain scale (when enabled) Default value: 10

grain_style GrainStyleEnum

Style of film grain to apply Default value: "modern"

Possible enum values: modern, analog, kodak, fuji, cinematic, newspaper

enable_color_correction boolean

Enable color correction

temperature float

Color temperature adjustment

brightness float

Brightness adjustment

contrast float

Contrast adjustment

saturation float

Saturation adjustment

gamma float

Gamma adjustment Default value: 1

enable_chromatic boolean

Enable chromatic aberration

red_shift integer

Red channel shift amount

red_direction RedDirectionEnum

Red channel shift direction Default value: "horizontal"

Possible enum values: horizontal, vertical

green_shift integer

Green channel shift amount

green_direction GreenDirectionEnum

Green channel shift direction Default value: "horizontal"

Possible enum values: horizontal, vertical

blue_shift integer

Blue channel shift amount

blue_direction BlueDirectionEnum

Blue channel shift direction Default value: "horizontal"

Possible enum values: horizontal, vertical

enable_blur boolean

Enable blur effect

blur_type BlurTypeEnum

Type of blur to apply Default value: "gaussian"

Possible enum values: gaussian, kuwahara

blur_radius integer

Blur radius Default value: 3

blur_sigma float

Sigma for Gaussian blur Default value: 1

enable_vignette boolean

Enable vignette effect

vignette_strength float

Vignette strength (when enabled) Default value: 0.5

enable_parabolize boolean

Enable parabolize effect

parabolize_coeff float

Parabolize coefficient Default value: 1

vertex_x float

Vertex X position Default value: 0.5

vertex_y float

Vertex Y position Default value: 0.5

enable_tint boolean

Enable color tint effect

tint_strength float

Tint strength Default value: 1

tint_mode TintModeEnum

Tint color mode Default value: "sepia"

Possible enum values: sepia, red, green, blue, cyan, magenta, yellow, purple, orange, warm, cool, lime, navy, vintage, rose, teal, maroon, peach, lavender, olive

enable_dissolve boolean

Enable dissolve effect

dissolve_image_url string

URL of second image for dissolve Default value: ""

dissolve_factor float

Dissolve blend factor Default value: 0.5

enable_dodge_burn boolean

Enable dodge and burn effect

dodge_burn_intensity float

Dodge and burn intensity Default value: 0.5

dodge_burn_mode DodgeBurnModeEnum

Dodge and burn mode Default value: "dodge"

Possible enum values: dodge, burn, dodge_and_burn, burn_and_dodge, color_dodge, color_burn, linear_dodge, linear_burn

enable_glow boolean

Enable glow effect

glow_intensity float

Glow intensity Default value: 1

glow_radius integer

Glow blur radius Default value: 5

enable_sharpen boolean

Enable sharpen effect

sharpen_mode SharpenModeEnum

Type of sharpening to apply Default value: "basic"

Possible enum values: basic, smart, cas

sharpen_radius integer

Sharpen radius (for basic mode) Default value: 1

sharpen_alpha float

Sharpen strength (for basic mode) Default value: 1

noise_radius integer

Noise radius for smart sharpen Default value: 7

preserve_edges float

Edge preservation factor Default value: 0.75

smart_sharpen_strength float

Smart sharpen strength Default value: 5

smart_sharpen_ratio float

Smart sharpen blend ratio Default value: 0.5

cas_amount float

CAS sharpening amount Default value: 0.8

enable_solarize boolean

Enable solarize effect

solarize_threshold float

Solarize threshold Default value: 0.5

enable_desaturate boolean

Enable desaturation effect

desaturate_factor float

Desaturation factor Default value: 1

desaturate_method DesaturateMethodEnum

Desaturation method Default value: "luminance (Rec.709)"

Possible enum values: luminance (Rec.709), luminance (Rec.601), average, lightness

{
  "image_url": "https://storage.googleapis.com/falserverless/web-examples/post-process/postpro-input.jpg",
  "grain_intensity": 0.4,
  "grain_scale": 10,
  "grain_style": "modern",
  "gamma": 1,
  "red_direction": "horizontal",
  "green_direction": "horizontal",
  "blue_direction": "horizontal",
  "blur_type": "gaussian",
  "blur_radius": 3,
  "blur_sigma": 1,
  "vignette_strength": 0.5,
  "parabolize_coeff": 1,
  "vertex_x": 0.5,
  "vertex_y": 0.5,
  "tint_strength": 1,
  "tint_mode": "sepia",
  "dissolve_factor": 0.5,
  "dodge_burn_intensity": 0.5,
  "dodge_burn_mode": "dodge",
  "glow_intensity": 1,
  "glow_radius": 5,
  "sharpen_mode": "basic",
  "sharpen_radius": 1,
  "sharpen_alpha": 1,
  "noise_radius": 7,
  "preserve_edges": 0.75,
  "smart_sharpen_strength": 5,
  "smart_sharpen_ratio": 0.5,
  "cas_amount": 0.8,
  "solarize_threshold": 0.5,
  "desaturate_factor": 1,
  "desaturate_method": "luminance (Rec.709)"
}

Output#

images list<Image>* required

The processed images

{
  "images": [
    {
      "url": "",
      "content_type": "image/png",
      "file_name": "z9RV14K95DvU.png",
      "file_size": 4404019,
      "width": 1024,
      "height": 1024
    }
  ]
}

Other types#

Image#

url string* required

The URL where the file can be downloaded from.

content_type string

The mime type of the file.

file_name string

The name of the file. It will be auto-generated if not provided.

file_size integer

The size of the file in bytes.

file_data string

File data

width integer

The width of the image in pixels.

height integer

The height of the image in pixels.