API reference · hyper3d
hyper3d/rodin/2.5/fast/image-to-3d
Integrate this model through SandBase's unified API, with production-ready schemas and examples.
Production endpoint
Send your first request
OpenAI-compatible endpoint with unified authentication and usage tracking.
POST
https://api.sandbase.ai/v1/runModel ID
hyper3d/rodin/2.5/fast/image-to-3d01
Input Schema
9 parameters · 1 required · 8 optional
| Parameter | Type | Required | Description |
|---|---|---|---|
images | string[] | Required | 1 to 5 images of the object. |
seed | integer | Optional | Seed (0–65535). · Min: 0 · Max: 65535 |
tier | string | Optional | Generation tier (quality / speed). · Options: Gen-2.5-Minimum, Gen-2.5-Extreme-Low, Gen-2.5-Low · Default: "Gen-2.5-Extreme-Low" Gen-2.5-MinimumGen-2.5-Extreme-LowGen-2.5-Low |
TAPose | boolean | Optional | Generate characters in T-pose or A-pose for rigging. · Default: false |
prompt | string | Optional | Optional text prompt to guide generation. · Max length: 1024 |
material | string | Optional | PBR, Shaded, All (both) or None. · Options: PBR, Shaded, All, None · Default: "Shaded" PBRShadedAllNone |
hd_texture | boolean | Optional | Enhanced texture post-processing. · Default: false |
quality_mesh_option | string | Optional | Combined quality and mesh type selection. Quad = smooth surfaces, Triangle = detailed geometry. Maps to `mesh_mode` (Quad/Raw) and `quality_override` (face count) on the Hyper3D API. Valid face counts depend on the selected tier. Up to 1M Triangle is supported for tiers Minimum, Extreme-Low, Low. For fast endpoint, this limit is up to 20K, primarily for prototyping and testing. For generating higher quality meshes, use the standard endpoint. Auto option will choose the advised options for each tier:
1. Gen-2.5-Minimum: 20K Triangle
2. Gen-2.5-Extreme-Low: 20K Triangle
3. Gen-2.5-Low: 20K Triangle · Options: Auto, 1K Quad, 4K Quad, 8K Quad, 18K Quad, 20K Quad, 2K Triangle, 4K Triangle, 8K Triangle, 10K Triangle, 20K Triangle · Default: "Auto" Auto1K Quad4K Quad8K Quad18K Quad20K Quad2K Triangle4K Triangle8K Triangle10K Triangle20K Triangle |
geometry_file_format | string | Optional | Output file format. · Options: glb, usdz, fbx, obj, stl · Default: "glb" glbusdzfbxobjstl |
02
Output Schema
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the generation task |
status | string | Task status: pending, running, completed, failed, timeout |
model | string | Model used for the generation |
outputs | array | Array of output items |
outputs[].url | string | URL of the generated artifact |
outputs[].content_type | string | MIME type (e.g. image/png, video/mp4) |
error | object | null | Error details if failed, null on success |
error.type | string | Machine-readable error type code |
error.message | string | Human-readable error description |
Async Workflow
This model uses asynchronous execution. Submit a request and poll for the result.
- Submit — POST to /v1/run, receive an
id - Poll — GET /v1/run/{id} until status is
completed,failed, ortimeout - Retrieve — Read
outputsfrom the completed response
03
Code Examples
Ready-to-run snippets
const apiKey = process.env.SANDBASE_API_KEY;
const response = await fetch("https://api.sandbase.ai/v1/run", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "hyper3d/rodin/2.5/fast/image-to-3d",
"tier": "Gen-2.5-Extreme-Low",
"TAPose": false,
"images": [
"https://static.sandbase.ai/examples/hyper3d/rodin/2.5/fast/image-to-3d/input_images_0.png",
"https://static.sandbase.ai/examples/hyper3d/rodin/2.5/fast/image-to-3d/input_images_1.png",
"https://static.sandbase.ai/examples/hyper3d/rodin/2.5/fast/image-to-3d/input_images_2.png"
],
"prompt": "A futuristic robot with sleek metallic design.",
"material": "Shaded",
"hd_texture": false,
"quality_mesh_option": "Auto",
"geometry_file_format": "glb"
}),
});
if (!response.ok) throw new Error(await response.text());
let result = await response.json();
for (let attempt = 0; attempt < 120 && !["completed", "failed", "timeout"].includes(result.status); attempt++) {
await new Promise((resolve) => setTimeout(resolve, 2_000));
const poll = await fetch(`https://api.sandbase.ai/v1/run/${result.id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
if (!poll.ok) throw new Error(await poll.text());
result = await poll.json();
}
if (result.status !== "completed") throw new Error(`Generation ended: ${result.status}`);
console.log(result);