TL;DR
- Bria Product Shot:上传商品图,用英文场景描述或场景参考图更换背景。
- 每张 $0.0575,每次请求输出 1 张 PNG。 查看价格与预算
- 使用 HiAPI
/v1/tasks接口:提交任务拿 taskId,再查询结果。
先准备哪些输入?
准备一张 JPEG、PNG 或 WEBP 商品图,最大 12 MB。场景输入二选一:英文 prompt,长度 1–1000 个字符;或 reference_image_url。商品图与参考图都要能通过公开 URL 访问。
护肤商品:窗边台面

用此场景描述打开模型页,还需上传商品图并设置位置。

用此场景描述打开模型页,还需上传商品图并设置位置。
原图是浅色背景上的滴管瓶;结果图把瓶子放在画面下方,周围出现窗框、绿叶和有纹理的浅色台面。
On a white marble countertop beside a window, soft morning light, a few green leaves in the background
这条描述交代了台面材质、光线与背景物件。位置由 bottom_center 控制,商品图仍需单独上传。
bria-product-shot,每次输出 1 张,$0.0575/张。
浏览器里怎么开始?
- 打开 Bria Product Shot 模型页,上传商品图。
- 选择英文场景描述或场景参考图,再选摆放方式。
- 检查输入后提交,查看结果并保存需要的图片。
cURL:提交与查询
以下命令用于 Bash 类终端。将 HIAPI_API_KEY 设置为你的 API Key;示例中的输入图片是可访问的完整地址。运行提交命令会创建收费任务。
curl --request POST "https://api.hiapi.ai/v1/tasks" \
--header "Authorization: Bearer $HIAPI_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{
"model": "bria-product-shot",
"input": {
"image_url": "https://static.hiapi.ai/model-covers/2026/10/22/1792653491040-98cf020f23ff79b2-1792546029235-98cf020f23ff79b2-p1-serum-src.png",
"prompt": "On a white marble countertop beside a window, soft morning light, a few green leaves in the background",
"optimize_description": true,
"placement_type": "manual_placement",
"manual_placement_selection": "bottom_center",
"fast": true
}
}'
提交成功后,从响应 data.taskId 取出任务编号,用它替换 TASK_ID。
curl "https://api.hiapi.ai/v1/tasks/TASK_ID" \
--header "Authorization: Bearer $HIAPI_API_KEY"
查询结果的 data.status 为 success 时,从 data.output[0].url 获取图片;为 fail 时检查返回的错误信息。结果链接需要及时转存。
Python:提交、等待并保存
示例使用 Python 标准库。轮询间隔与最大等待时间是示例设置,可按应用需要调整;它们不是模型耗时承诺。
import json
import os
import time
import urllib.request
from pathlib import Path
API = "https://api.hiapi.ai/v1/tasks"
headers = {
"Authorization": "Bearer " + os.environ["HIAPI_API_KEY"],
"Content-Type": "application/json",
}
payload = json.loads(r'''{
"model": "bria-product-shot",
"input": {
"image_url": "https://static.hiapi.ai/model-covers/2026/10/22/1792653491040-98cf020f23ff79b2-1792546029235-98cf020f23ff79b2-p1-serum-src.png",
"prompt": "On a white marble countertop beside a window, soft morning light, a few green leaves in the background",
"optimize_description": true,
"placement_type": "manual_placement",
"manual_placement_selection": "bottom_center",
"fast": true
}
}''')
def request_json(url, body=None):
data = None if body is None else json.dumps(body).encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers)
with urllib.request.urlopen(req, timeout=60) as response:
return json.load(response)
created = request_json(API, payload)
task_id = created["data"]["taskId"]
print("taskId:", task_id)
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
result = request_json(API + "/" + task_id)["data"]
if result["status"] == "success":
image_url = result["output"][0]["url"]
with urllib.request.urlopen(image_url, timeout=60) as response:
Path("result.png").write_bytes(response.read())
break
if result["status"] == "fail":
raise RuntimeError(result)
time.sleep(3)
else:
raise TimeoutError("Polling stopped; query the existing taskId later.")
参数怎么选?
| 字段 | 要求 | 用法 |
|---|---|---|
| model | 必填,顶层 | bria-product-shot |
| image_url | 必填,input 内 | 商品图 URL,最大 12 MB |
| prompt | 与参考图二选一 | 英文场景描述,1–1000 字符 |
| reference_image_url | 与 prompt 二选一 | 场景参考图 URL |
| optimize_description | 默认 true | 仅文字模式可传 |
| placement_type | 默认 manual_placement | manual_placement 或 original |
| manual_placement_selection | 默认 bottom_center | 只在 manual_placement 下可传 |
| original_quality | 默认 false | 只在 original 下可传,true 保留输入尺寸 |
| fast | 默认 true | false 使用标准模式,价格相同 |
预设位置可选:bottom_center, upper_left, upper_right, bottom_left, bottom_right, right_center, left_center, upper_center, center_vertical, center_horizontal.
参考图模式的请求如下,省略 prompt 和 optimize_description:
{
"model": "bria-product-shot",
"input": {
"image_url": "https://static.hiapi.ai/model-covers/2026/10/22/1792653508912-1a0141656fd5be3e-1792546030593-1a0141656fd5be3e-p3-headphones-src.png",
"reference_image_url": "https://static.hiapi.ai/model-covers/2026/10/22/1792653513818-51ae5323f709b007-1792546031369-51ae5323f709b007-p3-scene-ref.png",
"placement_type": "manual_placement",
"manual_placement_selection": "bottom_center",
"fast": true
}
}
保持原位并保留输入尺寸时,改用以下组合,省略 manual_placement_selection:
{
"model": "bria-product-shot",
"input": {
"image_url": "https://static.hiapi.ai/model-covers/2026/10/22/1792653518710-bd2c7181e19c3cb3-1792546031810-bd2c7181e19c3cb3-p4-candle-src.png",
"prompt": "On a wooden bedside table in a calm bedroom at dusk, soft warm lamp light, linen bedding blurred in the background",
"optimize_description": true,
"placement_type": "original",
"original_quality": true,
"fast": true
}
}
接入时检查哪些问题?
先检查图片 URL 能否公开访问,以及请求字段是否符合上面的组合。不要在返回参数错误后反复提交同一份请求。
保存 taskId;轮询超时后继续查询已有任务,避免直接重新提交。服务端可在请求顶层设置 callback.url 接收任务结束通知。结果图片应及时转存到自己的存储。
常见问题
prompt 与参考图能同时传吗?
不能。二选一,参考图模式还要省略 optimize_description。
保持原位时可以传位置预设吗?
不可以。placement_type=original 时省略 manual_placement_selection。
original_quality 怎么使用?
只在 original 下传。true 保留输入尺寸;false 缩放到约 100 万像素。
fast=false 会改变价格吗?
不会,仍为每张 $0.0575。




