Hunyuan3d V3 Text To 3d
Playground
Try it on WavespeedAI!Turn text prompts into detailed, fully-textured 3D models with Tencent’s Hunyuan3D V3. Generate high-quality 3D assets with PBR materials from simple descriptions, ready for Unity, Unreal, and Blender. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
WaveSpeedAI Hunyuan3D v3 Text-to-3D
Hunyuan3D v3 Text-to-3D is a 3D asset generation wrapper that turns a short text description into a downloadable 3D model you can use in DCC tools (Blender/Maya), game engines, or product visualization pipelines. It’s designed for fast iteration: describe an object, pick a generation mode (textured vs. geometry-only vs. low-poly), and generate a mesh with an optional texture/material setup.
This task is best for single-object assets (props, furniture, simple characters) where you want a usable starting point and can refine topology/materials afterward.
Key capabilities
-
Text-to-3D generation with multiple output styles Choose between textured meshes, geometry-only (white model), or low-poly variants depending on your target workflow.
-
Low-poly generation with topology control In low-poly mode, you can control polygon style (triangle vs. mixed quad/tri) for game-ready or edit-friendly meshes.
-
Optional PBR material generation Enable PBR materials for more realistic shading (e.g., metal/roughness/normal-style textures), when supported by the selected generation type.
-
Face-count targeting for mesh density Generate higher-detail or lighter meshes by specifying a target face count within the supported range.
-
Standardized 3D file outputs with preview Results typically include a downloadable 3D file (e.g., OBJ/GLB) plus a preview image URL for quick inspection.
Parameters and how to use
- prompt: (required) Text describing the 3D asset you want.
- generate_type: Generation mode. Typical values include
Normal,LowPolyandGeometry. - enable_pbr: Whether to generate PBR materials (when supported by the selected mode).
- face_count: Target face count for the generated mesh (within the supported range).
- polygon_type: Polygon style for
LowPolygeneration (triangleorquadrilateral). - image_url: Optional image URL (primarily used for
Sketchmode). - image_base64: Optional base64-encoded image (primarily used for
Sketchmode).
Prompt
Write prompts like you’re briefing a 3D artist:
- Start with the object and its category: “a modern desk lamp”, “a sci-fi handheld scanner”.
- Add shape cues: silhouette, proportions, key parts (“cylindrical base, articulated arm, conical shade”).
- Add material and finish: plastic/metal/wood, matte/glossy, worn/new.
- Avoid clutter: one object per run whenever possible.
- If you need low-poly: say so in the prompt and set
generate_type=LowPoly(prompt alone is not reliable).
Example prompt:
“A compact camping lantern, cylindrical body with a handle loop on top, translucent plastic cover, brushed metal base, realistic product photo style.”
Media (Images)
Only include images if you are using a mode that accepts them (for example, generate_type=Sketch).
Supported formats & limits (typical):
- Formats: JPG, PNG
- File size: ≤ 8 MB (after encoding)
- Resolution: shortest side ≥ 128 px, longest side ≤ 5000 px
Other parameters
-
generate_type Pick the output style:
Normal– textured 3D model (default in many setups)LowPoly– polygon-reduced textured modelGeometry– geometry-only (no textures / white model)
-
enable_pbr
true– generate PBR materials when supportedfalse– standard materials/textures Note: In geometry-only modes, PBR may not apply. {/* :contentReference[oaicite:7]{index=7} */}
-
face_count
- Default is commonly 500,000
- Supported range is typically 40,000–1,500,000 Use smaller values for faster iteration and larger values for more surface detail.
-
polygon_type (only when
generate_type=LowPoly)triangle(default) – triangle facesquadrilateral– mixed quad/tri faces (often easier to edit)
After you finish configuring the parameters, click Run, preview the result, and iterate if needed.
Pricing
Pricing is parameter-related: the per-run cost typically changes with generate_type and any add-on options (such as enable_pbr and face_count).
The table below shows estimated per-run costs using published point/credit pricing and a representative USD/CNY conversion for December 2025.
| Typical setup | Estimated cost per run |
|---|---|
generate_type=Geometry | $0.25 |
generate_type=Normal | $0.375 |
generate_type=LowPoly | $0.45 |
Notes
- Treat face count as “target,” not a guarantee. If you need strict budgets (e.g., mobile game assets), plan to retopologize or decimate after generation.
- Use
Geometryfor downstream texturing workflows. If you plan to texture in Substance or do custom UV work, starting with a clean geometry-only mesh can be easier. - Start simple, then add detail. A clear base prompt usually produces better structure than a long, highly stylized prompt.
Related Models
- Tencent Hunyuan3D v2.1 – A strong earlier Hunyuan3D generation option when you want a proven baseline model.
- Hunyuan3D v2 Base – A practical, lower-cost option for image-to-3D style workflows and quick iterations.
- Hunyuan3D v2 Mini – Faster/leaner variant for previews and early-stage ideation.
- Hunyuan3D v2 Multi-View – Best when you have multiple reference images and want higher geometric fidelity from views.
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/text-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 |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Text description of the 3D content to generate. Supports up to 1024 UTF-8 characters. | |
| 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 |