# Hyper3D - Rodin V2.5 - Text to 3D - Fast API

> Conversion rapide de texte en 3D avec Rodin V2.5, limitée aux niveaux bas pour le prototypage rapide

Transforme un `prompt` obligatoire (1024 caractères maximum) en modèle 3D à l’aide des niveaux allégés Minimum, Extreme-Low (par défaut) et Low. Les options de maillage vont jusqu’à 20K faces et le matériau vaut Shaded par défaut. Prend en charge les sorties glb, usdz, fbx, obj et stl, une `seed` de 0 à 65535 et `TAPose` pour les personnages.

- Model id: `hyper3d/rodin/v2.5/text-to-3d/fast`
- Made by: Hyper3D
- Category: Text to 3D
- Output: 3d
- Price: $0.10 / request (cheapest run $0.10 (100 API credits))
- Run: `POST https://api.doitong.ru/v1/run/hyper3d/rodin/v2.5/text-to-3d/fast`
- Quote: `POST https://api.doitong.ru/v1/quote/hyper3d/rodin/v2.5/text-to-3d/fast`
- Docs page: https://doitong.com/fr-FR/developers/models/hyper3d/rodin/v2.5/text-to-3d/fast

## Pricing

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

The full example input below costs $0.10 = 100 API credits (1 request × 100 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/hyper3d/rodin/v2.5/text-to-3d/fast` 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 |  | ≤ 1024 characters | Instructions textuelles guidant la génération du modèle ; obligatoires en mode Text-to-3D. |
| `tier` |  | enum (string) | no | `Gen-2.5-Extreme-Low` | `Gen-2.5-Minimum`, `Gen-2.5-Extreme-Low`, `Gen-2.5-Low` | Niveau de génération ; Gen-2.5-Minimum impose le mode minimum et un maillage 50K Triangle, quelle que soit la valeur de `quality_mesh_option`. Les détails des niveaux sont disponibles dans la [documentation Hyper3D](https://developer.hyper3d.ai/api-specification/rodin-gen2.5#use-gen-2.5-generation-with-following-gen-2.5-tiers). |
| `seed` |  | integer \| null | no |  | 0 – 65,535 | Graine de randomisation facultative, comprise entre 0 et 65535. |
| `geometry_file_format` |  | enum (string) | no | `glb` | `glb`, `usdz`, `fbx`, `obj`, `stl` | Format de fichier géométrique, choisi parmi glb, usdz, fbx, obj, stl ; glb est utilisé par défaut. |
| `material` |  | enum (string) | no | `Shaded` | `PBR`, `Shaded`, `All`, `None` | Sélection de la sortie des matériaux : choisissez None pour une géométrie sans textures, ou All pour recevoir les deux variantes de matériaux. Pour un éclairage réaliste avec des matériaux basés sur la physique, choisissez PBR ; pour un éclairage précalculé sans cartes PBR, choisissez Shaded. |
| `quality_mesh_option` |  | enum (string) | no | `Auto` | `Auto`, `1K Quad`, `4K Quad`, `8K Quad`, `18K Quad`, `20K Quad`, `2K Triangle`, `4K Triangle`, `8K Triangle`, `10K Triangle`, `20K Triangle` | Choisissez la qualité avec la topologie du maillage : Quad privilégie les surfaces lisses, tandis que Triangle privilégie les détails géométriques. Le point de terminaison rapide est principalement destiné aux tests et au prototypage, avec une limite de 20K ; utilisez le point de terminaison standard pour des maillages de meilleure qualité, où Minimum, Extreme-Low et Low prennent en charge jusqu'à 1M Triangle, avec un nombre de faces disponible dépendant du niveau. Dans l'API Hyper3D, `quality_override` spécifie le nombre de faces, tandis que `mesh_mode` spécifie Quad/Raw. Auto sélectionne les paramètres recommandés : 1. Gen-2.5-Minimum → 20K Triangle ; 2. Gen-2.5-Extreme-Low → 20K Triangle ; 3. Gen-2.5-Low → 20K Triangle. |
| `texture_mode` |  | enum (string) \| null | no |  | `legacy`, `extreme-low`, `low`, `medium`, `high` | Choisissez explicitement la qualité des textures ou laissez l'API effectuer ce choix ; elle utilise une valeur par défaut adaptée au niveau. |
| `enable_creative_mode` |  | boolean | no | `false` |  | Mode de génération créative, équivalent à `geometry_instruct_mode` défini sur `creative` dans l'API Hyper3D. Son activation rend la génération plus robuste sans compromettre la cohérence de la sortie. |
| `hd_texture` |  | boolean | no | `false` |  | Contrôle le post-traitement avancé des textures afin d'améliorer la fidélité visuelle. |
| `texture_delight` |  | boolean | no | `false` |  | Supprime l'illumination et les reflets précalculés des textures générées. |
| `is_micro` |  | boolean | no | `false` |  | Ajoute des détails géométriques plus fins à l'échelle microscopique ; prend effet uniquement lorsque `tier="Gen-2.5-Extreme-High"`. |
| `TAPose` |  | boolean | no | `false` |  | Paramètre de pose du personnage pour faciliter le rigging et l'animation dans les logiciels 3D : son activation génère les personnages en pose en T ou en A. |
| `bbox_condition` |  | object {width, height, length} \| null | no |  |  | Limite la taille maximale du modèle généré à l'aide d'un ControlNet. |
| `bbox_condition.width` |  | integer | no | `0` | 1 – 2,048 | Contrainte de largeur de la boîte englobante le long de l'axe x. |
| `bbox_condition.height` |  | integer | no | `0` | 1 – 2,048 | Contrainte de hauteur de la boîte englobante le long de l'axe y. |
| `bbox_condition.length` |  | integer | no | `0` | 1 – 2,048 | Contrainte de longueur de la boîte englobante le long de l'axe z. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Le filtrage peut être assoupli en définissant false, si l'appelant est autorisé. |

## 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/hyper3d/rodin/v2.5/text-to-3d/fast?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/hyper3d/rodin/v2.5/text-to-3d/fast?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/hyper3d/rodin/v2.5/text-to-3d/fast", 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": "hyper3d/rodin/v2.5/text-to-3d/fast",
      "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": "hyper3d/rodin/v2.5/text-to-3d/fast",
  "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": 100,
    "usd": "0.10",
    "charged": 100,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "model_mesh": {
      "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_meshes": [
      {
        "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,
    "textures": [
      {
        "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,
        "width": 1024,
        "height": 768
      }
    ]
  },
  "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_mesh` | object {url, content_type, file_name, file_size} | Fichier contenant l'objet 3D généré. |
| `model_meshes` | array of object {url, content_type, file_name, file_size} | Fichiers d'objets 3D supplémentaires générés par Hyper3D et renvoyés en plus de model_mesh. |
| `seed` | integer | Graine appliquée lors de la génération. |
| `textures` | array of object {url, content_type, file_name, file_size, width, height} | Textures produites pour l'objet 3D. |

## Related models

- [Hyper3D - Rodin V2.5 - Image to 3D](https://doitong.com/developers/models/hyper3d/rodin/v2.5.md) (`hyper3d/rodin/v2.5`): from $0.40 / request
- [Hyper3D - Rodin V2.5 - Image to 3D - Fast](https://doitong.com/developers/models/hyper3d/rodin/v2.5/fast.md) (`hyper3d/rodin/v2.5/fast`): $0.10 / request
- [Hyper3D - Rodin V2.5 - Text to 3D](https://doitong.com/developers/models/hyper3d/rodin/v2.5/text-to-3d.md) (`hyper3d/rodin/v2.5/text-to-3d`): from $0.40 / 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 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
- [Hunyuan3d V3 · Text to 3D](https://doitong.com/developers/models/hunyuan3d-v3/text-to-3d.md) (`hunyuan3d-v3/text-to-3d`): from $0.225 / run

## Links

- HTML page: https://doitong.com/developers/models/hyper3d/rodin/v2.5/text-to-3d/fast
- 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=hyper3d/rodin/v2.5/text-to-3d/fast
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/hyper3d/rodin/v2.5/text-to-3d/fast
