# Meshy V7 Text to 3D API

> Maandishi hadi 3D kwa Meshy 7: hali ya preview au full, jiometri ya 2k, PBR, rigging na chaguo za uhuishaji

Huzalisha modeli ya 3D kutoka kwa `prompt` yenye hadi herufi 600, ikiwa na `enable_prompt_expansion` ya hiari. `mode` hurejesha jiometri isiyo na tekstura au modeli yenye tekstura. Chagua standard, lowpoly au smart-topology kupitia `model_type`, weka `target_polycount` kutoka 100 hadi 300000, na uchague standard au 2k `geometry_resolution`. Rigging na mipangilio ya uhuishaji inaweza kuongezwa kwa wahusika wa humanoid.

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

## Pricing

Price: **from $0.80 / run** (the lowest tier; the quote prices your exact input). Price per run: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $1.20 = 1200 API credits (1 run × $1.20).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/meshy/v7/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 | Maelezo ya kitu kitakachowakilishwa kama modeli ya 3D, yenye kikomo cha herufi 600. |
| `mode` |  | enum (string) | no | `full` | `preview`, `full` | Hali ya uzalishaji: 'preview' hutoa jiometri bila tekstura, huku 'full' ikitoa modeli yenye tekstura kwa kuchanganya preview na refine. |
| `seed` |  | integer \| null | no |  |  | Tumia tena mbegu hii pamoja na kidokezo kisichobadilishwa ili kwa kawaida kuzalisha tena tokeo la awali. |
| `model_type` |  | enum (string) | no | `standard` | `standard`, `lowpoly`, `smart-topology` | Hali ya meshi ya 3D: chagua 'lowpoly' kwa tokeo la low-poly lililoboreshwa kwa poligoni safi zaidi; katika hali hii Meshy hupuuza topology, target_polycount na should_remesh. Kwa tokeo la kawaida lenye maelezo mengi chagua 'standard', au chagua 'smart-topology' kutumia Meshy-T2 wakati wa hatua ya jiometri (preview) na kupata sehemu safi zinazozalishwa kando tangu mwanzo. |
| `topology` |  | enum (string) | no | `triangle` | `quad`, `triangle` | Chaguo la topolojia ya modeli kati ya Triangle kwa maelezo ya kijiometri na Quad kwa ulaini wa uso. |
| `target_polycount` |  | integer | no | `30000` | 100 – 300,000 | Lengo la idadi ya poligoni, lililowekewa kikomo cha 15,000 wakati model_type ni 'smart-topology'. Kuacha lengo katika hali hiyo huchagua chaguo-msingi la chini la Meshy la 4,000. |
| `should_remesh` |  | boolean | no | `true` |  | Ruka kutengeneza meshi upya na upokee meshi ghafi ya pembetatu kwa kuweka hii kuwa false; vinginevyo wezesha hatua ya kutengeneza meshi upya. |
| `symmetry_mode` |  | enum (string) | no | `auto` | `off`, `auto`, `on` | Mipangilio ya ulinganifu inayotumika wakati wa kuzalisha modeli. |
| `enable_pbr` |  | boolean | no | `false` |  | Hudhibiti uzalishaji wa ramani za PBR za metali, ukwaruzaji na kawaida pamoja na rangi msingi. |
| `is_a_t_pose` |  | boolean | no | `false` |  | Swichi ya uzalishaji wa mkao wa T inayowezeshwa na true; imepitwa na wakati na imebadilishwa na pose_mode. |
| `pose_mode` |  | enum (string) | no | `` | `a-pose`, `t-pose`, `` | Acha mfuatano ukiwa tupu ili usibainishe mkao wa modeli inayozalishwa, au omba mkao wa A kwa 'a-pose' au mkao wa T kwa 't-pose'. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Ruhusu modeli kubwa ya lugha kuimarisha kidokezo kwa maelezo. Kuwasha upanuzi huu hakubadilishi maana ya kidokezo. |
| `texture_prompt` |  | string \| null | no |  | ≤ 600 characters | Elekeza uwekaji wa tekstura kwa kidokezo cha ziada cha maandishi katika hali ya 'full'; hali nyingine hazitumii. |
| `texture_image_url` |  | string (image URL) \| null | no |  |  | Picha ya marejeleo ya 2D kwa uzalishaji wa tekstura, inayotumika tu katika hali ya 'full'. |
| `enable_rigging` |  | boolean | no | `false` |  | Uwekaji wa mifupa kiotomatiki kwa humanoid, unaofaa zaidi kwa modeli za humanoid ambazo viungo vyake vinatofautika wazi. Kuiwezesha huwekea modeli inayozalishwa mifupa na kutoa uhuishaji wa msingi wa kutembea na kukimbia. |
| `rigging_height_meters` |  | number | no | `1.7` | > 0 | Toa urefu unaokadiriwa wa mhusika kwa mita wakati enable_rigging ni true; vinginevyo thamani hii haina athari. |
| `enable_animation` |  | boolean | no | `false` |  | Ikiwa modeli yenye mifupa itapokea uhuishaji wa chaguomsingi, ambao unahitaji enable_rigging kuwa true. |
| `animation_action_id` |  | integer | no | `92` |  | Kitambulisho cha uhuishaji wa Meshy library, chenye vitendo vinavyopatikana kwenye https://docs.meshy.ai/en/api/animation-library. Uthibitishaji na matumizi hutokea tu enable_animation ikiwa true: thamani zilizo nje ya [0, 696] hukataliwa kwa 422, na "Idle" inalingana na `0`. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Swichi ya ukaguzi wa usalama wa uchakataji: true hufanya ukaguzi wa usalama wa ingizo kuwa sharti la uchakataji. |
| `geometry_resolution` |  | enum (string) \| null | no |  | `standard`, `2k` | Mwonekano wa jiometri ya meshi; chaguo za Meshy-7 zinazotumika ni standard na 2k. |
| `ultra_mode` |  | boolean | no | `false` |  | Chaguo lililopitwa na wakati lililobadilishwa na geometry_resolution, ambayo hushinda ikiwa zote zimetolewa; tumia geometry_resolution='2k' badala yake. |

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.com/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.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/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 + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/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"])
```

### MCP

The MCP server at `https://api.doitong.com/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/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
    }
  }
}
```

## 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/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.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `animation_glb` | object {url, content_type, file_name, file_size} \| null | Tokeo la uhuishaji lenye modeli ya 3D kama GLB; jibu huacha tokeo hili isipokuwa enable_animation iwe true. |
| `animation_fbx` | object {url, content_type, file_name, file_size} \| null | Tokeo la uhuishaji lenye modeli ya 3D kama FBX; jibu huacha tokeo hili isipokuwa enable_animation iwe true. |
| `model_glb` | object {url, content_type, file_name, file_size} | Faili la GLB lililo na kitu cha 3D kilichozalishwa. |
| `thumbnail` | object {url, content_type, file_name, file_size} \| null | Kijipicha kinachoonyesha onyesho la modeli iliyozalishwa. |
| `model_urls` | object {glb, fbx, obj, usdz, blend, stl} | Viungo vya modeli ya 3D katika miundo mbalimbali. |
| `texture_urls` | array of object {base_color, metallic, normal, roughness} | Faili za tekstura zinazowakilishwa kama safu ya vitu. |
| `seed` | integer \| null | Thamani ya mbegu inayotumika wakati wa uzalishaji. |
| `prompt` | string | Kidokezo cha maandishi kilichotolewa kwa uzalishaji. |
| `actual_prompt` | string \| null | Kidokezo kilichotumika hasa kwenye uzalishaji wakati upanuzi wa kidokezo uliwezeshwa. |
| `rigged_character_glb` | object {url, content_type, file_name, file_size} \| null | Tokeo la uwekaji mifupa linalotolewa kama faili la mhusika wa GLB; halipo kwenye jibu isipokuwa enable_rigging iwe true. |
| `rigged_character_fbx` | object {url, content_type, file_name, file_size} \| null | Tokeo la uwekaji mifupa linalotolewa kama faili la mhusika wa FBX; halipo kwenye jibu isipokuwa enable_rigging iwe true. |
| `basic_animations` | object {walking_glb, walking_fbx, walking_armature_glb, running_glb, running_fbx, running_armature_glb} \| null | Uhuishaji wa msingi wa kutembea na kukimbia, unaojumuishwa tu ikiwa enable_rigging ni true. |
| `rig_task_id` | string \| null | Kitambulisho cha kazi ya uwekaji mifupa; kinajumuishwa tu ikiwa enable_rigging ni true. |

## Related models

- [Meshy V7 Image to 3D](https://doitong.com/developers/models/meshy/v7/image-to-3d.md) (`meshy/v7/image-to-3d`): from $0.80 / run
- [Meshy V7 Multi Image to 3D](https://doitong.com/developers/models/meshy/v7/multi-image-to-3d.md) (`meshy/v7/multi-image-to-3d`): from $0.80 / run
- [Meshy 7 Retexture](https://doitong.com/developers/models/meshy/v7/retexture.md) (`meshy/v7/retexture`): from $0.30 / request
- [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 6 · Text to 3D](https://doitong.com/developers/models/meshy/v6/text-to-3d.md) (`meshy/v6/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
- [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

## Links

- HTML page: https://doitong.com/developers/models/meshy/v7/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/v7/text-to-3d
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/meshy/v7/text-to-3d
