Skip to content

Bria Product Shot

Integrate

Model id bria/product-shot
# 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/bria/product-shot?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "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"

This request: $0.04 40 API credits Run it on this page

Get API key
Bria AI · Image

Your first result goes here

Build a request below and run it with your API key. Outputs are copied to our storage, kept forever or 7 days for free.

Build a request

Controls are generated from the model schema. The code and the price update as you change them.

•required image_url
Drop a file, or

Product photo URL for placement in a lifestyle scene; the image must be jpeg, jpg, png, webp and no larger than 12 MB. If an `image_file` is also supplied, `image_url` takes priority.

default 1

Lifestyle product image count per placement (`num_results`). The total is the number of required placements × `num_results` for `placement_type=manual_placement`, or `num_results` × 10 for `placement_type=automatic`.

Advanced ref_image_url · placement_type · scene_description · manual_placement_selection · optimize_description · fast · original_quality · shot_size · padding_values
default
Drop a file, or

Reference image URL for generating a product shot's new background or scene, with jpeg, jpg, png, and webp supported. Supply exactly one of `scene_description` or `ref_image_url`; an empty URL is written as "". When `ref_image_file` is also supplied, `ref_image_url` takes precedence.

placement_type default manual_placement

Product positioning mode, with two manual options: 'manual_placement' uses predefined positions selected through 'manual_placement_selection', while 'manual_padding' adjusts image position and size through pixel padding around the product. To retain the source position, select 'original'; to generate results across 10 recommended product positions, select 'automatic'.

English-only prompt without special characters, describing the scene or background to create for the supplied product photo.

default bottom_center

Preset positions to use when placement_type=manual_placement is selected. Choose from the list; multiple positions may be requested together.

default [1000,1000]

Target dimensions for the final product image, applicable only with placement_type=automatic or placement_type=manual_placement. For best results, aim for approximately 1,000,000 pixels overall.

Pixel padding for `placement_type=manual_padding`, supplied as [left, right, top, bottom]. To choose these values, first obtain a product cutout using the product cutout API and inspect its dimensions, then pass that cutout to this API with the desired padding. Aim for around 1,000,000 total pixels after padding for optimal results.

POST /run/bria/product-shot?wait=20 quote → $0.04
# 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/bria/product-shot?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "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"

Run this request

Your key stays in this browser: it is sent only to the Doitong API and saved (localStorage) only if you tick Remember. Get an API key

About Bria Product Shot

Puts the product from `image_url` into a scene described by `scene_description` or shown in `ref_image_url`, but not both. `placement_type` can be original, automatic, manual_placement or manual_padding, with ten `manual_placement_selection` positions and a `shot_size` of about 1,000,000 pixels. `num_results` ranges from 1 to 4, and a `fast` mode is available.

Parameters

Send either the canonical name or the native name, not both. Canonical names

NameType DefaultAllowed Description
image_urlrequired image
Typeurl · image
Product photo URL for placement in a lifestyle scene; the image must be jpeg, jpg, png, webp and no larger than 12 MB. If an `image_file` is also supplied, `image_url` takes priority.
scene_descriptionoptional
Typestring | null
English-only prompt without special characters, describing the scene or background to create for the supplied product photo.
ref_image_urloptional
Typeurl · image
Default
Reference image URL for generating a product shot's new background or scene, with jpeg, jpg, png, and webp supported. Supply exactly one of `scene_description` or `ref_image_url`; an empty URL is written as "". When `ref_image_file` is also supplied, `ref_image_url` takes precedence.
optimize_descriptionoptional
Typeboolean
Defaulttrue
Whether scene-description optimization is enabled.
num_resultsoptional
Typeinteger
Default1
1 – 4
Lifestyle product image count per placement (`num_results`). The total is the number of required placements × `num_results` for `placement_type=manual_placement`, or `num_results` × 10 for `placement_type=automatic`.
fastoptional
Typeboolean
Defaulttrue
Controls whether the fast model is selected.
placement_typeoptional
Typeenum
Defaultmanual_placement
originalautomaticmanual_placementmanual_padding
Product positioning mode, with two manual options: 'manual_placement' uses predefined positions selected through 'manual_placement_selection', while 'manual_padding' adjusts image position and size through pixel padding around the product. To retain the source position, select 'original'; to generate results across 10 recommended product positions, select 'automatic'.
original_qualityoptional
Typeboolean
Defaultfalse
Output sizing option used only with `placement_type=original`: false scales the image to 1 megapixel (1MP) without altering its aspect ratio, while true keeps the input dimensions.
shot_sizeoptional
Typeinteger[]
Default[1000,1000]
Target dimensions for the final product image, applicable only with placement_type=automatic or placement_type=manual_placement. For best results, aim for approximately 1,000,000 pixels overall.
manual_placement_selectionoptional
Typeenum
Defaultbottom_center
upper_leftupper_rightbottom_leftbottom_rightright_centerleft_centerupper_centerbottom_centercenter_verticalcenter_horizontal
Preset positions to use when placement_type=manual_placement is selected. Choose from the list; multiple positions may be requested together.
padding_valuesoptional
Typeinteger[]
Pixel padding for `placement_type=manual_padding`, supplied as [left, right, top, bottom]. To choose these values, first obtain a product cutout using the product cutout API and inspect its dimensions, then pass that cutout to this API with the desired padding. Aim for around 1,000,000 total pixels after padding for optimal results.
required Canonical name, also accepted

File parameters take a public https:// URL, a data: URI up to 10 MB, or the file_url of an upload. Files

Output

GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "bria/product-shot",
  "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": 40,
    "usd": "0.04",
    "charged": 40,
    "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"
  }
}
Your files, your choiceEvery outputs[].url is a copy on our storage: kept forever (paid per GB-month) or 7 days for free, by your account setting or ?storage=.
Same shape on every modeltype, url, content_type, width, height and duration, for images, video and audio alike. output is the model’s own result object.
Fields of output
images
array of object {url, content_type, file_name, file_size, width, height}Images produced by the model.

More models: Image Editing

For AI agents: this page as Markdown is at https://doitong.com/developers/models/bria/product-shot.md. All models and guides: https://doitong.com/developers/llms.txt