Loading API documentation
Edit
The client provides a convenient way to interact with the model API.
npm install --save @fal-ai/clientSet FAL_KEY as an environment variable in your runtime.
export FAL_KEY="YOUR_API_KEY"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("bria/fibo-2/edit", {
input: {
image_urls: ["https://v3b.fal.media/files/b/0aaf2399/7tuRY3UT9tpKwYE1wX_SP_still-logo.png", "https://v3b.fal.media/files/b/0aaf2399/T8kchxC_KKNEEkl-sK-Ge_still-perfume.png", "https://v3b.fal.media/files/b/0aaf2399/9GKzb93bJ0SDaxAQlG0mr_still-background.png"]
},
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);The API uses an API Key for authentication. It is recommended you set the FAL_KEY environment variable in your runtime when possible.
import { fal } from "@fal-ai/client";
fal.config({
credentials: "YOUR_FAL_KEY"
});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("bria/fibo-2/edit", {
input: {
image_urls: ["https://v3b.fal.media/files/b/0aaf2399/7tuRY3UT9tpKwYE1wX_SP_still-logo.png", "https://v3b.fal.media/files/b/0aaf2399/T8kchxC_KKNEEkl-sK-Ge_still-perfume.png", "https://v3b.fal.media/files/b/0aaf2399/9GKzb93bJ0SDaxAQlG0mr_still-background.png"]
},
webhookUrl: "https://optional.webhook.url/for/results",
});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("bria/fibo-2/edit", {
requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b",
logs: true,
});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("bria/fibo-2/edit", {
requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b"
});
console.log(result.data);
console.log(result.requestId);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.
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.
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.
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.
1-4 images to edit (files or URLs). The instruction refers to them as <image_1>, <image_2> and so on, in the order they are sent.
instruction stringThe edit, in free-form text. It is expanded into a VGL, which is returned. With 'vgl', the change to make to it. 'prompt' is accepted as an alias.
aspect_ratio EnumOutput aspect ratio, at about one megapixel. Left unset, the output keeps the ratio of the first image. A single image always keeps its own ratio.
Possible enum values: 1:1, 1:2, 1:3, 1:4, 1:5, 2:1, 2:3, 3:1, 3:2, 3:4, 4:1, 4:3, 4:5, 5:1, 5:4, 9:16, 9:21, 10:16, 16:9, 16:10, 21:9
seed integerRandom seed for reproducibility, 0 to 2147483647. Default value: 5555
mask_url stringMask (file or URL) marking the region to regenerate: white where the model should edit, black elsewhere. Single-image requests only, at that image's size. A masked edit comes back at the image's own size, with its own pixels outside the mask.
sync_mode booleanIf true, returns the image directly in the response (increases latency).
A VGL (Visual Generation Language) document. Alone, it is the edit as-is and must carry its 'edit_instruction'. With 'instruction', it is the first image's VGL, the baseline the edit is written from. Accepts what a previous request returned.
{
"image_urls": [
"https://v3b.fal.media/files/b/0aaf2399/7tuRY3UT9tpKwYE1wX_SP_still-logo.png",
"https://v3b.fal.media/files/b/0aaf2399/T8kchxC_KKNEEkl-sK-Ge_still-perfume.png",
"https://v3b.fal.media/files/b/0aaf2399/9GKzb93bJ0SDaxAQlG0mr_still-background.png"
],
"instruction": "Create a luxury fragrance poster by placing the perfume bottle from <image_2> upright on the grey boulder in the misty water from <image_3>, and add the minimalist typography from <image_1> in the upper sky.",
"seed": 5555
}The edited image.
Single-element list holding the same image, as the sibling FIBO apps return.
The VGL the edit ran, including its 'edit_instruction'.
{
"image": {
"url": "",
"content_type": "image/png",
"file_name": "z9RV14K95DvU.png",
"file_size": 4404019,
"width": 1024,
"height": 1024
},
"images": [
{
"url": "https://v3b.fal.media/files/b/0aaf5f35/c0ONFWAdK7WM5N9UZ_maQ_fibo-2-edit-example.png"
}
],
"vgl": {
"objects": [
{
"number_of_objects": 1,
"orientation": "Upright",
"relationship": "Resting upright on the flat top surface of the large grey boulder",
"description": "A square clear glass perfume flacon with thick beveled walls, crisp edges, filled with rose-gold liquid, featuring a thin internal dip tube, a short dark metal collar, and a wide matte black cap.",
"appearance_details": "Soft diffused fog light wrapping the glass, gentle edge highlights, and a subtle warm glow in the liquid",
"location": "Center, on top of the boulder",
"shape_and_color": "Square prism, clear glass with rose-gold liquid and black cap",
"texture": "Smooth glass and matte metal",
"relative_size": "Medium within frame"
},
{
"number_of_objects": 1,
"orientation": "Static",
"relationship": "Supporting the perfume bottle on its flat top surface and casting a complete reflection in the water below",
"description": "A single large grey boulder with a weathered, slightly rough stone surface sitting in calm water.",
"appearance_details": "Catches soft diffused light on its upper facets",
"location": "Lower half of the frame",
"shape_and_color": "Irregular block shape, grey stone",
"texture": "Rough, weathered stone",
"relative_size": "Large within frame"
}
],
"edit_instruction": "Create a luxury fragrance poster by placing the perfume bottle from <image_2> upright on the grey boulder in the misty water from <image_3>, and add the minimalist typography from <image_1> in the upper sky.",
"lighting": {
"shadows": "Soft contact shadows beneath the perfume bottle on the stone",
"conditions": "Soft diffused fog light with warm peach glow from above",
"direction": "Top-lit"
},
"aesthetics": {
"mood_atmosphere": "Serene, minimalist, luxurious, and tranquil",
"color_scheme": "Muted palette of fog grey, slate, blue-grey, and warm peach, accented by rose-gold",
"composition": "Centered editorial composition with rule of thirds horizon"
},
"background_setting": "Perfectly calm, mirror-like water surface reflecting a dense, soft fog and low cloud sky with a warm peach-cream glow breaking through near the top.",
"context": "This is a conceptual luxury fragrance advertising campaign designed for a high-end magazine spread or billboard.",
"text_render": [
{
"font": "Serif typeface with wide spacing",
"appearance_details": "Thin elegant capitals with subtle flared strokes, flat and crisp with no shadow",
"location": "Upper sky, centered about 15-20% down from the top",
"text": "STILL",
"size": "Medium",
"color": "Muted warm charcoal grey"
},
{
"font": "Serif typeface with wide spacing",
"appearance_details": "Matching small capitals with wide spacing, flat and crisp with no shadow",
"location": "Upper sky, directly beneath the word STILL",
"text": "EAU DE PARFUM",
"size": "Small",
"color": "Muted warm charcoal grey"
}
],
"style_medium": "photograph",
"short_description": "A high-end luxury fragrance poster featuring the perfume bottle from <image_2> centered atop the large grey boulder resting in calm water from <image_3>, with the minimalist typography from <image_1> floating in the misty sky above.",
"photographic_characteristics": {
"depth_of_field": "Shallow atmospheric depth",
"lens_focal_length": "Standard portrait lens (e.g., 50mm-85mm)",
"camera_angle": "Eye-level straight-on shot",
"focus": "Sharp focus on the perfume bottle and boulder"
},
"artistic_style": "realistic"
}
}url string* requiredThe URL where the file can be downloaded from.
content_type stringThe mime type of the file.
file_name stringThe name of the file. It will be auto-generated if not provided.
file_size integerThe size of the file in bytes.
width integerThe width of the image in pixels.
height integerThe height of the image in pixels.
short_description stringA short description of the image to be generated.
A list of objects in the image to be generated, along with their attributes and relationships to other objects in the image.
background_setting stringThe background setting of the image to be generated.
The lighting of the image to be generated.
The aesthetics of the image to be generated.
The photographic characteristics of the image to be generated.
style_medium stringThe style medium of the image to be generated.
A list of text to be rendered in the image.
context stringThe context of the image to be generated.
artistic_style stringThe artistic style of the image to be generated.
edit_instruction stringThe edit instruction for the image.
description stringA description of the object to be generated.
location stringThe location of the object in the image.
relationship string* requiredThe relationship of the object to other objects in the image.
relative_size stringThe relative size of the object in the image.
shape_and_color stringThe shape and color of the object.
texture stringThe texture of the object.
appearance_details stringThe appearance details of the object.
number_of_objects integerThe number of objects in the image.
pose stringThe pose of the object in the image.
expression stringThe expression of the object in the image.
clothing stringThe clothing of the object in the image.
action stringThe action of the object in the image.
gender stringThe gender of the object in the image.
skin_tone_and_texture stringThe skin tone and texture of the object in the image.
orientation stringThe orientation of the object in the image.
conditions stringThe conditions of the lighting in the image to be generated.
direction stringThe direction of the lighting in the image to be generated.
shadows stringThe shadows in the image to be generated.
composition stringThe composition of the image to be generated.
color_scheme stringThe color scheme of the image to be generated.
mood_atmosphere stringThe mood and atmosphere of the image to be generated.
text string* requiredThe text to render. fibo-2 is also shown an image of it, so it renders as written.
location stringWhere the text sits in the image.
size stringThe size of the text in the image.
color stringThe color of the text.
font stringThe style of the font.
appearance_details stringAny other notable visual details of the text.
depth_of_field stringThe depth of field in the image to be generated.
focus stringThe focus in the image to be generated.
camera_angle stringThe angle of the camera in the image to be generated.
lens_focal_length stringThe focal length of the lens in the image to be generated.