Rodin AI API Guide
The Rodin API puts the same Gen-2.5 pipeline behind the web app on an HTTP endpoint: submit a prompt or reference images, poll until the job finishes, download the mesh. Here's authentication, the request/response flow, every parameter group, credit costs, error codes, and working code in three languages.
The web app's pipeline, callable from code
The Rodin API exposes the exact same Gen-2.5 generation pipeline that powers text-to-3D and image-to-3D in the browser, just reachable over HTTP instead of a UI. That makes it the right layer for anything that shouldn't be a person clicking "generate" one asset at a time: turning a spreadsheet of product names into a batch of models, wiring generation into a Blender, Unity or Unreal plugin, or running Rodin as one step inside a larger internal pipeline.
It's built for programmatic and batch use specifically - async job submission, free status polling, and a download step that returns URLs rather than streaming a file inline, so it fits naturally into a queue-based system rather than a single synchronous request.
Three steps: submit, poll, download
- Submit a job.
POST /rodinwithmultipart/form-data- a prompt, up to 5 reference images, or both - and get back a task UUID. - Poll for status. Check the status endpoint with that UUID until the job reports complete. Polling is free and doesn't touch your credit balance.
- Download the result.
POST /downloadwith the task UUID returns a JSON array of URLs and filenames for the generated geometry and textures - also free.
Which plan unlocks the API
API access is gated by plan, separately from what a plan allows in the web app. Free and Creator can generate through the browser but can't call the API - Business is the entry point for programmatic access.
| Plan | API access | Notes |
|---|---|---|
| Free | No | Web app only, 10 starter credits |
| Creator | No | Web app only, ~60 models/month included |
| Business | Yes | ~120-240 requests/min, 7-day result retention |
| Enterprise | Yes | Custom SLA (99.9%), custom endpoints, indefinite retention, GDPR/ISO 27001 |
Exact requests-per-minute ceilings for Business aren't published in a hard SLA the way Enterprise's are - treat 120-240 RPM as the working range rather than a contractual number. Full plan pricing is on the pricing page.
Three calls cover the whole flow
| Endpoint | Method | Purpose | Credit cost |
|---|---|---|---|
| /rodin | POST | Submit a generation job (text and/or up to 5 images), returns a task UUID | 0.5-1.0 credits |
| /status | GET | Poll a task UUID for progress and completion | Free |
| /download | POST | Retrieve download URLs and filenames for a completed task | Free |
What you can set on a generate call
Parameters on POST /rodin fall into four groups. Nothing here needs to be set for a working call - a bare prompt or a single image is enough - but each group gives you the same controls available in the web app.
Input
images- up to 5 files for image-to-3D, combinable with a promptprompt- required for text-to-3D, optional alongside imagesimage_label- directional hints per image (F/FL/FR/L/R/B/BL/BR/U/D/?)use_original_alpha- boolean, preserves source transparency
Generation config
tier- Extreme-Low, Low, Medium, High or Extreme-High effortquality- high / medium / low / extra-lowmesh_mode- Raw (triangular) or Quad topologygeometry_file_format- glb / usdz / fbx / obj / stlgeometry_instruct_mode- faithful or creative interpretation of the promptis_micro- micro-detail geometry, Extreme-High tier only
Materials & texture
material- PBR / Shaded / All / Nonetexture_mode- legacy / extreme-low / low / medium / highhd_texture- boolean, higher-resolution texturestexture_delight- removes baked-in lighting from the texture
Advanced
seed- 0-65535, for reproducible resultsTAPose- boolean, outputs a rigging-friendly T/A posebbox_condition- array [Width, Height, Length] to constrain proportionspreview_render- boolean, returns a quick preview renderaddons- array, e.g. HighPack for 4K textures (+1 credit)
Minimal text-to-3D call, three ways
Each example submits a prompt-only job and polls until it's done - the shortest path to a first result. Swap in your own API key and prompt to run it.
# 1. submit the job curl -X POST https://api.hyper3d.com/api/v2/rodin \ -H "Authorization: Bearer $RODIN_API_KEY" \ -F "prompt=a weathered brass compass, game-ready prop" \ -F "tier=Medium" # 2. poll until status is complete curl https://api.hyper3d.com/api/v2/status/<task_uuid> \ -H "Authorization: Bearer $RODIN_API_KEY"
import requests, time headers = {"Authorization": f"Bearer {API_KEY}"} resp = requests.post( "https://api.hyper3d.com/api/v2/rodin", headers=headers, data={"prompt": "a weathered brass compass, game-ready prop", "tier": "Medium"}, ) task_id = resp.json()["uuid"] while True: status = requests.get(f"https://api.hyper3d.com/api/v2/status/{task_id}", headers=headers).json() if status["status"] == "complete": break time.sleep(3) files = requests.post( "https://api.hyper3d.com/api/v2/download", headers=headers, json={"task_uuid": task_id}, ).json()
const form = new FormData(); form.append("prompt", "a weathered brass compass, game-ready prop"); form.append("tier", "Medium"); const submit = await fetch("https://api.hyper3d.com/api/v2/rodin", { method: "POST", headers: { Authorization: `Bearer ${API_KEY}` }, body: form, }); const { uuid } = await submit.json(); // poll /status/{uuid} until status === "complete", then: const files = await fetch("https://api.hyper3d.com/api/v2/download", { method: "POST", headers: { Authorization: `Bearer ${API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ task_uuid: uuid }), }).then(r => r.json());
What each call actually costs
The API draws from the same credit pool as your web account - there's no separate API balance to manage. Credits are spent on generation only; checking status and downloading are always free, so you can poll as often as you like without worrying about cost.
| Action | Cost |
|---|---|
| Standard tiers (Extreme-Low through High) | 0.5 credits per generation |
| Extreme-High tier | 1.0 credit per generation |
| HighPack add-on (4K textures) | +1 credit |
| Status checks & downloads | Free |
Direct credits beyond your plan allowance are $1.50 each and don't expire. Full breakdown of plans and included credits is on the pricing page.
What comes back when a call fails
Errors return a code you can branch on programmatically rather than just an HTTP status:
SUBSCRIPTION_PLAN_TOO_LOW is the one you'll hit if you try to call the API from a Free or Creator account - upgrade to Business to clear it. INSUFFICIENT_FUND means your credit balance is short; top up or wait for the next billing cycle.
What people build on top of the API
Batch generation
Turn a spreadsheet of names or prompts into hundreds of models unattended
DCC & engine plugins
Generate without leaving Blender, Unity or Unreal
Pipeline integration
Drop generation into an existing asset pipeline as one automated step
Studio-scale deployment
Enterprise SLA and custom endpoints for production pipelines
See a full production example in the game development workflow guide, and the Blender integration guide for the plugin side of a DCC pipeline.
Every Rodin guide on rodin3ds.com
Building with Rodin
Getting started
Reviews & comparisons
Rodin API: frequently asked questions
What is the Rodin API?+
The Rodin API exposes the same Gen-2.5 generation pipeline as the web app - text-to-3D, image-to-3D and PBR texturing - over HTTP, so it can be called programmatically for batch jobs, plugins and internal pipelines instead of generating through the browser one model at a time.
Which plan do I need for API access?+
API access starts at the Business plan. Free and Creator plans can use the web app but not the API. Business includes roughly 120-240 requests per minute; Enterprise adds a custom SLA, custom endpoints and indefinite retention.
How does authentication work?+
Every request carries your API key as a Bearer token in the Authorization header. There's no separate OAuth flow - generate a key from your account once you're on a Business or Enterprise plan and attach it to each call.
Do polling and downloading cost credits?+
No. Only the generate call spends credits - 0.5 credits at standard effort tiers, 1.0 at Extreme-High, plus 1 credit for the HighPack texture add-on. Checking status and downloading results are free, and the API shares the same credit pool as the web app.
What output formats does the API support?+
Five geometry formats through one parameter: GLB (default), USDZ, FBX, OBJ and STL. Material and texture options - PBR, HD textures, delighting - are configured independently of the geometry format.