Bria Product Dimensions API Documentation
Playground
Try it on WaveSpeedAI!Bria Product Dimensions creates marketplace-ready product images from product photos and real-world measurements, adding dimension callouts, labels, optional titles, and product facts for e-commerce listings and catalog visuals. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Bria Product Dimensions turns a single product photo and real-world measurements into a clean product dimension image. The model preserves the product, removes the background inside the pipeline, and renders dimension callouts with labels.
Why Choose This?
-
Product dimension images Create marketplace-ready dimension visuals from one product photo and measurement values.
-
No generative redraw The product is preserved while callout lines and labels are rendered around it.
-
Flexible callouts Add height, top width, and bottom width labels with metric or imperial units.
-
Style options Choose
default,childlike, orelegantcallout styling. -
Optional product facts Add a title, weight readout, or capacity readout when needed.
-
Standard PNG output Results are returned as PNG image URLs in the standard WaveSpeed prediction response.
Parameters
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Source product photo. JPEG, JPG, PNG, and WEBP are supported. |
| dimensions | Yes | Dimension callouts to render. Each item includes name, value, unit, and optional position. |
| style | Yes | Rendering style: default, childlike, or elegant. |
| units_display | No | Label display mode: single, dual_bullet, dual_slash, or dual_parens. Default: single. |
| background | No | Canvas background. Use white, cream, charcoal, or a hex color. Default: white. |
| title | No | Optional headline above the product. Maximum 80 characters. |
| title_position | No | Title placement: top_left, top_center, or top_right. Default: top_center. |
| weight_value | No | Optional product weight value. Use together with weight_unit. |
| weight_unit | No | Optional product weight unit: lb, oz, g, or kg. |
| weight_label | No | Optional weight label: Weight or Net Weight. |
| capacity_value | No | Optional product capacity value. Use together with capacity_unit. |
| capacity_unit | No | Optional product capacity unit: fl_oz, ml, l, qt, gal, or cups. |
| proportional_lines | No | Scale callout line length to the measurement value. Default: true. |
How to Use
- Upload product photo - Provide a clear product image.
- Add dimensions - Enter at least one measurement such as height or bottom width.
- Choose style - Select the callout visual style.
- Adjust optional display settings - Add a title, background, weight, or capacity if needed.
- Submit - Generate the dimension image and retrieve the output URL.
Pricing
| Output | Price |
|---|---|
| Per image | $0.04 |
Best Use Cases
- Ecommerce product pages - Generate clear dimension images for listings.
- Marketplace assets - Create product visuals for catalogs and online stores.
- Packaging and product content - Show height, width, weight, or capacity in a polished visual.
- Product marketing - Create clean comparison or specification images.
- SKU workflows - Standardize product dimension visuals across many items.
Pro Tips
- Use a clean product photo with the full product visible.
- Use
height,width_bottom, andwidth_topfor the clearest callout layout. - Use
dual_parenswhen you want labels such as10 in (25.4 cm). - Keep titles short so they do not crowd the product.
- Use a simple background color for marketplace-style assets.
- Ensure the input image URL is publicly accessible.
Notes
image,dimensions, andstyleare required.- Output format is fixed to PNG.
- The backend output size defaults to 2200 pixels.
- Synchronous mode, webhook callbacks, and moderation switches are handled by backend defaults.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"dimensions": [],
"style": "default",
"units_display": "single",
"background": "white",
"title_position": "top_center",
"weight_unit": "lb",
"weight_label": "Weight",
"capacity_unit": "fl_oz",
"proportional_lines": true
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/bria/product-dimensions" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | Source product photo. JPEG, JPG, PNG, and WEBP are supported. | |
| dimensions | array<object> | Yes | - | 0 ~ 6 items | Dimension callouts to render on the product image. |
| style | string | Yes | default | default, childlike, elegant | Rendering style for callout lines and typography. |
| units_display | string | No | single | single, dual_bullet, dual_slash, dual_parens | How primary and secondary units are displayed on labels. |
| background | string | No | white | - | Canvas background. Use white, cream, charcoal, or a hex color such as #0F766E. |
| title | string | No | - | - | Optional headline rendered above the product. |
| title_position | string | No | top_center | top_left, top_center, top_right | Placement of the title along the top. |
| weight_value | number | No | - | 0 ~ ∞ | Optional product weight value. Fill this together with Weight Unit. |
| weight_unit | string | No | - | lb, oz, g, kg | Optional product weight unit. Fill this together with Weight Value. |
| weight_label | string | No | - | Weight, Net Weight | Optional label for the weight readout. |
| capacity_value | number | No | - | 0 ~ ∞ | Optional product capacity value. Fill this together with Capacity Unit. |
| capacity_unit | string | No | - | fl_oz, ml, l, qt, gal, cups | Optional product capacity unit. Fill this together with Capacity Value. |
| proportional_lines | boolean | No | true | - | Scale callout line length to the measurement value. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |