Skip to main content
Endpoint: POST https://fal.run/fal-ai/bria/product-shot Endpoint ID: fal-ai/bria/product-shot

Try it in the Playground

Run this model interactively with your own prompts.

Quick Start

import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
           print(log["message"])

result = fal_client.subscribe(
    "fal-ai/bria/product-shot",
    arguments={
        "image_url": "https://storage.googleapis.com/falserverless/bria/bria_product_fg.jpg"
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)
print(result)

Capabilities

  • Image input
  • Synchronous mode

API Reference

Input Schema

image_url
string
required
The URL of the product shot to be placed in a lifestyle shot. If both image_url and image_file are provided, image_url will be used. Accepted formats are jpeg, jpg, png, webp. Maximum file size 12MB.
scene_description
string
Text description of the new scene or background for the provided product shot. Bria currently supports prompts in English only, excluding special characters.
ref_image_url
string
default:""
The URL of the reference image to be used for generating the new scene or background for the product shot. Use "" to leave empty.Either ref_image_url or scene_description has to be provided but not both. If both ref_image_url and ref_image_file are provided, ref_image_url will be used. Accepted formats are jpeg, jpg, png, webp. Default value: ""
optimize_description
boolean
default:"true"
Whether to optimize the scene description Default value: true
num_results
integer
default:"1"
The number of lifestyle product shots you would like to generate. You will get num_results x 10 results when placement_type=automatic and according to the number of required placements x num_results if placement_type=manual_placement. Default value: 1Range: 1 to 4
fast
boolean
default:"true"
Whether to use the fast model Default value: true
placement_type
PlacementTypeEnum
default:"manual_placement"
This parameter allows you to control the positioning of the product in the image. Choosing ‘original’ will preserve the original position of the product in the image. Choosing ‘automatic’ will generate results with the 10 recommended positions for the product. Choosing ‘manual_placement’ will allow you to select predefined positions (using the parameter ‘manual_placement_selection’). Selecting ‘manual_padding’ will allow you to control the position and size of the image by defining the desired padding in pixels around the product. Default value: "manual_placement"Possible values: original, automatic, manual_placement, manual_padding
original_quality
boolean
default:"false"
This flag is only relevant when placement_type=original. If true, the output image retains the original input image’s size; otherwise, the image is scaled to 1 megapixel (1MP) while preserving its aspect ratio.
shot_size
list<integer>
default:"1000,1000"
The desired size of the final product shot. For optimal results, the total number of pixels should be around 1,000,000. This parameter is only relevant when placement_type=automatic or placement_type=manual_placement.
manual_placement_selection
ManualPlacementSelectionEnum
default:"bottom_center"
If you’ve selected placement_type=manual_placement, you should use this parameter to specify which placements/positions you would like to use from the list. You can select more than one placement in one request. Default value: "bottom_center"Possible values: upper_left, upper_right, bottom_left, bottom_right, right_center, left_center, upper_center, bottom_center, center_vertical, center_horizontal
padding_values
list<integer>
The desired padding in pixels around the product, when using placement_type=manual_padding. The order of the values is [left, right, top, bottom]. For optimal results, the total number of pixels, including padding, should be around 1,000,000. It is recommended to first use the product cutout API, get the cutout and understand the size of the result, and then define the required padding and use the cutout as an input for this API.
sync_mode
boolean
default:"false"
If True, the media will be returned as a data URI and the output data won’t be available in the request history.

Output Schema

images
list<Image>
required
The generated images

Input Example

{
  "image_url": "https://storage.googleapis.com/falserverless/bria/bria_product_fg.jpg",
  "scene_description": "on a rock, next to the ocean, dark theme",
  "ref_image_url": "https://storage.googleapis.com/falserverless/bria/bria_product_bg.jpg",
  "optimize_description": true,
  "num_results": 1,
  "fast": true,
  "placement_type": "manual_placement",
  "original_quality": false,
  "shot_size": [
    1000,
    1000
  ],
  "manual_placement_selection": "bottom_center",
  "sync_mode": false
}

Output Example

{
  "images": [
    {
      "content_type": "image/png",
      "url": "https://storage.googleapis.com/falserverless/bria/bria_product_res.png"
    }
  ]
}

Limitations

  • num_results range: 1 to 4
  • placement_type restricted to: original, automatic, manual_placement, manual_padding