# Pixal3d API

> Vieną vaizdą paverčia tekstūruotu GLB 3D modeliu, suteikdamas išsamią kiekvieno generavimo etapo kontrolę

Priima vieną vaizdą ir grąžina GLB modelį bei naudotą sėklą. Struktūros, formos ir tekstūros etapai turi atskirus nukreipimo, perkeitimo mastelio, žingsnių skaičiaus ir triukšmo grafiko nustatymus. Išvesties `resolution` yra 1024 arba 1536, `texture_size` – 1024, 2048 arba 4096, o `decimation_target` nustato viršūnių skaičių nuo 5000 iki 1586021. `remesh` sukuria topologiją iš naujo.

- Model id: `pixal3d`
- Made by: Open model
- Category: Image to 3D
- Output: 3d
- Price: from $0.30 / request (cheapest run $0.30 (300 API credits))
- Run: `POST https://api.doitong.ru/v1/run/pixal3d`
- Quote: `POST https://api.doitong.ru/v1/quote/pixal3d`
- Docs page: https://doitong.com/lt/developers/models/pixal3d

## Pricing

Price: **from $0.30 / request** (the lowest tier; the quote prices your exact input). Billed once per request.

Price rules (the first rule that matches the input wins; a parameter you leave out counts as its default):

- When `resolution` = 1536: $0.42 (420 API credits) / request

The full example input below costs $0.30 = 300 API credits (1 request × 300 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/pixal3d` 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

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `image_url` | `image` | string (image URL) | yes |  |  | 3D konvertavimui naudojamo šaltinio vaizdo URL. |
| `seed` |  | integer \| null | no |  |  | Atkuriamam atsitiktiniam generavimui naudojama pradžia. |
| `resolution` |  | enum (integer) | no | `1024` | `1024`, `1536` | Išvesties raiška; ją didinant pridedama detalių, bet apdorojimas trunka ilgiau. |
| `ss_guidance_strength` |  | number | no | `7.5` | 0 – 10 | Pradinės 3D struktūros tikslumo valdymas: didesnė reikšmė teikia pirmenybę didesniam atitikimui įvesties vaizdui, tačiau gali padidinti triukšmą. |
| `ss_guidance_rescale` |  | number | no | `0.7` | 0 – 1 | 1 etapo valdymo artefaktų kontrolė: mažos reikšmės sustiprina valdymo poveikį, o didelės užtikrina stabilesnę išvestį. |
| `ss_sampling_steps` |  | integer | no | `12` | 1 – 50 | Pradinės struktūros triukšmo šalinimo žingsnių skaičius: papildomi žingsniai gali pagerinti kokybę, bet lėtina apdorojimą. |
| `ss_rescale_t` |  | number | no | `5` | 1 – 6 | Nustatykite perėjimo ryškumą pagal struktūros generavimo triukšmo tvarkaraštį: didesnė reikšmė daro perėjimus ryškesnius. |
| `shape_slat_guidance_strength` |  | number | no | `7.5` | 0 – 10 | Detalios geometrijos tikslumo valdymas: didesnis atitikimas įvesties vaizdui suteikia daugiau detalių, tačiau gali padidinti triukšmą. |
| `shape_slat_guidance_rescale` |  | number | no | `0.5` | 0 – 1 | Padidinkite šią reikšmę, kai geometrija atrodo triukšminga: tai sumažina stipraus valdymo formos etape sukeltus artefaktus. |
| `shape_slat_sampling_steps` |  | integer | no | `12` | 1 – 50 | Formos tobulinimo triukšmo šalinimo žingsnių skaičius: papildomi žingsniai gali sukurti tolygesnę geometriją, bet mažina spartą. |
| `shape_slat_rescale_t` |  | number | no | `3` | 1 – 6 | Nustatykite geometrinių detalių ryškumą pagal formos tobulinimo triukšmo tvarkaraštį; didesnė reikšmė suteikia ryškesnių detalių. |
| `tex_slat_guidance_strength` |  | number | no | `1` | 0 – 10 | Tekstūros spalvų tikslumo valdymas: didesnė reikšmė geriau išlaiko įvesties vaizdo spalvas ir didina sodrumą, tačiau gali sukelti persotinimą. |
| `tex_slat_guidance_rescale` |  | number | no | `0` | 0 – 1 | Padidinkite šią reikšmę, jei tekstūros triukšmingos arba matomos spalvų juostos: tai sumažina stipraus valdymo tekstūros etape sukeltus artefaktus. |
| `tex_slat_sampling_steps` |  | integer | no | `12` | 1 – 50 | Tekstūroms generuoti naudojamų triukšmo šalinimo žingsnių skaičius. Didesnis skaičius užtrunka ilgiau, bet gali suteikti švaresnes tekstūras. |
| `tex_slat_rescale_t` |  | number | no | `3` | 1 – 6 | Nustatykite tekstūros detalių ryškumą pagal tekstūros generavimo triukšmo tvarkaraštį; didesnė reikšmė suteikia ryškesnių detalių. |
| `mesh_scale` |  | number | no | `1` | 0.1 – 4 | Keiskite numanomo tinklo mastelį, kad paveiktumėte modelio naudojamą atstumo iki kameros įvertį. |
| `max_num_tokens` |  | integer | no | `49152` | 4,096 – 131,072 | HR žetonų riba kaskadiniam formos atrinkikliui; didesnės reikšmės suteikia tikslesnę geometriją, o mažesnės taupo atmintį ir apdorojimo laiką. |
| `decimation_target` |  | integer | no | `200000` | 5,000 – 1,586,021 | Tinklo sudėtingumo tikslas, išreikštas galutinio rezultato viršūnių skaičiumi. Mažinant šį tikslą mažėja failo dydis, bet prarandama detalių. |
| `texture_size` |  | enum (integer) | no | `2048` | `1024`, `2048`, `4096` | Tinklo tekstūros kepimo raiška. Didinant raišką gaunama daugiau paviršiaus detalių, bet failai tampa didesni. |
| `remesh` |  | boolean | no | `true` |  | Tinklo topologijos atkūrimas, paprastai naudingas tolesniam naudojimui, nes sukuria švaresnius trikampius, tačiau pailgina apdorojimą. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Patikrą galima sušvelninti nustačius false, jei skambinantysis turi teisę tai daryti. |

File parameters (`image`) 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
{
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "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/pixal3d?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "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/pixal3d?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "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 = {
    "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/pixal3d", 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": "pixal3d",
      "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": "pixal3d",
  "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": 300,
    "usd": "0.30",
    "charged": 300,
    "refunded": 0
  },
  "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
    },
    "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 formatu sugeneruotas 3D modelis. |
| `seed` | integer | Faktiškai panaudota pradžios reikšmė. |

## Related models

- [ReconViaGen 0.5](https://doitong.com/developers/models/reconviagen-0.5.md) (`reconviagen-0.5`): from $0.25 / request
- [Hi3D Image to 3D](https://doitong.com/developers/models/hitem3d/hi3d/image-to-3d.md) (`hitem3d/hi3d/image-to-3d`): $0.50 / run
- [Hi3D Image to 3D · v3.0](https://doitong.com/developers/models/hitem3d/hi3d/v3.0/image-to-3d.md) (`hitem3d/hi3d/v3.0/image-to-3d`): from $1.80 / run
- [Hi3D Multiview to 3D · Multi View to 3D](https://doitong.com/developers/models/hitem3d/hi3d/multi-view-to-3d.md) (`hitem3d/hi3d/multi-view-to-3d`): $0.50 / run
- [Hi3D Multiview to 3D · v3.0 · Multi View to 3D](https://doitong.com/developers/models/hitem3d/hi3d/v3.0/multi-view-to-3d.md) (`hitem3d/hi3d/v3.0/multi-view-to-3d`): from $1.80 / run
- [Hunyuan 3D Pro Image to 3D](https://doitong.com/developers/models/hunyuan-3d/v3.1/pro/image-to-3d.md) (`hunyuan-3d/v3.1/pro/image-to-3d`): $0.375 / run
- [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 World · Image to World](https://doitong.com/developers/models/hunyuan_world/image-to-world.md) (`hunyuan_world/image-to-world`): $0.30 / request

## Links

- HTML page: https://doitong.com/developers/models/pixal3d
- 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=pixal3d
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/pixal3d
