{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Product Shot Editing Best Practices","description":"Generate and edit images and video with Bria's FIBO models through a REST API, Python and TypeScript SDKs, MCP server and agent skills. Licensed training data, controllable output, provenance on every result.","siteUrl":"https://docs.bria.ai","image":"/assets/bria-social-card.5f3c59395e7b5efa776984c64ef9cb0956b1d651f45b7ebf9502122a66054f35.db81178d.png","llmstxt":{"hide":false,"title":"Bria API documentation","description":"Bria's developer platform: controllable, commercially safe visual generative AI (images and video) as a REST API, Python and TypeScript SDKs, MCP server and agent skills.","details":{"path":"_llmstxt-details.md"},"sections":[{"title":"Getting started","description":"First call, authentication, async jobs and webhooks, rate limits, inputs.","includeFiles":["index.md","getting-started/quickstart.md","getting-started/authentication.md","getting-started/async-requests.md","status.yaml","getting-started/rate-limits-and-errors.md","getting-started/working-with-images.md","getting-started/asset-retention.md"]},{"title":"Integrate","description":"Python SDK, TypeScript SDK, MCP server, agent skills, and machine-readable docs for agents.","includeFiles":["integration-methods/python-sdk.md","integration-methods/typescript-sdk.md","MCP-authentication.md","integration-methods/bria-skill.md","integration-methods/for-ai-agents.md"]},{"title":"Concepts","description":"Platform map, VGL and the FIBO models, safety, best practices.","includeFiles":["products-overview.md","VGL.md","safety.md","best-practices-overview.md","image-generation-best-practices.md","image-editing-best-practices.md","product-shots-best-practices.md"]},{"title":"Image Generation","description":"Generate images from text, reference images or structured (VGL) prompts with FIBO.","includeFiles":["image-generation-overview.md","image-generation.yaml"]},{"title":"Image Editing","description":"Instruction-based editing plus specialized endpoints for backgrounds, erasing, fill, expansion, upscaling and style.","includeFiles":["image-editing-overview.md","image-editing.yaml"]},{"title":"Product Shot Editing","description":"Cutouts, packshots, shadows, lifestyle scenes, product integration, holding, virtual try-on, automotive.","includeFiles":["product-shot-overview.md","product-shot-editing.yaml"]},{"title":"Video Editing","description":"Background removal (REST or real-time streaming), erasing, upscaling and masks for video; local video upload.","includeFiles":["video-editing-overview.md","local-video-upload-service.md","streaming-rmbg.md","video-editing.yaml"]},{"title":"Ads","description":"Finished ads as input. Ad Delayer turns one into editable layers (the guide holds the layer document contract); Ad Resize produces it at other sizes with the layout redone.","includeFiles":["ads-overview.md","ads.yaml"]},{"title":"Trust and provenance","description":"Public verification of Bria provenance, and attribution of outputs to licensed training data.","includeFiles":["trust-and-provenance-overview.md","visual-verification-overview.md","visual-verification.yaml","enterprise/attribution.md","bria-attribution-service.yaml"]},{"title":"Enterprise","description":"Run Bria in your own cloud or on-premises.","includeFiles":["enterprise/deployment-options.md"]}],"excludeFiles":["_llmstxt-details.md","README.md"]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"product-shot-editing-best-practices","__idx":0},"children":["Product Shot Editing Best Practices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Product Shot Editing is built to automate “commerce-grade” workflows: cutouts, packshots, consistent shadows, and lifestyle scenes (via text or reference image)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-big-picture-pipeline-mindset","__idx":1},"children":["The Big Picture: Pipeline Mindset"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before using the specific endpoints, it helps to understand the recommended workflow. Think in building blocks:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cutout"]}," (creates a clean alpha)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Shadow"]}," (optional: adds consistent grounding)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Output"]}," (creates a Packshot or Lifestyle scene)"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: Why is this pipeline important?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/shadow"]}," endpoint is explicitly designed to work with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/cutout"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/packshot"]},", or Lifestyle endpoints. If your input isn’t already a clean cutout with a transparent background, you must use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/cutout"]}," first to ensure high-quality edges in the final render."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Asynchronous endpoints: when to use async vs sync"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The general recommendation is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sync: false"]}," (async) for optimal performance. Async is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["required"]}," when using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["placement_type: automatic"]}," or when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["num_results > 1"]},". Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sync: true"]}," only for simple single-result requests where you need an immediate response (like quick prototyping)."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"catalog-workflows","__idx":2},"children":["Catalog Workflows"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v1productcutout-or-v2imageeditproductcutout-","__idx":3},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/product/cutout"]}," (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/image/edit/product/cutout"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this whenever you need a clean product foreground (alpha channel) for reliable downstream composition. The output image is automatically cropped around the subject. The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/product-shot-editing/products/product-cutout-v2"},"children":["v2 cutout endpoint"]}," produces identical results with the v2 contract (async, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]}," input, webhooks); new integrations should prefer it."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What makes cutouts look better downstream?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Best practices for input photos:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["High contrast between product and background (even if the background is messy)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Avoid motion blur on edges (handles, hair-like fibers, transparent glass rims)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure the product is fully inside the frame (no cropped edges)."]}]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: When should I force background removal even if there’s already an alpha channel?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["force_rmbg=true"]}," if the input alpha channel is low-quality (haloing / jagged edges) or if the alpha includes unwanted transparent regions."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v1productshadow","__idx":4},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/product/shadow"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add a shadow when you want the product to feel grounded and consistent across a catalog. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Requires a transparent-background cutout (alpha) as input."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: “Regular” vs “Float” shadow — which should users choose?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type=\"regular\""]}," for products that naturally sit on a surface (bottles, boxes, shoes). Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type=\"float\""]}," for “hover” aesthetics, beauty ads, or when you want an elliptical studio shadow."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What are the 3 most important knobs for realism?"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["shadow_offset:"]}," Keep consistent direction across your whole catalog (e.g., [0, 15] default)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["shadow_blur:"]}," Softer edges = more studio-like; too sharp looks cut-out."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["shadow_intensity:"]}," Keep modest; over-dark shadows look pasted."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"default","name":"Designer tip"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Avoid adding a standalone shadow if your next step is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/image/edit/product/integrate"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/product/lifestyle_shot_by_text"]},". Those endpoints handle blending and shadowing natively."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v1productpackshot","__idx":5},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/product/packshot"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use when you need a “store-ready” catalog asset. The endpoint outputs a professional standard 2000×2000 image with best-practice product sizing and placement."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What is the best workflow to create a professional packshot?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this three-step pipeline:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/product/cutout"]}," — isolate the product with a clean alpha."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/product/shadow"]}," — add a realistic, consistent shadow."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/product/packshot"]}," — output the final asset."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Skipping cutout risks poor edge quality. Skipping shadow produces a floating, ungrounded look."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: How do users get the cleanest packshots?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Start from a clean cutout, avoid extreme perspective distortion (like wide-angle phone shots), and use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["background_color"]}," intentionally (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["#FFFFFF"]}," for marketplaces, a brand hex code for hero tiles, or transparent for UI compositing)."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"lifestyle-workflows","__idx":6},"children":["Lifestyle Workflows"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v1productlifestyle_shot_by_text","__idx":7},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/product/lifestyle_shot_by_text"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use when you want Bria to generate a fitting lifestyle background around your product based on a text description. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Crucially, it preserves full product integrity"]},"—the product itself isn’t regenerated, keeping labels, textures, and logos exactly as-is."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What's the best workflow for exploring and finalizing a lifestyle shot?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use a three-phase approach:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Phase A (Explore):"]}," Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["placement_type: automatic"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["high_control"]}," mode, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["optimize_description: true"]}," to generate multiple layout and scene variants."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Phase B (Lock composition):"]}," Pick the best placement and switch to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manual_placement"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manual_padding"]}," for precision."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Phase C (Finalize):"]}," Lock the placement and description, then vary ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["num_results"]}," to generate final alternatives."]}]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What's the single most important rule for writing a `scene_description`?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Write it like a photography brief: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Product + Scene + Connection + Lighting + Palette + Framing"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["connection"]}," is especially important. Describe how the product physically relates to the surface (e.g., \"resting on\", \"surrounded by\"). ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Example: \"A dark glass perfume bottle resting on a marble bathroom shelf, surrounded by soft eucalyptus sprigs. Soft diffused morning light from the left...\""]}]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: Which background generation mode should users pick?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["high_control"]}," (~90–110 words) for polished, creative marketing results. Use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["fast"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["base"]}," (~50–60 words) when high-throughput speed and strict product preservation are the top priorities."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"understanding-placement-types","__idx":8},"children":["Understanding Placement Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["placement_type"]}," controls both the product position and the canvas size/whitespace."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: How should users choose the right placement mode?"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["original:"]}," Keep product framing exactly as-is."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatic:"]}," Explore multiple layout options at once."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["manual_placement:"]}," Use predictable marketing compositions (Rule of Thirds)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["manual_padding:"]}," Control exact whitespace around the product."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["custom_coordinates:"]}," Match exact design templates."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatic_aspect_ratio:"]}," Generate assets for a specific ratio (e.g., 16:9, 9:16)."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"default","name":"Rule of thirds placement"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manual_placement"]},", selecting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["left_center"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["right_center"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["upper_center"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bottom_center"]}," automatically aligns the product with the Rule of Thirds grid. This is highly recommended for ads, social media, and banners that require copy space."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: Which size parameter should I use?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It depends on your placement type:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["original:"]}," No size parameter needed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatic, manual_placement, custom_coordinates:"]}," Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shot_size"]}," (e.g., [1000, 1000])."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatic_aspect_ratio:"]}," Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aspect_ratio"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["manual_padding:"]}," Size is implicitly defined by your padding values `[left, right, top, bottom]`."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v1productlifestyle_shot_by_image","__idx":9},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/product/lifestyle_shot_by_image"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use when you have a reference image that defines the scene (room, surface, visual style) and want the result to inherit that look rather than describing it in words."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: How does this differ from Lifestyle by Text?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scene_description"]}," and no generation modes (fast/high_control). Instead, it uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ref_image_influence"]}," to control similarity (0.0 to 1.0)."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What are the best practices for reference strength?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you want the exact positioning/place, start high (0.75–0.9). If you want an abstract style match without copying literal objects, start mid (0.5–0.75)."]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: What does `enhance_ref_image` do?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When true, it refines lighting, shadows, and textures for authenticity. However, if it introduces unwanted artifacts or hallucinates details, set it to false."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-v2imageeditproductintegrate","__idx":10},"children":["POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/image/edit/product/integrate"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Embed one or more products into a predefined scene at exact user-defined coordinates, while matching lighting, perspective, and aesthetics."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: How do users get realistic integration?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure coordinates match the scene perspective (e.g., product size must be consistent with table depth). Iterate with a fixed seed until placement is correct, then vary the seed for alternative harmonizations."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"advanced-workflows-llms--vision-models","__idx":11},"children":["Advanced Workflows (LLMs & Vision Models)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the workflow needs extra automation upstream (prompting, layout planning, QA) rather than just better pixels, consider integrating other models alongside Bria:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Q: How can LLMs improve Bria workflows?"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Prompt Generation:"]}," Use an LLM to generate 10–30 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scene_description"]}," variants from a brand brief, then run Bria in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["high_control"]}," mode. ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(Note: Bria already includes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["optimize_description"]}," built with Meta Llama 3)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Automatic Placement:"]}," Use a vision model to detect surfaces/planes in an image, then feed those exact coordinates to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/image/edit/product/integrate"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Batch QA:"]}," Use a vision model to score generated outputs for artifacts or brand rules before publishing."]}]}]}]},"headings":[{"value":"Product Shot Editing Best Practices","id":"product-shot-editing-best-practices","depth":1},{"value":"The Big Picture: Pipeline Mindset","id":"the-big-picture-pipeline-mindset","depth":2},{"value":"Catalog Workflows","id":"catalog-workflows","depth":2},{"value":"POST /v1/product/cutout (or /v2/image/edit/product/cutout )","id":"post-v1productcutout-or-v2imageeditproductcutout-","depth":3},{"value":"POST /v1/product/shadow","id":"post-v1productshadow","depth":3},{"value":"POST /v1/product/packshot","id":"post-v1productpackshot","depth":3},{"value":"Lifestyle Workflows","id":"lifestyle-workflows","depth":2},{"value":"POST /v1/product/lifestyle_shot_by_text","id":"post-v1productlifestyle_shot_by_text","depth":3},{"value":"Understanding Placement Types","id":"understanding-placement-types","depth":4},{"value":"POST /v1/product/lifestyle_shot_by_image","id":"post-v1productlifestyle_shot_by_image","depth":3},{"value":"POST /v2/image/edit/product/integrate","id":"post-v2imageeditproductintegrate","depth":3},{"value":"Advanced Workflows (LLMs & Vision Models)","id":"advanced-workflows-llms--vision-models","depth":2}],"frontmatter":{"title":"Product Shot Editing best practices","description":"The cutout, shadow, packshot and lifestyle-shot pipeline, placement types, and prompting rules for commerce-grade product imagery.","seo":{"title":"Product Shot Editing Best Practices"}},"lastModified":"2026-09-27T11:58:15.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/product-shots-best-practices","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}