---
title: "Product Cutout (v2)"
method: POST
path: "/image/edit/product/cutout"
tags: ["Product Endpoints"]
---

# Product Cutout (v2)

`POST /image/edit/product/cutout`

**Description**

Creates a clean product cutout from any image by removing the background and cropping the image tightly around the product. This capability is especially valuable for eCommerce platforms and applications, and serves as a fundamental building block for product imagery pipelines such as Product Packshot, Product Shadow, and Embed products into a scene.

This is the v2 version of the Product Cutout capability, replacing the legacy v1 endpoint (POST /v1/product/cutout). Both versions produce identical results. v2 introduces the standard v2 API contract - JSON requests, asynchronous execution with status polling or webhooks, granular content moderation controls, and the standard v2 response envelope. The v1 endpoint remains available, and new integrations should use v2.

By default, requests are processed asynchronously. The API immediately returns a request_id and a status URL. Track progress and retrieve the result using the [Status Service](https://docs.bria.ai/status), or receive the result via webhook_url. Set sync to true to hold the connection open and receive the final result directly in the response.

This endpoint supports content moderation via optional parameters that can prevent processing if the input image contains inappropriate content or if the output would contain inappropriate content.

## Headers

- `api_token` string, required

## Request body

- object
  - `image` string, required — Publicly available URL or Base64-encoded image containing the product to be cut out. Accepted formats are jpeg, jpg, png, webp. Maximum file size 12MB.
  - `sync` boolean — Specifies the response mode. This parameter is optional. - When `false` (default), the request is processed asynchronously: the API immediately returns a status URL to track progress. - When `true`, the request is processed synchronously: the API holds the connection open until the process is complete and then returns the final image URL in the response.
  - `sku` string — The Stock Keeping Unit identifier for the product. This parameter is optional.
  - `preserve_alpha` boolean — Controls whether the alpha channel values from the input image are retained in the output, if the input includes an alpha channel. - When true: The output image maintains the original transparency of fully and partially transparent pixels. - When false: The transparency values from the input are not preserved, but the output may still include an alpha channel (e.g., around the cropped area). - Has no effect if the input image does not include an alpha channel.
  - `force_background_detection` boolean — 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. Replaces the v1 parameter force_rmbg.
  - `output_type` 'png' | 'jpeg' — The desired output format. This parameter is optional.
  - `visual_input_content_moderation` boolean — If true, applies content moderation to the input image and returns 422 on moderation failure. This parameter is optional.
  - `visual_input_content_moderation_threshold` number — Threshold used by the input content moderation check. Applies only when visual_input_content_moderation is enabled.
  - `visual_output_content_moderation` boolean — If true, applies content moderation to the output image and returns 422 on moderation failure. This parameter is optional.
  - `visual_output_content_moderation_threshold` number — Threshold used by the output content moderation check. Applies only when visual_output_content_moderation is enabled.
  - `webhook_url` string, uri — Optional URL for receiving the result via webhook when the async job completes. See [Webhooks](https://docs.bria.ai/webhooks).

## Response `200`

Successful operation (Synchronous Success).

- object
  - `request_id` string — Unique identifier of the request.
  - `result` object
    - `image_url` string — The URL of the processed product cutout image.

## Other responses

- `202` — Accepted (Asynchronous). You can track the progress and retrieve the final result using the Status Service. For more details, refer to the [Status Service](https://docs.bria.ai/status) section.
- `400` — Bad request. For example, the input image is fully transparent.
- `401` — Unauthorized. Invalid API key or authentication token.
- `403` — Forbidden.
- `422` — Unprocessable Entity. Validation or content moderation failure. The response contains a structured error object with message and details.
- `429` — Request limit exceeded. Your account has reached its maximum allowed requests. Please upgrade your plan or try again later.
- `5XX` — Internal server error. An error occurred on the server.

---

[API](https://skmtc.net/bria-ai/apis/product-shot-api-reference.md) · [All operations](https://skmtc.net/bria-ai/apis/product-shot-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bria-ai/product-shot-api-reference/revisions/02853e3865f7/schema)
