# Meshy V7 Text to 3D API

> Teksto vertimas į 3D naudojant Meshy 7: peržiūros arba visas režimas, 2k geometrija, PBR, skeletavimo ir animacijos parinktys

Generuoja 3D modelį iš iki 600 simbolių `prompt`, pasirinktinai naudojant `enable_prompt_expansion`. `mode` grąžina netekstūruotą geometriją arba tekstūruotą modelį. Naudodami `model_type` pasirinkite standard, lowpoly arba smart-topology, nustatykite `target_polycount` nuo 100 iki 300000 ir pasirinkite standard arba 2k `geometry_resolution`. Humanoidiniams personažams galima pridėti skeletavimą ir animacijos išankstinius nustatymus.

- 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/lt/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 | Objekto, kuris bus pavaizduotas kaip 3D modelis, aprašymas, apribotas 600 simbolių. |
| `mode` |  | enum (string) | no | `full` | `preview`, `full` | Generavimo režimas: 'preview' pateikia geometriją be tekstūrų, o 'full' pateikia tekstūruotą modelį, sujungdamas preview ir refine. |
| `seed` |  | integer \| null | no |  |  | Pakartotinai naudokite šią pradžią su nepakitusiu raginį, kad paprastai atkurtumėte ankstesnį rezultatą. |
| `model_type` |  | enum (string) | no | `standard` | `standard`, `lowpoly`, `smart-topology` | 3D tinklelio režimas: pasirinkite 'lowpoly', jei reikia mažo poligonų skaičiaus rezultato, optimizuoto tvarkingesniems poligonams; šiame režime Meshy nepaiso topology, target_polycount ir should_remesh. Įprastam detaliam rezultatui pasirinkite 'standard', o 'smart-topology' – jei norite naudoti Meshy-T2 geometrijos (preview) etape ir nuo pradžių gauti atskirai sugeneruotas tvarkingas dalis. |
| `topology` |  | enum (string) | no | `triangle` | `quad`, `triangle` | Modelio topologijos pasirinkimas: Triangle suteikia geometrinių detalių, o Quad – paviršiaus glotnumo. |
| `target_polycount` |  | integer | no | `30000` | 100 – 300,000 | Tikslinis poligonų skaičius, apribotas iki 15,000, kai model_type yra 'smart-topology'. Šiame režime nenurodžius tikslo pasirenkamas mažesnis Meshy numatytasis dydis – 4,000. |
| `should_remesh` |  | boolean | no | `true` |  | Nustatykite false, kad praleistumėte pakartotinį tinklelio kūrimą ir gautumėte neapdorotą trikampį tinklelį; kitu atveju įjunkite šį etapą. |
| `symmetry_mode` |  | enum (string) | no | `auto` | `off`, `auto`, `on` | Generuojant modelį taikomas simetrijos nustatymas. |
| `enable_pbr` |  | boolean | no | `false` |  | Nurodo, ar kartu su pagrindine spalva generuojami metalinio blizgesio, šiurkštumo ir normalės PBR žemėlapiai. |
| `is_a_t_pose` |  | boolean | no | `false` |  | T pozos generavimo jungiklis, įjungiamas true; pasenęs ir pakeistas pose_mode. |
| `pose_mode` |  | enum (string) | no | `` | `a-pose`, `t-pose`, `` | Palikite eilutę tuščią, jei nenorite nurodyti sugeneruoto modelio pozos, arba prašykite A pozos naudodami 'a-pose', o T pozos – 't-pose'. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Leidžia dideliam kalbos modeliui papildyti raginį detalėmis. Įjungus šį išplėtimą raginio reikšmė nesikeičia. |
| `texture_prompt` |  | string \| null | no |  | ≤ 600 characters | Režimu 'full' tekstūravimą papildo tekstinis raginys; kiti režimai jo nenaudoja. |
| `texture_image_url` |  | string (image URL) \| null | no |  |  | 2D atraminis vaizdas tekstūrų generavimui, taikomas tik režimu 'full'. |
| `enable_rigging` |  | boolean | no | `false` |  | Automatinis humanoidų rigging, veiksmingiausias humanoidiniams modeliams su aiškiai atskiriamomis galūnėmis. Jį įjungus sugeneruotam modeliui pritaikomas rigging ir pateikiamos pagrindinės ėjimo bei bėgimo animacijos. |
| `rigging_height_meters` |  | number | no | `1.7` | > 0 | Pateikite numatomą veikėjo ūgį metrais, kai enable_rigging yra true; kitu atveju ši reikšmė neturi poveikio. |
| `enable_animation` |  | boolean | no | `false` |  | Nurodo, ar animuotam modeliui suteikiama išankstinė animacija; tam enable_rigging turi būti true. |
| `animation_action_id` |  | integer | no | `92` |  | Meshy bibliotekos animacijos išankstinio nustatymo ID; galimi veiksmai pateikti adresu https://docs.meshy.ai/en/api/animation-library. Tikrinimas ir naudojimas taikomi tik kai enable_animation yra true: reikšmės už [0, 696] ribų atmetamos su 422, o "Idle" atitinka `0`. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Išankstinio saugos tikrinimo jungiklis: true reiškia, kad prieš apdorojimą būtina patikrinti įvesties saugą. |
| `geometry_resolution` |  | enum (string) \| null | no |  | `standard`, `2k` | Tinklelio geometrijos raiška; palaikomos Meshy-7 parinktys yra standard ir 2k. |
| `ultra_mode` |  | boolean | no | `false` |  | Pasenusi parinktis, pakeista geometry_resolution; jei pateiktos abi, pirmenybė teikiama geometry_resolution. Naudokite geometry_resolution='2k'. |

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 | Animacijos rezultatas su 3D modeliu GLB formatu; atsakyme jis nepateikiamas, jei enable_animation nėra true. |
| `animation_fbx` | object {url, content_type, file_name, file_size} \| null | Animacijos rezultatas su 3D modeliu FBX formatu; atsakyme jis nepateikiamas, jei enable_animation nėra true. |
| `model_glb` | object {url, content_type, file_name, file_size} | GLB failas su sugeneruotu 3D objektu. |
| `thumbnail` | object {url, content_type, file_name, file_size} \| null | Miniatiūra, kurioje rodoma sugeneruoto modelio peržiūra. |
| `model_urls` | object {glb, fbx, obj, usdz, blend, stl} | Nuorodos į įvairių formatų 3D modelį. |
| `texture_urls` | array of object {base_color, metallic, normal, roughness} | Tekstūrų failai, pateikiami kaip objektų masyvas. |
| `seed` | integer \| null | Generuojant naudojama pradinė reikšmė. |
| `prompt` | string | Generavimui pateiktas tekstinis raginys. |
| `actual_prompt` | string \| null | Generavimui faktiškai taikytas raginys, kai buvo įjungtas raginio išplėtimas. |
| `rigged_character_glb` | object {url, content_type, file_name, file_size} \| null | Rigging rezultatas, pateikiamas kaip GLB veikėjo failas; atsakyme jo nėra, jei enable_rigging nėra true. |
| `rigged_character_fbx` | object {url, content_type, file_name, file_size} \| null | Rigging rezultatas, pateikiamas kaip FBX veikėjo failas; atsakyme jo nėra, jei enable_rigging nėra true. |
| `basic_animations` | object {walking_glb, walking_fbx, walking_armature_glb, running_glb, running_fbx, running_armature_glb} \| null | Pagrindinės ėjimo ir bėgimo animacijos, įtraukiamos tik kai enable_rigging yra true. |
| `rig_task_id` | string \| null | Rigging užduoties identifikatorius; įtraukiamas tik kai enable_rigging yra 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
