Meshy V7.1 Multi Image To 3d API Documentation

Meshy V7.1 Multi Image To 3d API Documentation

Playground

Try it on WaveSpeedAI!

Meshy 7.1 Multi-Image-to-3D reconstructs textured, PBR-ready 3D models from one to four views of the same object, with 2K geometry resolution for finer detail and configurable topology, rigging, and animation for game assets, product visualization, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Meshy 7.1 Multi-Image to 3D reconstructs a textured 3D mesh from one to four images of the same object taken from different angles. Meshy 7.1 focuses on geometric detail: set geometry_resolution to 2k for finer surfaces and sharper silhouettes. 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 2k, 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
imagesYesOne to four images of the same object from different angles.
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 or 2k. 2k generates 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
Auto-rigging+$0.24
Animation preset+$0.144

Example Costs

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

Other parameters do not add separate charges.


Pro Tips

  • Use 2k geometry for hero assets, close-up renders, and 3D printing; use standard for quick iteration.
  • Higher geometry resolution applies to standard geometry.
  • Use texture_prompt to describe materials such as metal, leather, ceramic, fabric, or plastic.
  • Enable rigging only for humanoid characters; animation requires rigging.
  • Use consistent views of the same object with matching lighting and scale.

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'
{
  "images": [
    "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,
  "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/multi-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
imagesarray<string>Yes-1 ~ 4 items · each item: 1 ~ unlimited charactersOne to four images of the same object from different angles.
topologystringNotrianglequad, triangleMesh topology for the generated model.
target_polycountintegerNo30000100 ~ 300000Target number of polygons for 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, 2kGeometry resolution. `standard` is the default; `2k` generate denser, finer surface detail (up to 2K) 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.