Meshy 7.1 Text to 3D API
meshy/v7.1/text-to-3dMeshy 7.1 Text to 3D turns a written object description into a textured 3D model with up to 4K geometry, quad or triangle topology and PBR maps. Start with a geometry preview or go straight to the textured model, then add rigging and an animation preset for humanoid characters.
Input
Output
Meshy 7.1 Text to 3D model readyMeshy 7.1 Text to 3D API
Quick Start
Submit Meshy 7.1 Text to 3D inputs, retain task_id, and query the task for the returned files.
Authenticate for Meshy 7.1 Text to 3D
Send your Vidgo API key in the Bearer authorization header.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer YOUR_API_KEY
Submit a Meshy 7.1 Text to 3D request
Place model at the request root and the prompt value inside input.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "meshy/v7.1/text-to-3d",
"input": {
"prompt": "A vintage brass diving helmet with three round porthole windows, riveted seams, a leather neck collar and a small air valve on the side",
"mode": "full",
"model_type": "standard",
"geometry_resolution": "4k",
"topology": "triangle",
"target_polycount": 30000,
"should_remesh": true,
"symmetry_mode": "auto",
"enable_pbr": true
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Check the Meshy 7.1 Text to 3D task
Query the returned task_id until status is finished or failed.
Status endpoint
GET https://api.vidgo.ai/api/generate/status/{task_id}When status is finished, inspect files and download the returned assets.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "P3B7BJMQ44EBHPR5",
"status": "not_started",
"created_time": "2026-11-05T07:07:06"
}
}{
"code": 200,
"data": {
"task_id": "P3B7BJMQ44EBHPR5",
"status": "finished",
"files": [
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/model-01.glb",
"file_type": "3d",
"label": "model_glb",
"format": "glb",
"file_name": "model-01.glb"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/model-01.fbx",
"file_type": "3d",
"label": "model_fbx",
"format": "fbx",
"file_name": "model-01.fbx"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/model-01.obj",
"file_type": "3d",
"label": "model_obj",
"format": "obj",
"file_name": "model-01.obj"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/model-01.stl",
"file_type": "3d",
"label": "model_stl",
"format": "stl",
"file_name": "model-01.stl"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/model-01.usdz",
"file_type": "3d",
"label": "model_usdz",
"format": "usdz",
"file_name": "model-01.usdz"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/meshy/v7.1/text-to-3d/v2/01/thumbnail-01.png",
"file_type": "image",
"label": "thumbnail",
"format": "png",
"file_name": "thumbnail-01.png"
}
],
"created_time": "2026-11-05T07:07:06",
"error_message": null,
"progress": 100
}
}Read Meshy 7.1 Text to 3D files
Read each returned files item for file_url, file_type, label, and format.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "meshy/v7.1/text-to-3d",
"input": {
"prompt": "A vintage brass diving helmet with three round porthole windows, riveted seams, a leather neck collar and a small air valve on the side",
"mode": "full",
"model_type": "standard",
"geometry_resolution": "4k",
"topology": "triangle",
"target_polycount": 30000,
"should_remesh": true,
"symmetry_mode": "auto",
"enable_pbr": true
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneInput Parameters
Place model and optional callback_url at the request root; put the fields listed below inside input.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| model | string | Yes | — | meshy/v7.1/text-to-3d |
| input | object | Yes | — | Generation settings for this endpoint. |
| input.prompt | string | Yes | — | Describe one object, its main parts, shape and materials in 1–600 characters. |
| input.mode | string | No | full | preview builds geometry only (160 credits); full adds textures (240 credits). Default full. |
| input.model_type | string | No | standard | standard keeps the regular mesh; smart-topology builds a cleaner, lighter mesh with a 100–15,000 polygon target. Default standard. |
| input.geometry_resolution | string | No | — | Geometry detail: standard, 2k, 4k. Available with model_type standard. Leave unset for the default. |
| input.topology | string | No | triangle | triangle or quad faces. Default triangle. |
| input.target_polycount | integer | No | 30000 | Target polygon count: 100–300,000 (default 30,000), or 100–15,000 (default 4,000) with smart-topology. |
| input.should_remesh | boolean | No | true | true remeshes to the chosen topology and polygon target; false keeps the raw triangle mesh. Default true. |
| input.symmetry_mode | string | No | auto | off, auto or on. Default auto. |
| input.seed | integer | No | — | Optional integer to repeat a generation setup. |
| input.enable_prompt_expansion | boolean | No | false | true lets the model add detail to a short prompt. Default false. |
| input.enable_pbr | boolean | No | false | Adds metallic, roughness and normal maps to the base color. |
| input.texture_prompt | string | No | — | Up to 600 characters describing colors, patterns and materials. |
| input.texture_image_url | string | No | — | A public image URL used as a texture reference. |
| input.pose_mode | string | No | "" | a-pose or t-pose for characters, or empty for no pose. Default empty. |
| input.enable_rigging | boolean | No | false | Adds a humanoid skeleton (+40 credits). Default false. |
| input.rigging_height_meters | number | No | 1.7 | Character height in meters for rigging, greater than 0. Default 1.7. |
| input.enable_animation | boolean | No | false | Applies an animation preset (+24 credits). Requires enable_rigging true. |
| input.animation_action_id | integer | No | 92 | Animation preset ID from 0 to 696. Default 92. |
| input.enable_safety_checker | boolean | No | true | Runs the upstream safety checker. Default true. |
| callback_url | string | No | — | Provide a public HTTP(S) URL for completed or failed task notifications. |
Response Fields
The status response reports task state, progress, and returned files.
| Field | Type | Description |
|---|---|---|
| code | integer | API response code. |
| data.task_id | string | Task ID for status queries. |
| data.status | string | Task state: not_started, running, finished, or failed. |
| data.progress | integer | Reported generation progress from 0 to 100. |
| data.files | array | Generated model, preview image, and companion files. |
| data.files[].file_url | string | URL for a returned file. |
| data.files[].file_type | string | File category: 3d, image or other. |
| data.files[].label | string | File role, such as model_glb or thumbnail. |
| data.files[].format | string | File format, such as glb or png. |
| data.files[].file_name | string | File name when provided. |
| data.files[].file_size | integer | File size in bytes when provided. |
| data.error_message | string | null | Error details for a failed task. |
Task Lifecycle
Use task_id to check the same generation until it finishes or fails.
not_startedThe task has been accepted and awaits generation.
runningThe 3D model is being generated; continue querying this task.
finishedGeneration is complete; read files for the assets.
failedThe task failed; read error_message before submitting another request.
Polling and Errors
- Keep the task IDIf a status query is interrupted, use the same task_id to retrieve the latest state.
- Download returned assetsUse file_url and file_name from each returned file to download the model and companion assets.
- Review a failed generationWhen status is failed, read error_message, then review the input before submitting a new task.
Endpoint Specifications
| Item | Value | Description |
|---|---|---|
| Input | Prompt, 1–600 characters | Describe one object, its parts and materials. |
| Geometry resolution | standard, 2k, 4k | Requires model_type standard. |
| Topology | triangle, quad | Target polycount 100–300,000; 100–15,000 with Smart Topology. |
| Output files | GLB, FBX, OBJ, USDZ, STL | Formats returned depend on the task; read files for the full list. |
| Price | $1.200 default | 160 credits geometry + 80 texture; +40 rigging, +24 animation. |
Meshy 7.1 Text to 3D API frequently asked questions
What is the Meshy 7.1 Text to 3D API?
Meshy 7.1 Text to 3D is a Meshy model for generating 3D assets from text descriptions. It turns a prompt into a textured model with up to 4K geometry, triangle or quad topology, PBR maps and optional rigging and animation. Built on Meshy's detail-focused 7.1 generation, it follows the parts and materials you describe while letting you set polygon targets and symmetry. You can call it programmatically or try it from the playground above.
When should I use preview mode in Meshy 7.1 Text to 3D?
Use mode preview to get geometry only for 160 credits while you iterate on the prompt. Switch to full (240 credits, the default) for the textured model you plan to keep.
Does Meshy 7.1 Text to 3D support 4K geometry?
Yes. Set geometry_resolution to 4k with model_type standard. The option controls mesh detail, not the size of texture images; standard and 2k give lighter results.
How does prompt expansion work in Meshy 7.1 Text to 3D?
Set enable_prompt_expansion to true and the model adds detail to a short prompt before generating. Keep it off when you want the description followed as written, and add a seed to repeat a setup.
How much does Meshy 7.1 Text to 3D cost?
A default request is textured and costs 240 credits ($1.200). Geometry only costs 160 credits ($0.800); rigging adds 40 ($0.200) and animation adds 24 ($0.120). Resolution, topology and polygon count do not change the price.
How does Meshy 7.1 Text to 3D rig and animate characters?
Set enable_rigging to true to add a humanoid skeleton, with rigging_height_meters for the character's height (default 1.7). Then set enable_animation to true and pick animation_action_id from 0 to 696 (default 92). A-pose or T-pose input helps the rig.
Which files does Meshy 7.1 Text to 3D return?
Finished tasks list their files in files: typically a GLB, plus FBX, OBJ, USDZ or STL when available, texture maps and a thumbnail. Rigged and animated files are added when you request them.
How is Meshy 7.1 Text to 3D different from Meshy 6 Text to 3D?
Meshy 7.1 Text to 3D belongs to Meshy's newer, detail-focused generation, with up to 4K geometry resolution, Smart Topology and animation presets numbered 0–696. Meshy 6 Text to 3D costs 60 credits ($0.300) per generation on Vidgo and suits quick drafts; Meshy 7.1 Text to 3D costs 160–304 credits depending on options.