Meshy V7.1 Image To 3d API Documentation

Meshy V7.1 Image To 3d API Documentation

Playground

Try it on WaveSpeedAI!

Meshy 7.1 Image-to-3D turns a single reference image into a textured, PBR-ready 3D model with up to 4K geometry resolution for sharper surface detail, plus configurable topology, rigging, and animation for game assets, product visualization, 3D printing, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Meshy 7.1 Image to 3D converts a single reference image into a textured 3D mesh. Meshy 7.1 focuses on geometric detail: with geometry_resolution set to 2k or 4k, it reconstructs much finer surfaces and sharper silhouettes than standard geometry. It returns a GLB model, plus separate rigged and animated GLB files when rigging is enabled.


Why Choose This?

  • Finer geometric detail geometry_resolution goes up to 4k, capturing small surface details and cleaner silhouettes — useful for close-up renders and 3D printing.

  • Texture control Generate textured models, enable PBR maps, or guide textures with a prompt or reference image.

  • Production geometry controls Adjust topology, target polygon count, symmetry, and remeshing.

  • Optional rigging and animation Rig humanoid characters and apply animation presets in the same request.

  • Rigged and animated GLB files With rigging enabled, the rigged character and its walking, running and preset animations come back as separate GLB files.


Parameters

ParameterRequiredDescription
imageYesReference image for 3D model creation.
model_typeNostandard, lowpoly, or smart-topology. Default: standard.
topologyNoMesh topology: quad or triangle. Default: triangle.
target_polycountNoTarget polygon count. Range: 100–300000. Default: 30000.
symmetry_modeNooff, auto, or on. Default: auto.
should_remeshNoEnable remeshing for cleaner topology. Default: true.
should_textureNoGenerate textures. Default: true.
enable_pbrNoGenerate metallic, roughness, and normal maps. Default: false.
geometry_resolutionNostandard, 2k, or 4k. Higher values generate finer geometric detail. Default: standard.
pose_modeNoOptional humanoid pose: a-pose or t-pose. Leave unselected for no specific pose.
texture_promptNoOptional text guidance for texture generation. Maximum length: 600 characters.
texture_imageNoOptional image used to guide texture generation.
enable_riggingNoAutomatically rig a humanoid character. Default: false.
rigging_height_metersNoApproximate character height in meters when rigging is enabled. Default: 1.7.
enable_animationNoApply an animation preset. Requires enable_rigging. Default: false.
animation_action_idNoAnimation preset ID. Range: 0–696. Default: 92.

Output

outputs is a list of GLB file URLs in this order:

#FileReturned when
13D modelAlways
2Rigged characterenable_rigging is true
3Walking animationenable_rigging is true
4Running animationenable_rigging is true
5Animation preset from animation_action_idenable_animation is true

Pricing

ConfigurationCost
Untextured mesh (should_texture: false)$0.96
Textured mesh$1.44
2k geometry resolution+$0.24
4k geometry resolution+$0.48
Auto-rigging+$0.24
Animation preset+$0.144

Example Costs

ConfigurationCost
Untextured mesh (should_texture: false)$0.96
Textured mesh$1.44
Textured mesh + 4K geometry$1.92
Textured mesh + auto-rigging$1.68
Textured mesh + 4K geometry + auto-rigging + animation$2.304

Other parameters do not add separate charges.


Pro Tips

  • Use 4k geometry for hero assets, close-up renders, and 3D printing; use standard for quick iteration.
  • Higher geometry resolution applies to standard geometry; lowpoly and smart-topology ignore it.
  • Use texture_prompt to describe materials such as metal, leather, ceramic, fabric, or plastic.
  • Enable rigging only for humanoid characters; animation requires rigging.
  • Use a centered, well-lit image with one clear object and a clean background.

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",
  "model_type": "standard",
  "topology": "triangle",
  "target_polycount": 30000,
  "symmetry_mode": "auto",
  "should_remesh": true,
  "should_texture": true,
  "enable_pbr": false,
  "geometry_resolution": "standard",
  "pose_mode": "a-pose",
  "enable_rigging": false,
  "rigging_height_meters": 1.7,
  "enable_animation": false,
  "animation_action_id": 92
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/meshy/v7.1/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="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
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-Reference image for 3D model creation.
model_typestringNostandardstandard, lowpoly, smart-topologyGeometry mode: `standard` for a detailed mesh, `lowpoly` for cleaner low-polygon geometry, or `smart-topology` for optimized production topology.
topologystringNotrianglequad, triangleMesh topology. This setting is ignored when model_type is lowpoly.
target_polycountintegerNo30000100 ~ 300000Target number of polygons for standard remeshed output.
symmetry_modestringNoautooff, auto, onControls symmetry during model generation.
should_remeshbooleanNotrue-Enable remeshing for cleaner topology.
should_texturebooleanNotrue-Generate textures for the 3D model.
enable_pbrbooleanNofalse-Generate PBR maps in addition to the base color texture.
geometry_resolutionstringNostandardstandard, 2k, 4kGeometry resolution. `standard` is the default; `2k`/`4k` generate denser, finer surface detail (up to 4K) at extra cost. Only applies to `standard` geometry.
pose_modestringNo-a-pose, t-poseOptional humanoid pose. Leave unselected for no specific pose.
texture_promptstringNo--Optional text guidance for texture generation.
texture_imagestringNo--Optional image to guide texture generation.
enable_riggingbooleanNofalse-Automatically rig a humanoid character, including basic walking and running animations.
rigging_height_metersnumberNo1.70.01 ~ ∞Approximate character height in meters when rigging is enabled.
enable_animationbooleanNofalse-Apply an animation preset. Requires enable_rigging.
animation_action_idintegerNo920 ~ 696Meshy animation preset ID, used only when animation is enabled.

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.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
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.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
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.