Shot by Text - Custom Coordinates
Exact product placement from a description
- image
- output_image
ShotByTextCustomCoordinates (shown as Shot by Text - Custom Coordinates) combines a written scene description with pixel-exact product placement. Describe the background in words, then pin your product to an exact size and x, y location on the canvas. It's the highest-control text-driven shot node in the pack: nothing about the layout is left to the model.
This is the node for repeatable, spec-driven catalog work where the scene varies but the product's placement in the frame never does. The description handles the art direction, the coordinates handle the layout, and both are reproducible across a whole campaign.
How it works
Inputs: image (product), scene_description, and three layout strings:
- shot_size (default
1000, 1000) - output canvas,width, height. - foreground_image_size (default
500, 500) - product's rendered size,width, height. - foreground_image_location (default
0, 0) - position asx, y(0,0 = top-left).
The comma-separated strings are parsed to integers and sent to Bria's /v1/product/lifestyle_shot_by_text endpoint with the custom_coordinates placement type. Text controls carry over: mode (base / fast / high_control, default fast), optimize_description (default true), exclude_elements, plus force_rmbg and content_moderation. One output: output_image.
Installing it
Part of the BRIA AI API nodes pack (Bria-AI/ComfyUI-BRIA-API). ComfyUI Manager → search BRIA API → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Bria-AI/ComfyUI-BRIA-API
Restart ComfyUI; it's under API Nodes. No downloads, no GPU - cloud call needing a BRIA API token from platform.bria.ai, billed per generation.
Practical notes
The same three traps as the image-driven Custom Coordinates node: 0, 0 is the top-left corner, so an unedited foreground_image_location corners the product; size and coordinates interact (an oversized product hangs off the frame); and scene elements can render over the product - force_rmbg fixes that by compositing a clean cutout. Add one more for the text flavor: describe the space at the placement point. A description that fills the whole scene with clutter will fight your coordinates; say "empty counter space at the center" if that's where the product goes. Coordinates give you placement, but the description still decides what the background looks like there.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | BRIA_API_TOKEN | — |
| image | IMAGE | — | |
| scene_description | STRING | — | |
| mode | COMBO | fast | 3 options: base, fast, high_control |
| shot_size | STRING | 1000, 1000 | — |
| foreground_image_size | STRING | 500,500 | — |
| foreground_image_location | STRING | 0, 0 | — |
| force_rmbgopt | BOOLEAN | false | — |
| content_moderationopt | BOOLEAN | false | — |
| optimize_descriptionopt | BOOLEAN | true | — |
| exclude_elementsopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |