Bria
BRIA Eraser
bria-eraser
An image editing model focused on mask erasure and region reconstruction. It removes target objects according to a black-and-white mask and completes the image. Trained on authorized data, it is suitable for batch cleanup of e-commerce and marketing assets.
Pricing
bria-eraser per image
| Unit Price | $0.0575 |
|---|
Positioning Overview
BRIA Eraser is an image editing model focused on erasing: it takes an original image and a black-and-white mask, where white marks the areas to be removed. The model removes the target objects and reconstructs the occluded pixels, outputting a clean image at the original resolution. It is suited for developers who need to embed object removal and temporary-element cleanup into batch content pipelines, especially e-commerce, advertising, and concept design teams that are sensitive to asset licensing provenance and require results that can be published directly or fed into post-production workflows.
Key Highlights
- Focused on erasing and region reconstruction — it does one thing: remove targets according to the mask and fill in the background. The workflow is simple and easy to integrate into existing image processing pipelines.
- Output preserves the original resolution — results keep the input image dimensions, so no resizing back is needed and outputs can go straight into downstream layout or publishing workflows.
- Usability-first input constraints — supports publicly accessible JPEG, PNG, and WEBP images plus black-and-white masks of the same aspect ratio, and can preserve the alpha channel via a parameter.
Capabilities
Mask-driven object erasing: use a black-and-white mask with the same aspect ratio as the original image to locate the objects to remove — white is the erase area and black is the keep area — making it suitable for precisely removing specified elements from a scene.
Pixel reconstruction of erased regions: performs content completion on erased areas and reconstructs background structure, so that removed objects do not leave obvious holes and manual retouching is reduced.
Output resolution alignment: output follows the input image resolution, and returned results can directly replace the original asset, eliminating a second scaling and alignment step.
Alpha channel preservation: when preserve_alpha is enabled, inputs with an alpha channel remain transparent in the result, which is suitable for cleaning up layered assets.
Mask source adaptation: mask_type distinguishes hand-drawn masks from masks produced by segmentation tools, making it easy to feed automatic segmentation results directly into the erase workflow.
Use Cases
- E-commerce operations removing clutter from product images — input a product hero image and a mask marking clutter and temporary elements to get a clean product shot that can be used directly on detail pages and store listings.
- Post-production cleanup of advertising assets — locally erase unwanted objects in campaign assets to get finished images ready for layout and delivery, reducing back-and-forth manual retouching.
- Local touch-ups in concept design — input a character concept art or scene sketch and a local mask to remove extra strokes or elements, producing a base image that can be further developed.
- Batch content processing pipelines — feed masks produced by automatic segmentation into the erase step in batches to get cleaned assets with uniform specifications, integrating with existing review and iteration workflows.
Limitations and Selection Advice
Results depend heavily on mask quality: the mask aspect ratio must match the original image, and edges should extend slightly beyond the target object, otherwise residual artifacts or accidental deletions are likely. The model only covers erasing and region completion and does not provide general-purpose image generation; scenarios that require generating images from scratch should use a different model. In addition, it only accepts publicly accessible image URLs, and results keep the original resolution; it is not suitable for strongly real-time interactive call scenarios.
What's new
View changelog →- New model New model: bria-eraser
Frequently asked questions
View all FAQs →-
How do I make the mask?
The mask is a black-and-white image: the white area is erased and the background is filled in, the black area stays unchanged. Paint the white area slightly beyond the object edge so shadows and edge remnants go too.
-
Does the mask have to match the image size?
The mask must have the same aspect ratio as the image. Exporting it at the image's exact size keeps the erased area in place.
-
Do I need a prompt?
No. Bria Eraser works from the image and the mask only; requests must not include a prompt field.
-
Should mask_type be manual or automatic?
Use manual (the default) for masks painted with a brush or an editor; use automatic for masks produced by a segmentation tool.
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: bria-eraser
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for bria-eraser and route default — see the parameter table below.
mask_urlstringRequiredminLength 1pattern ^https?://Black-and-white mask with the same aspect ratio as the image: white marks what to erase, black is kept. Paint slightly beyond the object edge.
image_urlstringRequiredminLength 1pattern ^https?://Public URL of the image to clean up (JPEG, PNG or WEBP). The result keeps the original resolution.
mask_typestringOptionalDefault: "manual"manual for brush-drawn masks; automatic for masks produced by a segmentation tool.
manualautomaticpreserve_alphabooleanOptionalDefault: falseIf the input has an alpha channel, keep its transparency in the result.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bria-eraser",
"input": {
"mask_url": "…",
"image_url": "…",
"mask_type": "manual",
"preserve_alpha": false
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "bria-eraser",
input: {
"mask_url": "…",
"image_url": "…",
"mask_type": "manual",
"preserve_alpha": false
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "bria-eraser",
"input": {
"mask_url": "…",
"image_url": "…",
"mask_type": "manual",
"preserve_alpha": False
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
FLUX.1 Kontext Max Black Forest Labs $0.071 /image -
BRIA Product Shot Bria $0.058 /image -
Recraft Crisp Upscale Recraft $0.004 /image -
Krea 3 Krea $0.036 /image -
FLUX.1 Schnell Black Forest Labs $0.005 /image -
Grok Imagine Quality xAI $0.070 /image -
FASHN Tryon v1.6 FASHN $0.107 /image -
GPT Image 2.5 OpenAI $0.017 /image -
Qwen Image 2.1 Alibaba $0.020 /image -
Z-Image Alibaba $0.008 /image -
Seedream 5.0 ByteDance $0.025 /image -
Grok Imagine Image 2.0 xAI $0.052 /image