Meshy V7 Text to 3D
集成
模型 id
meshy/v7/text-to-3d
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/meshy/v7/text-to-3d?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/meshy/v7/text-to-3d?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/meshy/v7/text-to-3d", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/zh/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.ru/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "meshy/v7/text-to-3d",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
}
通过 Doitong API 调用 Meshy V7 Text to 3D 模型(meshy/v7/text-to-3d)。智能体文档:https://doitong.com/zh/developers/models/meshy/v7/text-to-3d.md
POST https://api.doitong.ru/v1/run/meshy/v7/text-to-3d?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
如果响应状态为 "queued" 或 "running",请轮询 GET https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20,直到状态变为 "succeeded";文件位于 outputs[].url。使用相同请求体 POST https://api.doitong.ru/v1/quote/meshy/v7/text-to-3d,可在运行前返回确切价格。
与示例类似的文件: $1.20 1,200 API 积分 · ≈ ₽129.10 运行前会测量你的文件 在此页面运行
你的新 API 密钥。 它仅在此时显示,并且已填入下方的代码和 API 密钥字段中。请妥善保密:切勿将其放入在浏览器中运行的代码。
构建请求
控件根据模型架构生成。更改控件时,代码和价格会同步更新。
POST
/run/meshy/v7/text-to-3d?wait=20
报价 → $1.20
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/meshy/v7/text-to-3d?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/meshy/v7/text-to-3d?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/meshy/v7/text-to-3d", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "meshy/v7/text-to-3d",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"wait_seconds": 20
}
}
}
关于 Meshy V7 Text to 3D
根据最多 600 个字符的 `prompt` 生成 3D 模型,并可选启用 `enable_prompt_expansion`。`mode`返回无纹理几何体或带纹理模型。通过 `model_type`选择 standard、lowpoly 或 smart-topology,将 `target_polycount`设置为 100 至 300000,并选择 standard 或 2k 的 `geometry_resolution`。可为人形角色添加绑定骨骼和动画预设。
参数
名称类型
默认值允许值
描述
prompt必填
类型string
≤ 600 个字符
要表示为 3D 模型的对象描述,限制为 600 个字符。
mode可选
类型enum
默认值full
previewfull
生成模式:'preview' 输出无纹理几何体,'full' 通过结合 preview 和 refine 输出带纹理模型。
seed可选
类型integer | null
将此种子与未更改的提示词结合使用,通常可复现之前的结果。
model_type可选
类型enum
默认值standard
standardlowpolysmart-topology
3D 网格模式:选择 'lowpoly' 可获得针对更整洁多边形优化的低多边形结果;在此模式下 Meshy 会忽略 topology、target_polycount 和 should_remesh。要获得常规高细节结果,请选择 'standard';或选择 'smart-topology',在几何体(preview)步骤中使用 Meshy-T2,从一开始分别生成整洁部件。
topology可选
类型enum
默认值triangle
quadtriangle
模型拓扑选项:Triangle 用于几何细节,Quad 用于表面平滑度。
target_polycount可选
类型integer
默认值30000
100 – 300,000
多边形数量目标;当 model_type 为 'smart-topology' 时上限为 15,000。在该模式下省略目标值会选择 Meshy 较低的默认值 4,000。
should_remesh可选
类型boolean
默认值true
将此项设为 false 可跳过重网格并接收原始三角网格;否则启用重网格阶段。
symmetry_mode可选
类型enum
默认值auto
offautoon
模型生成期间应用的对称设置。
enable_pbr可选
类型boolean
默认值false
控制是否在基础色旁生成金属度、粗糙度和法线 PBR 贴图。
is_a_t_pose可选
类型boolean
默认值false
设为 true 时启用 T-pose 生成;已弃用,改用 pose_mode。
pose_mode可选
类型enum
默认值
a-poset-pose
将字符串留空表示不指定生成模型的姿势,或使用 'a-pose' 请求 A-pose,使用 't-pose' 请求 T-pose。
enable_prompt_expansion可选
类型boolean
默认值false
允许大语言模型使用细节丰富提示词。启用此扩展不会改变提示词的含义。
texture_prompt可选
类型string | null
≤ 600 个字符
在 'full' 模式下使用额外文本提示词指导纹理生成;其他模式不会使用此项。
texture_image_url可选
类型url · image
用于纹理生成的 2D 参考图像,仅在 'full' 模式下应用。
enable_rigging可选
类型boolean
默认值false
自动人形绑定骨骼,最适合四肢清晰可辨的人形模型。启用后会为生成的模型绑定骨骼,并提供基本的行走和跑步动画。
rigging_height_meters可选
类型number
默认值1.7
> 0
当 enable_rigging 为 true 时,以米为单位提供估计的角色高度;否则此值无效。
enable_animation可选
类型boolean
默认值false
是否为已绑定骨骼的模型应用预设动画;需要 enable_rigging 为 true。
animation_action_id可选
类型integer
默认值92
Meshy 动画库预设 ID,可用动作列于 https://docs.meshy.ai/en/api/animation-library。仅当 enable_animation 为 true 时才会进行验证和使用:超出 [0, 696] 的值会以 422 拒绝,且 "Idle" 对应 `0`。
enable_safety_checker可选
类型boolean
默认值true
预处理安全检查开关:true 表示必须先通过输入安全检查才能处理。
geometry_resolution可选
类型enum
standard2k
网格几何体分辨率;支持的 Meshy-7 选项为 standard 和 2k。
ultra_mode可选
类型boolean
默认值false
已弃用的选项,由 geometry_resolution 取代;如果同时提供两者,则 geometry_resolution 优先。请改用 geometry_resolution='2k'。
必填
文件参数接受公开的 https:// URL、最大 10 MB 的 data: URI,或上传文件的 file_url。 文件
输出
GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "meshy/v7/text-to-3d",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 1200,
"usd": "1.20",
"charged": 1200,
"refunded": 0
},
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"output": {
"animation_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"animation_fbx": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"model_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"thumbnail": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"model_urls": {
"glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"fbx": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"obj": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"usdz": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"blend": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"stl": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
}
},
"texture_urls": [
{
"base_color": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"metallic": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"normal": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"roughness": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
}
}
],
"seed": 42,
"prompt": "A rustic, antique wooden treasure chest with a curved, domed lid, constructed from weathered, dark brown planks exhibiting prominent wood grain and subtle distress. It's heavily reinforced with broad, dark grey, oxidized metal bands secured by numerous circular rivets. Ornate, dark iron decorative elements featuring swirling foliate patterns and dragon motifs adorn the corners and lid. A prominent, circular, intricately carved metal lock plate with a central keyhole dominates the front, flanked by two large, dark metallic pull rings.",
"actual_prompt": "string",
"rigged_character_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"rigged_character_fbx": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"basic_animations": {
"walking_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"walking_fbx": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"walking_armature_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"running_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"running_fbx": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"running_armature_glb": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
}
},
"rig_task_id": "string"
},
"outputs": [
{
"type": "file",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
你的文件,由你选择每个 outputs[].url 都是存储中的副本:可永久保存(按 GB-月付费),也可免费保存 7 天,由账户设置或 ?storage= 决定。
每个模型的结构相同图像、视频和音频均包含 type、url、content_type、width、height 和 duration。output 是模型自身的结果对象。
输出字段
- animation_glb
- object {url, content_type, file_name, file_size} | null包含 GLB 3D 模型的动画结果;除非 enable_animation 为 true,否则响应不会包含此结果。
- animation_fbx
- object {url, content_type, file_name, file_size} | null包含 FBX 3D 模型的动画结果;除非 enable_animation 为 true,否则响应不会包含此结果。
- model_glb
- object {url, content_type, file_name, file_size}包含生成 3D 对象的 GLB 文件。
- thumbnail
- object {url, content_type, file_name, file_size} | null显示生成模型预览的缩略图。
- model_urls
- object {glb, fbx, obj, usdz, blend, stl}指向各种格式 3D 模型的链接。
- texture_urls
- array of object {base_color, metallic, normal, roughness}以对象数组表示的纹理文件。
- seed
- integer | null生成过程中使用的种子值。
- prompt
- string用于生成的文本提示词。
- actual_prompt
- string | null启用提示词扩展后实际应用于生成的提示词。
- rigged_character_glb
- object {url, content_type, file_name, file_size} | null以 GLB 角色文件返回的绑定骨骼结果;除非 enable_rigging 为 true,否则不会出现在响应中。
- rigged_character_fbx
- object {url, content_type, file_name, file_size} | null以 FBX 角色文件返回的绑定骨骼结果;除非 enable_rigging 为 true,否则不会出现在响应中。
- basic_animations
- object {walking_glb, walking_fbx, walking_armature_glb, running_glb, running_fbx, running_armature_glb} | null基本行走和跑步动画,仅在 enable_rigging 为 true 时包含。
- rig_task_id
- string | null绑定骨骼任务的标识符;仅在 enable_rigging 为 true 时包含。
其他 Meshy v7 变体
更多模型:文本转 3D
对于 AI 代理:此页面的 Markdown 版本位于 https://doitong.com/zh/developers/models/meshy/v7/text-to-3d.md. 所有模型和指南: https://doitong.com/developers/llms.txt