Overview

Bria’s Product Shot Editing APIs gives builders powerful tools to streamline visual content creation — enabling developers to automate and enhance product shots with more control, flexibility, and realism.

Core capabilities include product cutouts, customizable backgrounds for professional packshots, consistent shadow rendering, and AI-powered lifestyle shots using both text and reference images.

Automotive Product Shot Editing

As a first step, we’ve introduced dedicated support for automotive workflows — adding vehicle-specific features such as realistic reflection generation, tire and wheel refinement, environmental effects (e.g., fog, dust, snow), and harmonization presets.

These capabilities are designed to reduce manual work and help teams create high-quality vehicle visuals faster, with more creative control. Support for additional product categories is coming soon.

Languages
Servers

https://engine.prod.bria-api.com/v1/

Product Endpoints

Operations

Automotive Endpoints

Operations

Vehicle Shot by text

Request

Creates enriched automotive product shots by placing vehicles in realistic environments using textual descriptions.

This endpoint includes vehicle-specific enhancements that adapt the background scene to match automotive contexts, specifically - snow, sand, and grass. It embeds the vehicle into the environment for a natural, grounded appearance.

You can adjust the image size and control the positioning of the vehicle within the frame. This allows you to generate new and unique variations of the original image for different commercial or creative needs.

This API endpoint supports content moderation via an optional parameter that can prevent processing if input images contain inappropriate content, and filters out unsafe modified images — the first blocked input image will fail the entire request.

Headers
api_tokenstringrequired

API token associated with the organization

Bodyapplication/json
syncboolean

Determines the response mode. When true, responses are synchronous. With false, responses are asynchronous, immediately providing URLs for images that are generated in the background. It is recommended to use sync=false for optimal performance. When generating more than 1 result, you should use the value false. When placement_type is automatic, sync has to be false.

Default false
fastboolean

Determines the generation mode. When true, the generation will utilize the fast mode which provides the best balance between speed and quality. The false, the regular mode will be utilized.

Default true
image_urlstring

The URL of the vehicle to be placed in the shot. If both image_url and file are provided, image_url will be used. Accepted formats are jpeg, jpg, png, webp. Maximum file size 12MB.

filestring

The vehicle file to be placed in the shot, in base64 format. Used if image_url is not provided. Accepted formats are jpeg, jpg, png, webp. Maximum file size 12MB.

scene_descriptionstring

Text description of the new scene or background for the provided vehicle shot. Bria currently supports prompts in English only, excluding special characters.

optimize_descriptionboolean

When true, an additional logic takes the scene_description that was included and adjusts it to achieve optimal results. Built with Meta Llama 3.

Default true
num_resultsinteger

The number of vehicle 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 4
exclude_elementsstring

Elements or features that should be excluded from the generated scene. This parameter is optional and is available only when fast=false. Bria currently supports descriptions in English only, excluding special characters.

placement_typestring

This parameter allows you to control the positioning of the product in the image.

  • "original" will preserve the original position of the product in the image.
  • "automatic" will generate results with the 7 recommended positions for the product.
  • "manual_placement" will allow you to select predefined positions, using the parameter "manual_placement_selection".
  • "custom_coordinates" Provides precise control over the size and position of the image using the parameters "foreground_image_size" and "foreground_image_location". This includes positions outside the canvas, which may result in cropping.
  • "manual_padding" will allow you to control the position and size of the image by defining the desired padding in pixels around the product.
Enum"original""automatic""manual_placement""manual_padding""custom_coordinates"
original_qualityboolean

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.

Default false
shot_sizeArray of integers

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 is automatic,manual_placement or custom_coordinates.

Default [1000,1000]
foreground_image_sizeArray of integers

Specifies the desired dimensions of the foreground image within the generated output. The size is defined as an array of integers representing [width, height] in pixels. This parameter is only relevant when placement_type is custom_coordinates.

foreground_image_locationArray of integers

Specifies the desired [x, y] coordinates for positioning the foreground image within the full shot. The coordinates represent the upper-left corner of the foreground image. Values can extend outside the shot, in which case the input image will be cropped accordingly. This parameter is only relevant when placement_type is custom_coordinates.

manual_placement_selectionArray of strings

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 ["upper_left"]
Items Enum"upper_left""upper_right""bottom_left""bottom_right""right_center""left_center""upper_center""bottom_center""center_vertical""center_horizontal"
padding_valuesArray of integers

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.

Default [0,0,0,0]
force_rmbgboolean

Forces background removal, even if the original image already contains an alpha channel. Useful for refining existing foreground/background separation or ignoring unnecessary alpha channels.

Default false
content_moderationboolean

When enabled, applies content moderation to both input visuals and modified outputs.

For input images:

  • Processing stops at the first image that fails moderation
  • Returns a 422 error with details about which parameter failed

For synchronous requests (sync=true):

  • If all modified images fail moderation, returns a 422 error
  • If some images pass and others fail, returns a 200 response with successful outputs and "blocked" objects for failed ones

For asynchronous requests (sync=false):

  • Failed images are replaced with zero-byte files at their placeholder URLs
  • Successful images are stored at their original placeholder URLs
Default false
curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/shot_by_text \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/car.png",
    "scene_description": "A vehicle on a coastal road at sunset",
    "placement_type": "original",
    "num_results": 2,
    "optimize_description": true,
    "fast": true
  }'

Responses

Successful operation.

Bodyapplication/json
result_urlstring

The URL of the processed product cutout image. This is a temporary URL that expires after 1 hour.

Response
application/json
{ "result_url": "URL" }

Vehicle Shot by Image (Coming soon)

Request

Coming soon

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/shot_by_image

Segmentation

Request

Generates segmentation masks for specific vehicle parts from an input image, enabling further enhancements such as reflection generation or wheel refinement.

This endpoint returns separate binary masks for each segmented region, including windows, wheels, and body parts. If a specific part is not detected in the image, it will be returned with an empty URL.

The API supports input via image URL or base64-encoded image file, and also includes optional content moderation.

Headers
api_tokenstringrequired

API token associated with the organization.

Bodyapplication/json
image_urlstring

The URL of the image containing the vehicle to segment. If both image_url and file are provided, image_url will be used. Accepted formats are jpeg, jpg, png, webp. Max file size 12MB.

filestring

Base64-encoded image containing the vehicle to segment. Used only if image_url is not provided. Accepted formats are jpeg, jpg, png, webp. Max file size 12MB.

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/segment \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/car.jpeg"
  }'

Responses

Segmentation masks successfully generated.

Bodyapplication/json
windshieldstring

URL to the PNG mask of the windshield. Empty string if not detected.

rear_windowstring

URL to the PNG mask of the rear window. Empty string if not detected.

side_windowsstring

URL to the PNG mask of the side windows. Empty string if not detected.

bodystring

URL to the PNG mask of the vehicle body. Empty string if not detected.

wheelsstring

URL to the PNG mask of all visible wheels. Empty string if not detected.

hubcapstring

URL to the PNG mask of all visible hubcaps. Empty string if not detected.

tiresstring

URL to the PNG mask of all visible hubcaps. Empty string if not detected.

Response
application/json
{ "windshield": "https://example.com/masks/windshield.png", "rear_window": "", "side_windows": "https://example.com/masks/side_windows.png", "body": "https://example.com/masks/body.png", "wheels": "https://example.com/masks/wheels.png", "hubcap": "https://example.com/masks/hubcap.png", "tires": "https://example.com/masks/tires.png" }

Reflections

Request

Generates realistic reflections on relevant surfaces of a product image, such as glass, metal, or glossy materials.

Reflection masks can be provided manually or generated automatically using our segmentation tools.

The output includes an updated image with applied reflections and optional reflection layers per region.

Headers
api_tokenstringrequired

API token associated with the organization

Bodyapplication/json
image_urlstring

The URL of the vehicle shot. If both image_url and file are provided, image_url will be used. Accepted formats are jpeg, jpg, png, webp. Max file size 12MB.

filestring

The vehicle shot file in base64 format. Used only if image_url is not provided. Accepted formats are jpeg, jpg, png, webp. Max file size 12MB.

masksobject

An object containing URLs to binary masks for each region to apply reflections on. Accepted keys are windshield, rear_window, side_windows, body, wheels.

layersboolean

If true, returns separate images per region along with the full composite. If false, only the full image is returned.

seedinteger

Optional seed for consistent reflection results.

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/generate_reflections \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/car.jpg",
    "masks": {
      "windshield": "https://example.com/masks/windshield.png",
      "side_windows": "https://example.com/masks/side_windows.png",
      "body": "https://example.com/masks/body.png",
      "wheels": "https://example.com/masks/wheels.png"
    },
    "layers": true,
    "seed": 42
  }'

Responses

Reflections successfully applied.

Bodyapplication/json
urlstring

The URL of the image with reflections applied.

seedinteger

The seed used to generate the reflections.

layersobject

Returned only when layers=true. Contains region-specific reflection images.

Response
application/json
{ "url": "https://example.com/results/full_image_with_reflections.png", "seed": 123 }

Tires Refinement

Request

Enhances the appearance of the vehicle tires by adding realistic textures that match specific surfaces - snow, mud, grass.

This endpoint accepts a binary mask of all tires and returns the image with refined tires. You can optionally receive the refined wheels as a separate layer.

Headers
api_tokenstringrequired

API token associated with the organization

Bodyapplication/json
image_urlstring

The URL of the image containing the vehicle. If both image_url and file are provided, image_url takes precedence. Accepted formats are jpeg, jpg, png, webp.

filestring

The image file in base64 format. Used only if image_url is not provided. Accepted formats are jpeg, jpg, png, webp.

masksobject

An object containing the URLs of binary masks for the wheels and hubcaps.

layersboolean

If true, returns only the refined wheels layer. If false, returns the full image with refined wheels.

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/refine_tires \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/car.jpg",
    "masks": {
      "tires": "https://example.com/masks/tires.png"
    },
    "layers": true
  }'

Responses

Wheel refinement successfully applied.

Bodyapplication/json
urlstring

URL of the full image with refined wheels.

layer_urlstring

URL of the separate refined wheels layer. Only returned if layers=true.

seedinteger

Optional seed used for generation.

Response
application/json
{ "url": "https://example.com/results/full_image_refined_1.png", "seed": 123 }

Apply Effects

Request

Adds visual overlays such as dust, snow, fog, light leaks, and lens flare to enhance the realism and atmosphere of a product image.

Each effect includes multiple variations to ensure visually unique results. Effects can be applied directly to the image or delivered as separate layers.

Headers
api_tokenstringrequired

API token associated with the organization

Bodyapplication/json
image_urlstring

The URL of the vehicle image. If both image_url and file are provided, image_url is used. Accepted formats are jpeg, jpg, png, webp.

filestring

The vehicle image in base64 format. Used if image_url is not provided. Accepted formats are jpeg, jpg, png, webp.

effectstring

The visual effect to apply to the image. Supported values are dust, snow, fog, light leaks, lens flare.

layersboolean

If true, returns only the effect layer. If false, returns the full image with the effect composited.

Default false
seedinteger

Optional seed for generating consistent effect variations.

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/apply_effect \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/vehicle.jpg",
    "effect": "fog",
    "layers": false,
    "seed": 42
  }'

Responses

Effect applied successfully.

Bodyapplication/json
urlstring

URL of the image with the effect applied.

layer_urlstring

URL of the effect layer. Only returned if layers=true.

seedinteger

Seed used for effect generation.

Response
application/json
{ "url": "https://example.com/results/full_image_refined_1.png", "seed": 123 }

Harmonization

Request

Applies predefined lighting and tone presets to match the product image with a desired environmental context.

Available presets include hot-day, cold-day, hot-night, and cold-night. These harmonization styles help unify the subject with its background for a consistent and visually appealing result.

Headers
api_tokenstringrequired

API token associated with the organization

Bodyapplication/json
image_urlstring

The URL of the vehicle image. If both image_url and file are provided, image_url takes precedence. Accepted formats are jpeg, jpg, png, webp.

filestring

The vehicle image in base64 format. Used only if image_url is not provided. Accepted formats are jpeg, jpg, png, webp.

presetstring

The preset to apply. Supported values are warm-day, cold-day, warm-night, cold-night.

curl -i -X POST \
  https://engine.prod.bria-api.com/v1/product/vehicle/harmonize \
  -H 'Content-Type: application/json' \
  -H 'api_token: string' \
  -d '{
    "image_url": "https://example.com/images/car_side_view.png",
    "preset": "cold-day"
  }'

Responses

Preset applied successfully.

Bodyapplication/json
urlstring

URL of the image with the preset applied.

Response
application/json
{ "url": "https://example.com/results/full_image_refined_1.png" }