Hunyuan3d V3 Image To 3d
Playground
Try it on WavespeedAI!Transform your photos into ultra-high-resolution 3D models in seconds with Tencent’s Hunyuan3D V3 Image to 3D. Film-quality geometry with PBR textures from single or multi-view images, ready for games, e-commerce, and 3D printing. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
WaveSpeedAI Hunyuan3D v3 Image-to-3D
Hunyuan3D v3 Image-to-3D converts one (or several) reference images into a downloadable 3D asset—useful for product mockups, game props, e-commerce previews, and fast 3D prototyping.
You provide a primary image, optionally add side/back views for better reconstruction, and choose whether you want a fully textured model, a low-poly version, or geometry-only output.
Key capabilities
-
Single-image 3D reconstruction Generate a 3D model from one reference image via
input_image_url. -
Optional multi-view input for higher fidelity Add
back_image_url,left_image_url, and/orright_image_urlto help the model recover shape details and reduce ambiguity. -
Multiple generation modes (textured / low-poly / geometry-only) Choose
generate_typefor a standard textured model, a low-poly reduction pass, or a “white model” without textures. -
PBR material generation (when supported by mode) Enable PBR textures using
enable_pbr(note: it does not apply whengenerate_typeisGeometry). -
Mesh complexity controls Target a face budget with
face_count(range 40,000–1,500,000; default 500,000). -
Low-poly topology options When using
generate_type: "LowPoly", choosepolygon_type(triangles or quads). -
Export-ready outputs Returns a GLB plus model URLs for additional formats (availability may vary by deployment).
Parameters and how to use
Parameters
- input_image_url: (required) URL of the main image used to generate the 3D model.
- back_image_url: Optional back-view image URL for better reconstruction.
- left_image_url: Optional left-view image URL for better reconstruction.
- right_image_url: Optional right-view image URL for better reconstruction.
- enable_pbr: Whether to enable PBR material generation (ignored when
generate_typeisGeometry). - face_count: Target face count (40,000–1,500,000; default 500,000).
- generate_type: Generation mode (
Normal,LowPoly,Geometry; defaultNormal). - polygon_type: Polygon type for low-poly output (
triangleorquadrilateral; defaulttriangle).
Prompt
This endpoint is image-driven (no prompt parameter). For best results, put the “instructions” into the image selection:
- Use a clear, well-lit image with the subject centered.
- Avoid heavy motion blur, extreme fisheye distortion, or cluttered backgrounds.
- If the subject has thin parts (straps, antennae, wires), add side/back views to reduce missing geometry.
Media (Images)
- Required: 1 image (
input_image_url) - Optional: up to 3 additional views (
back_image_url,left_image_url,right_image_url) - Common accepted formats in UI workflows: jpg, jpeg, png, webp, gif, avif
Practical tips:
- Use consistent framing across views (similar distance and scale).
- Keep the subject fully in frame—cropped objects tend to produce incomplete meshes.
- If you only have one view, pick the angle that best shows the overall silhouette.
Other parameters
-
generate_type Choose what kind of 3D output you need:
Normal(default): Textured modelLowPoly: Polygon reduction workflowGeometry: Geometry-only (no texture)
-
enable_pbr
trueto request PBR materials- Note: ignored when
generate_typeisGeometry([fal.ai][1])
-
face_count Controls mesh complexity. Higher values usually increase file size and can increase generation time.
- Range: 40,000–1,500,000
- Default: 500,000
-
polygon_type (only applies when
generate_typeisLowPoly)triangle(default): best compatibility with real-time enginesquadrilateral: useful for some DCC workflows and retopo-friendly meshes
After you finish configuring the parameters, click Run, preview the result, and iterate if needed.
Pricing
Per-run pricing varies by generate_type and optional features. Example pricing below is based on published unit prices for this model family.
| Typical settings | Estimated cost per run |
|---|---|
generate_type: Normal (default settings) | $0.375 |
generate_type: Normal + enable_pbr: true | $0.525 |
generate_type: Normal + enable_pbr: true + multi-view images | $0.675 |
generate_type: LowPoly (default polygon type) | $0.45 |
generate_type: Geometry | $0.225 |
Notes
- If you’re seeing “melted” surfaces or missing parts, add at least one more view (
left_image_urlorback_image_url). - Use
Geometrywhen you only need a fast shape/mesh and plan to texture elsewhere—PBR settings won’t apply in this mode. - Start with the default
face_count, then increase only if you need extra silhouette detail (and can afford larger files).
Related Models
- Hunyuan3D V2 Multi-View – Multi-view-focused reconstruction when you can provide several angles.
- Hunyuan3D V2 Mini – Lighter-weight Hunyuan3D option for faster iteration.
- Tripo3D v2.5 Image-to-3D – Single-image 3D generation with a simple input surface.
- Hyper3D Rodin v2 Image-to-3D – Production-oriented image-to-3D workflow (UVs/textures-focused).
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/hunyuan3d-v3/image-to-3d" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"enable_pbr": false,
"polygon_type": "triangle",
"face_count": 500000,
"generate_type": "Normal"
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | The URL where the file can be downloaded from. | |
| back_image | string | No | - | - | Optional back view image URL for better 3D reconstruction. |
| left_image | string | No | - | - | Optional left view image URL for better 3D reconstruction. |
| right_image | string | No | - | - | Optional right view image URL for better 3D reconstruction. |
| enable_pbr | boolean | No | false | - | Whether to enable PBR material generation |
| polygon_type | string | No | triangle | triangle, quadrilateral | Polygon type. Only takes effect when GenerateType is LowPoly. |
| face_count | integer | No | 500000 | 40000 ~ 1500000 | Target face count. Range: 40000-1500000 |
| generate_type | string | No | Normal | Normal, LowPoly, Geometry | Generation type. Normal: textured model. LowPoly: polygon reduction. Geometry: white model without texture. |
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 | Array of URLs to the generated content (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.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| 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, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (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 |