Meshy6 Image To 3d

Meshy6 Image To 3d

Playground

Try it on WaveSpeedAI!

Meshy 6 converts 2D images into high-quality 3D models with accurate geometry reconstruction and superior texture quality. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Meshy 6 is the latest image-to-3D generation model featuring the best quality geometry reconstruction and superior texture generation. Convert any 2D image into a production-ready 3D model with multiple export formats.

Key Capabilities

  • Best-in-class geometry - Most accurate geometry reconstruction for detailed 3D models
  • Superior textures - High-quality texture generation with optional PBR maps
  • Multiple formats - Export as GLB, FBX, OBJ, or USDZ
  • Topology control - Choose between quad (smooth) or triangle (detailed) mesh
  • Symmetry options - Auto-detect or force symmetry for balanced models
  • Rigging-ready - Optional A/T pose output for character rigging

Parameters

Required

  • image_url: URL or base64 data URI of the source image (.jpg,.jpeg,.png)

Geometry Options

  • topology: Mesh topology - quad for smooth surfaces, triangle for detailed geometry (default: triangle)
  • target_polycount: Target polygon count (default: 30000)
  • symmetry_mode: Symmetry behavior - off, auto, or on (default: auto)
  • should_remesh: Enable remesh phase for cleaner topology (default: true)
  • is_a_t_pose: Generate in A/T pose for rigging (default: false)

Texture Options

  • should_texture: Generate textures (default: true)
  • enable_pbr: Generate PBR maps including metallic, roughness, and normal (default: false)
  • texture_prompt: Text prompt to guide texture generation
  • texture_image_url: Reference image to guide texturing

Output Formats

The model outputs 3D files in multiple formats:

  • GLB - Universal web-ready format
  • FBX - For game engines and 3D software
  • OBJ - Standard interchange format
  • USDZ - Apple AR Quick Look compatible

Pricing

$0.80 per generation

Notes

  • Processing typically takes 5-10 minutes
  • Best results with clear, well-lit images showing the full object
  • Use PBR option for game-ready assets with material properties
  • Enable A/T pose for characters intended for animation

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'
{
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "topology": "triangle",
  "target_polycount": 30000,
  "symmetry_mode": "auto",
  "should_remesh": true,
  "should_texture": true,
  "enable_pbr": false,
  "ta_pose": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/meshy6/image-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=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 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) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-Image URL or base64 data URI for 3D model creation. Supports .jpg, .jpeg, and .png formats.
topologystringNotrianglequad, triangleSpecify the topology of the generated model. Quad for smooth surfaces, Triangle for detailed geometry.
target_polycountintegerNo30000100 ~ 300000Target polygon count in generated model
symmetry_modestringNoautooff, auto, onControls symmetry behavior of the generated model
should_remeshbooleanNotrue-Enable remesh phase for cleaner topology
should_texturebooleanNotrue-Generate textures for the 3D model
enable_pbrbooleanNofalse-Generate PBR maps (metallic, roughness, normal)
ta_posebooleanNofalse-Generate model in A/T pose for rigging
texture_promptstringNo--Text prompt to guide texturing process
texture_imagestringNo--2D image to guide texturing process

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.