API Free WeekHundreds of APIs are free to call this week.Browse free APIs
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.

IMAGEAsyncOpen model
Production endpoint

Send your first request

OpenAI-compatible endpoint with unified authentication and usage tracking.

POSThttps://api.sandbase.ai/v1/run
Model IDhyper3d/rodin/2.5/fast/image-to-3d
01

Input Schema

9 parameters · 1 required · 8 optional

ParameterTypeRequiredDescription
imagesstring[]Required1 to 5 images of the object.
seedintegerOptionalSeed (0–65535). · Min: 0 · Max: 65535
tierstringOptionalGeneration 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
TAPosebooleanOptionalGenerate characters in T-pose or A-pose for rigging. · Default: false
promptstringOptionalOptional text prompt to guide generation. · Max length: 1024
materialstringOptionalPBR, Shaded, All (both) or None. · Options: PBR, Shaded, All, None · Default: "Shaded"
PBRShadedAllNone
hd_texturebooleanOptionalEnhanced texture post-processing. · Default: false
quality_mesh_optionstringOptionalCombined 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_formatstringOptionalOutput file format. · Options: glb, usdz, fbx, obj, stl · Default: "glb"
glbusdzfbxobjstl
02

Output Schema

FieldTypeDescription
idstringUnique identifier for the generation task
statusstringTask status: pending, running, completed, failed, timeout
modelstringModel used for the generation
outputsarrayArray of output items
outputs[].urlstringURL of the generated artifact
outputs[].content_typestringMIME type (e.g. image/png, video/mp4)
errorobject | nullError details if failed, null on success
error.typestringMachine-readable error type code
error.messagestringHuman-readable error description

Async Workflow

This model uses asynchronous execution. Submit a request and poll for the result.

  1. Submit — POST to /v1/run, receive an id
  2. Poll — GET /v1/run/{id} until status is completed, failed, or timeout
  3. Retrieve — Read outputs from 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);