Props are where generated 3D pays off the fastest. You don't need them rigged, you don't need them animated, and the quality bar is "looks good under your engine's lighting." Two API calls will get you there.
What you'll build
A static textured GLB of a prop, ready to drop into your scene. The example here is a weathered wooden crate with iron banding, but the recipe works for any prop you can describe in a single sentence.
Step 1: Generate the reference image
The mesh model needs a clean front-facing reference image. We'll create one with the image endpoint, then feed its URL into the mesh endpoint in step 2.
curl -X POST https://api.niua.ohao.tech/api/v1/generate/image \
-H "Authorization: Bearer $NIUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a weathered wooden crate with iron banding, centered, white background, 3/4 view, soft studio lighting",
"width": 1024,
"height": 1024
}'The response includes a url field pointing to the generated PNG on our CDN. Save it for step 2.
A few prompt tips that matter for downstream mesh quality:
- Words like "centered" and "white background" keep the subject isolated. The mesh model uses the background to figure out what's foreground.
- A 3/4 view gives the model better depth cues than a flat front view.
- Soft, even lighting beats dramatic lighting. Hard shadows confuse the geometry estimator.
Step 2: Turn the image into a textured mesh
Take the URL we got in step 1 and pass it to the mesh endpoint:
curl -X POST https://api.niua.ohao.tech/api/v1/generate/mesh \
-H "Authorization: Bearer $NIUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://cdn.niua.ohao.tech/outputs/.../image.png",
"resolution": 1024
}'Updated 2026-07-02: /generate/mesh is now async. It returns a job_id immediately; poll /api/v1/jobs/{id} instead of holding the connection open.
This call takes about six minutes of wall-clock time. The HTTP connection holds open the whole way, so set your client's timeout to at least eight minutes. The response includes a url field with a public CDN link to the GLB.
If your tool can't hold a long connection open, use the async pattern instead. The response payload includes a job_id you can poll at /api/v1/jobs/{job_id} until it reports status: "completed".
Step 3: Drop it into your engine
Download the GLB and import it. Unity 2022+ supports GLB natively via the glTF importer. Unreal Engine 5 imports GLB through its built-in glTF runtime. Both engines pick up the PBR materials automatically.
What about rigging
Props don't need rigs, which is exactly why they're the best starting point for generated 3D. Our rigging endpoint exists, but it's designed for part-separated meshes (the kind you'd hand-author in Blender or buy on Sketchfab). Meshes that come out of generative pipelines are a single continuous surface, and binding a skeleton to one of those gives a weak result. We're working on a part-segmentation step that will make generated meshes riggable. For now, rig on your own characters and use the mesh endpoint for static props.
Updated 2026-07-02: the rig endpoint is temporarily offline. Check GET /api/v1/models for its live status before calling.
What it costs
The image call is a few cents. The default mesh Game tier is $0.49 (as of 2026-07-14); Light is cheaper for background props, Hero is higher for max detail. Total for image + game mesh is still well under a dollar — try a few prompts and pick the best. Live prices: /pricing.