Meshy V6 Lite Retexture API Documentation
Playground
Try it on WaveSpeedAI!Meshy 6 Lite Retexture applies new materials and textures to existing 3D models using a text prompt or reference image, with optional PBR maps for game assets, product visualization, 3D design, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Meshy 6 Lite Retexture applies new textures and materials to an existing 3D model using either a text description or a reference image. Keep the original geometry while changing the surface appearance, colors, materials, and finish, then export the result as a textured GLB model.
It is designed for creating material variations, refreshing existing assets, product visualization, game assets, and other workflows where you want a new look without regenerating the underlying 3D geometry.
Why Choose This?
-
Retexture existing 3D models
Change the appearance of an existing asset without generating a new object. -
Text-guided materials
Describe the colors, materials, finish, wear, and surface style you want. -
Image-guided texturing
Use a reference image to guide the new texture appearance. -
UV control
Preserve the model’s existing UV mapping or generate new UVs when needed. -
Optional PBR materials
Generate metallic, roughness, and normal maps in addition to the base color texture. -
Multiple 3D input formats
Supports GLB, GLTF, OBJ, FBX, and STL models.
Parameters
| Parameter | Required | Description |
|---|---|---|
| model | Yes | 3D model to retexture. Supports GLB, GLTF, OBJ, FBX, and STL. |
| prompt | Conditional | Text description of the desired materials and textures. Supports up to 600 characters. Required when texture_image is not provided. |
| texture_image | Conditional | Reference image used to guide texture appearance. Supports JPG, JPEG, and PNG. Required when prompt is not provided. If both are supplied, texture_image takes priority. |
| enable_original_uv | No | Preserve the model’s existing UV mapping. Default: true. Disable it when new UV mapping should be generated. |
| enable_pbr | No | Generate metallic, roughness, and normal maps in addition to the base color texture. Default: false. |
At least one of prompt or texture_image must be provided.
How to Use
- Upload the 3D model — Provide the existing asset you want to retexture.
- Choose texture guidance — Enter a material description or provide a reference image.
- Configure UV handling optional — Keep
enable_original_uv=truewhen the existing UV mapping is suitable, or disable it to generate new UVs. - Enable PBR optional — Turn on
enable_pbrwhen additional material maps are needed. - Submit — Generate and retrieve the retextured GLB model.
Pricing
Pricing is fixed at $0.36 per retextured model.
| Output | Cost |
|---|---|
| One retextured model | $0.36 |
PBR maps are included at no additional charge.
Best Use Cases
- Game assets — Create new material and color variations for existing meshes.
- Product visualization — Explore finishes such as metal, wood, leather, ceramic, plastic, or fabric.
- Asset variation — Produce multiple visual versions of the same 3D geometry.
- Material prototyping — Test surface treatments without remodeling the asset.
- E-commerce 3D — Create product colorways or material variants from an existing model.
- Creative iteration — Compare different texture concepts on the same 3D asset.
Pro Tips
- Describe surface materials, colors, finish, wear, and texture characteristics clearly in
prompt. - Use a clean reference image with a clear material or surface style when using
texture_image. - Keep
enable_original_uv=truewhen the source model already has suitable UV mapping. - Disable
enable_original_uvwhen the existing UVs are missing or unsuitable. - Enable
enable_pbrwhen the model will be used in lighting-sensitive rendering, game-engine, or product-visualization workflows. - When both
promptandtexture_imageare supplied, remember that the reference image takes priority.
Notes
modelis required.- At least one of
promptortexture_imagemust be provided. promptsupports up to600characters.texture_imagesupports JPG, JPEG, and PNG.texture_imagetakes priority when both texture guidance methods are supplied.enable_original_uvdefaults totrue.enable_pbrdefaults tofalse.- PBR generation does not add a separate charge.
- The output is a textured GLB model.
Related Models
- Meshy V7.1 Text-to-3D — Generate a 3D model directly from a text description.
- Meshy V7.1 Image-to-3D — Generate a 3D model from a reference image.
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'
{
"model": "example",
"enable_original_uv": true,
"enable_pbr": false
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/meshy/v6-lite/retexture" \
-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 |
|---|---|---|---|---|---|
| model | string | Yes | - | - | 3D model to retexture. Supports GLB, GLTF, OBJ, FBX, and STL. |
| prompt | string | No | - | Describe the desired materials and texture style. Provide a prompt or texture_image. | |
| texture_image | string | No | - | - | Reference image for texture style. Takes priority when a prompt is also provided. |
| enable_original_uv | boolean | No | true | - | Keep the model's existing UV mapping. Disable when the model has no usable UVs. |
| enable_pbr | boolean | No | false | - | Generate metallic, roughness, and normal maps along with base color. |
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 |