# Meshy 6 · Text to 3D API

> 文本转 3D 网格生成器，支持预览或纹理模式，以及可选的 PBR、绑定骨骼和动画

根据最多 600 个字符的文本 `prompt` 创建 3D 模型。`mode` 选择无纹理几何体（`preview`）或带纹理结果（`full`）。`model_type` 可以是 standard、lowpoly 或 smart-topology，`target_polycount` 范围为 100 到 300000，smart topology 上限为 15000。还可以添加 PBR 贴图、姿态、人形绑定骨骼和动画预设。

- Model id: `meshy/v6/text-to-3d`
- Made by: Meshy
- Category: Text to 3D
- Output: 3d
- Price: $0.80 / request (cheapest run $0.80 (800 API credits))
- Run: `POST https://api.doitong.ru/v1/run/meshy/v6/text-to-3d`
- Quote: `POST https://api.doitong.ru/v1/quote/meshy/v6/text-to-3d`
- Docs page: https://doitong.com/zh-CN/developers/models/meshy/v6/text-to-3d

## Pricing

Price: **$0.80 / request**. Billed once per request.

The full example input below costs $0.80 = 800 API credits (1 request × 800 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.ru/v1/quote/meshy/v6/text-to-3d` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  | ≤ 600 characters | 要表示为 3D 模型的对象描述，长度限制为 600 个字符。 |
| `mode` |  | enum (string) | no | `full` | `preview`, `full` | 生成模式：'preview' 输出无纹理几何体，'full' 通过结合 preview 和 refine 输出带纹理模型。 |
| `seed` |  | integer \| null | no |  |  | 将此种子与未更改的提示词一起重复使用，通常可以复现之前的结果。 |
| `model_type` |  | enum (string) | no | `standard` | `standard`, `lowpoly`, `smart-topology` | 3D 网格模式：选择 'lowpoly' 可生成针对更整洁多边形优化的低多边形结果；在此模式下 Meshy 会忽略 topology、target_polycount 和 should_remesh。选择 'standard' 可生成传统的高细节结果，或选择 'smart-topology' 在几何体（preview）步骤中使用 Meshy-T2，从一开始就分别生成整洁部件。 |
| `topology` |  | enum (string) | no | `triangle` | `quad`, `triangle` | 模型拓扑选项：Triangle 用于几何细节，Quad 用于表面平滑度。 |
| `target_polycount` |  | integer | no | `30000` | 100 – 300,000 | 多边形数量目标；当 model_type 为 'smart-topology' 时上限为 15,000。在该模式下省略目标值会选择 Meshy 较低的默认值 4,000。 |
| `should_remesh` |  | boolean | no | `true` |  | 将此项设为 false 可跳过重新网格化并接收原始三角网格；否则启用重新网格化阶段。 |
| `symmetry_mode` |  | enum (string) | no | `auto` | `off`, `auto`, `on` | 生成模型时应用的对称设置。 |
| `enable_pbr` |  | boolean | no | `false` |  | 控制是否在基础色旁生成金属度、粗糙度和法线 PBR 贴图。 |
| `is_a_t_pose` |  | boolean | no | `false` |  | 通过 true 启用 T-pose 生成；已弃用，改用 pose_mode。 |
| `pose_mode` |  | enum (string) | no | `` | `a-pose`, `t-pose`, `` | 将字符串留空表示不指定生成模型的姿势，或使用 'a-pose' 请求 A-pose，使用 't-pose' 请求 T-pose。 |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | 允许大语言模型使用详细信息丰富提示词。启用此扩展不会改变提示词的含义。 |
| `texture_prompt` |  | string \| null | no |  | ≤ 600 characters | 在 'full' 模式下使用额外的文本提示指导纹理生成；其他模式不会使用此项。 |
| `texture_image_url` |  | string (image URL) \| null | no |  |  | 用于纹理生成的 2D 参考图，仅在 'full' 模式下应用。 |
| `enable_rigging` |  | boolean | no | `false` |  | 自动人形骨骼绑定，最适合四肢清晰可辨的人形模型。启用后会为生成模型绑定骨骼，并提供基本的行走和跑步动画。 |
| `rigging_height_meters` |  | number | no | `1.7` | > 0 | 当 enable_rigging 为 true 时，以米为单位提供估算的角色高度；否则此值无效。 |
| `enable_animation` |  | boolean | no | `false` |  | 是否为已绑定骨骼的模型应用预设动画；这要求 enable_rigging 为 true。 |
| `animation_action_id` |  | integer | no | `92` |  | Meshy 库动画预设 ID，可用动作列于 https://docs.meshy.ai/en/api/animation-library。仅当 enable_animation 为 true 时进行验证和使用：超出 [0, 696] 的值将以 422 拒绝，且 "Idle" 对应 `0`。 |
| `enable_safety_checker` |  | boolean | no | `true` |  | 预处理安全检查开关：true 表示处理前必须先完成输入安全检查。 |

File parameters (`texture_image_url`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# 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/v6/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"
```

### JavaScript

```javascript
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/v6/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 + ")");
```

### Python

```python
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/v6/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"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "meshy/v6/text-to-3d",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "meshy/v6/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": 800,
    "usd": "0.80",
    "charged": 800,
    "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"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `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 时包含。 |

## Related models

- [Meshy 6 · Image to 3D](https://doitong.com/developers/models/meshy/v6/image-to-3d.md) (`meshy/v6/image-to-3d`): from $0.80 / run
- [Meshy 6 Preview · Text to 3D](https://doitong.com/developers/models/meshy/v6-preview/text-to-3d.md) (`meshy/v6-preview/text-to-3d`): $0.80 / request
- [Meshy 7.1 Text to 3D](https://doitong.com/developers/models/meshy/v7.1/text-to-3d.md) (`meshy/v7.1/text-to-3d`): from $0.80 / run
- [Meshy V7 Text to 3D](https://doitong.com/developers/models/meshy/v7/text-to-3d.md) (`meshy/v7/text-to-3d`): from $0.80 / run
- [Hunyuan 3d](https://doitong.com/developers/models/hunyuan-3d/v3.1/rapid/text-to-3d.md) (`hunyuan-3d/v3.1/rapid/text-to-3d`): from $0.225 / request
- [Hunyuan 3D Pro Text to 3D](https://doitong.com/developers/models/hunyuan-3d/v3.1/pro/text-to-3d.md) (`hunyuan-3d/v3.1/pro/text-to-3d`): $0.375 / run
- [Hunyuan Motion \[0.46B\]](https://doitong.com/developers/models/hunyuan-motion/fast.md) (`hunyuan-motion/fast`): $0.06 / request
- [Hunyuan Motion \[1B\]](https://doitong.com/developers/models/hunyuan-motion.md) (`hunyuan-motion`): $0.08 / request

## Links

- HTML page: https://doitong.com/developers/models/meshy/v6/text-to-3d
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=meshy/v6/text-to-3d
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/meshy/v6/text-to-3d
