# Hunyuan 3D Pro Image to 3D API

> Izveido 3D modeli no priekšpuses attēla un neobligātiem papildu skatiem, kontrolējot skaldņu skaitu un PBR

Izveido 3D modeli no obligāta priekšpuses attēla `input_image_url`. Papildu aizmugures, kreisās, labās, augšas, apakšas un divi 45 grādu skati var pievienot detaļas. `generate_type` izvēlas teksturētu modeli vai baltu, tikai ģeometrijas modeli, `enable_pbr` pievieno PBR materiālus, bet `face_count` ir no 40,000 līdz 1,500,000. Atgriež GLB, citu formātu URL un sīktēlu.

- Model id: `hunyuan-3d/v3.1/pro/image-to-3d`
- Made by: Tencent
- Category: Image to 3D
- Output: 3d
- Price per run: $0.375 / run (cheapest run $0.375 (375 API credits))
- Run: `POST https://api.doitong.ru/v1/run/hunyuan-3d/v3.1/pro/image-to-3d`
- Quote: `POST https://api.doitong.ru/v1/quote/hunyuan-3d/v3.1/pro/image-to-3d`
- Docs page: https://doitong.com/lv/developers/models/hunyuan-3d/v3.1/pro/image-to-3d

## Pricing

Price: **$0.375 / run**. 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 $0.375 = 375 API credits (1 run × $0.375).

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/hunyuan-3d/v3.1/pro/image-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 |
|---|---|---|---|---|---|---|
| `input_image_url` |  | string (image URL) | yes |  |  | Priekšskata JPG, PNG vai WEBP attēla URL ar izšķirtspēju no 128 līdz 5000px un izmēru līdz 8 MB. Ieteicams vienkāršs fons un viens objekts, kas aizpilda vairāk nekā 50% kadra. |
| `back_image_url` |  | string (image URL) \| null | no |  |  | Aizmugures skata attēla URL, pēc izvēles; ieteicams JPG/PNG. |
| `left_image_url` |  | string (image URL) \| null | no |  |  | Kreisā sāna attēla URL, pēc izvēles; ieteicams JPG/PNG. |
| `right_image_url` |  | string (image URL) \| null | no |  |  | Labā sāna attēla URL, pēc izvēles; ieteicams JPG/PNG. |
| `top_image_url` |  | string (image URL) \| null | no |  |  | Skata no augšas attēla URL, pēc izvēles, pieejams tikai v3.1; ieteicams JPG/PNG. |
| `bottom_image_url` |  | string (image URL) \| null | no |  |  | Izvēles skata no apakšas attēla URL, atbalstīts tikai v3.1. Ieteicams JPG/PNG. |
| `left_front_image_url` |  | string (image URL) \| null | no |  |  | Izvēles attēla URL, pieejams tikai v3.1, vēlams JPG/PNG formātā. Attēls nodrošina 45 grādu skatu no kreisās priekšpuses. |
| `right_front_image_url` |  | string (image URL) \| null | no |  |  | Izvēles attēla URL, pieejams tikai v3.1, vēlams JPG/PNG formātā. Attēls nodrošina 45 grādu skatu no labās priekšpuses. |
| `generate_type` |  | enum (string) | no | `Normal` | `Normal`, `Geometry` | Izvēlieties teksturētu modeli ar Normal vai neteksturētu baltu modeli tikai ar ģeometriju ar Geometry. V3.1 versijā LowPoly/Sketch nevar atlasīt. |
| `enable_pbr` |  | boolean | no | `false` |  | PBR ģenerēšanas slēdzis, neaktīvs, ja generate_type ir Geometry. Pretējā gadījumā tā iespējošana pievieno ģenerētajiem materiāliem metāliskuma, raupjuma un normal tekstūras. |
| `face_count` |  | integer | no | `500000` | 40,000 – 1,500,000 | Vēlamais daudzstūra skaldņu skaits no 40,000 līdz 1,500,000. Noklusējums ir 500,000. |

File parameters (`input_image_url`, `back_image_url`, `left_image_url`, `right_image_url`, `top_image_url`, `bottom_image_url`, `left_front_image_url`, `right_front_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
{
  "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## 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/hunyuan-3d/v3.1/pro/image-to-3d?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# 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/hunyuan-3d/v3.1/pro/image-to-3d?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
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 = {
    "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/hunyuan-3d/v3.1/pro/image-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": "hunyuan-3d/v3.1/pro/image-to-3d",
      "input": {
        "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "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": "hunyuan-3d/v3.1/pro/image-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": 375,
    "usd": "0.375",
    "charged": 375,
    "refunded": 0
  },
  "input": {
    "input_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "output": {
    "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
      },
      "mtl": {
        "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": {
        "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
      }
    },
    "seed": 42
  },
  "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 |
|---|---|---|
| `model_glb` | object {url, content_type, file_name, file_size} | GLB fails ar ģenerēto 3D objektu. |
| `thumbnail` | object {url, content_type, file_name, file_size} \| null | Sīktēls ar ģenerētā modeļa priekšskatījumu. |
| `model_urls` | object {glb, fbx, obj, mtl, texture, usdz} | Saites uz 3D modeli dažādos formātos. |
| `seed` | integer \| null | Ģenerēšanas laikā izmantotā sēklas vērtība. |

## Related models

- [Hunyuan 3D Rapid Image to 3D](https://doitong.com/developers/models/hunyuan-3d/v3.1/rapid/image-to-3d.md) (`hunyuan-3d/v3.1/rapid/image-to-3d`): from $0.225 / request
- [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 3D Part Splitter](https://doitong.com/developers/models/hunyuan-3d/v3.1/part.md) (`hunyuan-3d/v3.1/part`): $0.45 / run
- [Hunyuan 3D Smart Topology](https://doitong.com/developers/models/hunyuan-3d/v3.1/smart-topology.md) (`hunyuan-3d/v3.1/smart-topology`): $0.75 / run
- [Hunyuan World · Image to World](https://doitong.com/developers/models/hunyuan_world/image-to-world.md) (`hunyuan_world/image-to-world`): $0.30 / request
- [Hunyuan3D](https://doitong.com/developers/models/hunyuan3d/v2.md) (`hunyuan3d/v2`): from $0.16 / request
- [Hunyuan3d V3 · Image to 3D](https://doitong.com/developers/models/hunyuan3d-v3/image-to-3d.md) (`hunyuan3d-v3/image-to-3d`): from $0.225 / run

## Links

- HTML page: https://doitong.com/developers/models/hunyuan-3d/v3.1/pro/image-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=hunyuan-3d/v3.1/pro/image-to-3d
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/hunyuan-3d/v3.1/pro/image-to-3d
