Hitem3d Hi3d V3.0 Multi View To 3d API Documentation
Playground
Try it on WaveSpeedAI!Hi3D V3.0 Multi-View-to-3D reconstructs a detailed 3D mesh from canonical front, back, left, and right reference views, with optional textures, PBR materials, and multiple export formats for game assets, product visualization, 3D design, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Hi3D V3.0 Multi-view to 3D reconstructs one 3D asset from canonical views of the same object. Provide a front image and optionally add back, left, and right views to improve geometry accuracy, shape consistency, and texture quality.
Why Choose This?
-
Multi-view 3D reconstruction
Build a 3D model from multiple views of the same object for stronger shape consistency. -
Canonical-view workflow
Start with a required front view, then add back, left, and right images when available. -
Higher geometry reliability
Multi-view input helps the model better preserve structure, silhouette, and spatial detail. -
Texture and PBR support
Generate textured output and optional PBR material maps for more production-ready assets. -
Configurable geometry
Control target face count for different quality and downstream workflow needs. -
Multiple export formats
Export generated models asglb,obj,stl,fbx, orusdz. -
Shading control
Adjust de-shading strength to improve texture and material quality.
Parameters
| Parameter | Required | Description |
|---|---|---|
| front_image | Yes | Front-view PNG, JPEG, or WebP image of the object. Maximum file size: 20 MB. |
| back_image | No | Optional back-view image of the same object. |
| left_image | No | Optional left-view image of the same object. |
| right_image | No | Optional right-view image of the same object. |
| resolution | No | Generation quality mode: 2048quality for faster generation or 2048master for the highest quality. |
| enable_texture | No | Generate textures in addition to geometry. Default: true. |
| enable_pbr | No | Generate PBR material maps with the texture. Default: true. Ignored when enable_texture is disabled. |
| face_count | No | Target face count for the generated mesh. Range: 100000–5000000. |
| export_format | No | Output format: glb, obj, stl, fbx, or usdz. |
| shading | No | De-shading strength. Range: 0–1. Default: 0.5. |
How to Use
- Upload the front image — Provide a clear front-view image of the object.
- Add more views optional — Upload back, left, and right images of the same object when available.
- Choose resolution — Use
2048qualityfor faster generation or2048masterfor higher-quality output. - Configure texture optional — Keep
enable_textureenabled when textured output is needed. - Configure PBR optional — Keep
enable_pbrenabled when material maps are required. - Set face count optional — Choose a target face count based on your geometry detail needs.
- Choose export format — Select
glb,obj,stl,fbx, orusdz. - Adjust shading optional — Use
shadingto control de-shading strength. - Submit — Generate the 3D model and retrieve the output through the standard WaveSpeed prediction response.
Pricing
Pricing is based on selected resolution, texture generation, and PBR generation.
| Resolution | Geometry only | Texture | Texture + PBR |
|---|---|---|---|
| 2048quality | $1.98 | $2.20 | $2.31 |
| 2048master | $9.68 | $9.90 | $10.01 |
PBR is only generated and priced when texture generation is enabled.
Best Use Cases
- Multi-view object reconstruction — Build a more accurate 3D model from multiple angles of the same object.
- Product 3D assets — Convert product photos into textured 3D models for previews and visualization.
- E-commerce workflows — Create 3D assets for interactive product display.
- Design and prototyping — Turn reference photos into editable 3D assets for iteration.
- Game and real-time pipelines — Generate geometry with configurable face counts for downstream optimization.
- Production-ready exports — Use GLB, OBJ, STL, FBX, or USDZ depending on your workflow.
Pro Tips
- Use images of the same object with consistent lighting, framing, and scale.
- Canonical input order is front, back, left, then right.
- Provide as many clean views as possible for better shape reconstruction.
- Avoid cluttered backgrounds, reflections, heavy shadows, occlusion, or motion blur.
- Use
2048qualityfor faster iteration and2048masterfor higher-quality final output. - Enable textures when color and surface appearance matter.
- Enable PBR when the output will be used in rendering, visualization, or game-engine workflows.
- Set
face_countlower for lightweight assets and higher for more detailed geometry.
Notes
front_imageis required.- Use canonical views of the same object for the best results.
- PBR is only generated and billed when texture generation is enabled.
- The safety checker follows the upstream default and is not exposed in the public form.
- The generated model file is returned through the standard WaveSpeed prediction response.
Related Models
- Hi3D V3.0 Image to 3D — Generate a 3D model from a single reference image.
- Hi3D V3.0 Multi-view to 3D — Generate a 3D model from multiple reference views.
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'
{
"front_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "2048quality",
"enable_texture": true,
"enable_pbr": true,
"face_count": 2000000,
"export_format": "glb",
"shading": 0.5
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/hitem3d/hi3d-v3.0/multi-view-to-3d" \
-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="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"
# 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|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| front_image | string | Yes | - | - | Front-view reference image. PNG, JPEG, and WebP are supported, up to 20 MB. |
| back_image | string | No | - | - | Optional back-view reference image, up to 20 MB. |
| left_image | string | No | - | - | Optional left-view reference image, up to 20 MB. |
| right_image | string | No | - | - | Optional right-view reference image, up to 20 MB. |
| resolution | string | No | 2048quality | 2048quality, 2048master | Generation quality tier. 2048quality is faster; 2048master provides the highest quality. |
| enable_texture | boolean | No | true | - | Generate textures in addition to the geometry mesh. |
| enable_pbr | boolean | No | true | - | Generate PBR material maps with the texture. Ignored when enable_texture is false. |
| face_count | integer | No | 2000000 | 100000 ~ 5000000 | Optional target face count. Hi3D recommends 2,000,000 for 2048quality and 5,000,000 for 2048master. |
| export_format | string | No | glb | glb, obj, stl, fbx, usdz | File format of the generated 3D model. |
| shading | number | No | 0.5 | 0 ~ 1 | De-shading strength applied to the input images. |
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.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| 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.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| 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 |