Rodin API access is how Hyper3D AI moves from a browser toy to a pipeline component, and its documentation holds several details that can catch a team out on day one. Leave out one field and you get an older model. Leave out another and you get triangles rather than quads. A rejected job can still come back as HTTP 201.

This guide is the developer companion to our Hyper3D AI overview, which covers the product, its plans and its rivals. Here we stick to integration: what the Rodin API exposes, which defaults to override, what a call costs, how to handle failure, and what happens to your data. Everything comes from Hyper3D’s own documentation and pricing page as of 31 October 2026. We wrote the sample code from that specification and did not run it against a paid key, so test it before you rely on it.

What the Rodin API Exposes in Late 2026

Junction box with round ports standing for the Rodin API endpoints on one host

One Host, Many Endpoints

The Rodin API lives at api.hyper3d.com under the /api/v2 path, and every protected call carries a Bearer token. Keys come from the API dashboard, and the quick start tells you to load them from an environment variable or a secrets manager rather than committing them. The table below lists the endpoints this guide relies on.

EndpointMethodWhat it does
/rodinPOSTSubmits an image-to-3D or text-to-3D job
/rodin_agenticPOSTBeta: lets an agent choose the parameters
/riggingPOSTAdds a skeleton and optional animations
/statusPOSTReports the state of each job in a task
/downloadPOSTReturns file names and download links
/check_balanceGETReturns credits and, optionally, usage history

The documentation also covers Gen-2 and Gen-1/1.5 models, a Bang endpoint, Generate Texture and Generate Images. Most new work should target Gen-2.5, the model family this guide uses.

A Changelog Worth Watching

The Rodin API changes often enough that a tutorial from the spring may mislead you. The official changelog records Gen-2.5 documentation arriving in May 2026, the default geometry strategy flipping from faithful to creative in July, and a batch of new Gen-2.5 parameters plus updated add-on pricing in August. Rodin Agentic appeared in September, then Rigging and Generate Images documentation in October.

Add that page to your dependency reviews. Generation services do not version like a software library you can pin, so a default can shift underneath a request that never changed. Sending every parameter you care about is the cheapest protection, and it is the theme of the next two sections.

Who Can Call It

Only the Business plan and above include access. The pricing page lists no API access for Free or Creator, and a lower plan comes back with the application error API_SUBSCRIPTION_PLAN_TOO_LOW. Business costs $120 a month, or $96 a month billed yearly at $1,152 upfront. Enterprise adds custom deployment, team controls, fine-tuning and volume pricing on a quote.

The Three-Call Rodin API Lifecycle

Three cubes joined by rods standing for the Rodin API submit, poll and download lifecycle

Submit, Poll, Download

Generation is asynchronous, so a Rodin API integration is a small state machine rather than a single request. You post a multipart form to /rodin, poll /status until every job finishes, then call /download and fetch the files. The sample below follows that flow, with explicit values for the settings most likely to surprise you.

import os, time, requests
API = "https://api.hyper3d.com/api/v2"
AUTH = {"Authorization": f"Bearer {os.environ['RODIN_API_KEY']}"}
with open("input.png", "rb") as img:
    r = requests.post(f"{API}/rodin", headers=AUTH, timeout=60,
        files=[("images", img)],
        data={"tier": "Gen-2.5-Medium", "mesh_mode": "Quad", "quality": "medium"})
r.raise_for_status()
task = r.json()
if task.get("error") or not task.get("uuid"):
    raise RuntimeError(task)
wait, deadline = 5, time.time() + 1200
while True:
    if time.time() > deadline:
        raise TimeoutError(task["uuid"])
    time.sleep(wait)
    s = requests.post(f"{API}/status", headers=AUTH, timeout=60,
        json={"subscription_key": task["jobs"]["subscription_key"]})
    if s.status_code == 429:
        wait = int(s.headers.get("Retry-After", 5))
        continue
    s.raise_for_status()
    states = [j["status"] for j in s.json()["jobs"]]
    if "Failed" in states:
        raise RuntimeError(states)
    if all(x == "Done" for x in states):
        break
    wait = min(wait + 5, 30)
d = requests.post(f"{API}/download", headers=AUTH, timeout=60,
    json={"task_uuid": task["uuid"]})
d.raise_for_status()
for f in d.json()["list"]:
    print(f["name"], f["url"])

Two Identifiers, Two Jobs

A task response carries several IDs, and mixing them up is the common mistake the errors page calls out. Status wants jobs.subscription_key. Download wants the top-level uuid, passed as task_uuid. Swap them and you get NO_SUCH_TASK, which looks like a lost job when it is really a wrong field.

Every entry in jobs.uuids is a third kind of ID, and it belongs in neither call. Name these fields clearly in your own database so nobody has to rediscover the difference during an incident. The same rules apply on Rigging and Rodin Agentic, although the agentic response names its object job rather than jobs.

A Sensible Polling Budget

Hyper3D’s guidance is specific: wait 5 seconds before the first check, back off progressively, cap the interval at 30 seconds, honour Retry-After, stop when any job fails, and set a client-side deadline. Its Python sample adds 5 seconds per poll and gives up after 20 minutes.

That schedule makes a worst case easy to budget. The first six intervals (5, 10, 15, 20, 25, 30) use 105 seconds, leaving 1,095 seconds at 30 seconds each, or about 37 more checks. Each Rodin API task therefore costs at most about 43 status calls, and far fewer for a job that finishes quickly.

The state list is short: Waiting, Generating, Done and Failed. While a job is Waiting, the response may include queue_length, an approximate count of the jobs ahead of it. Log that value, because it is the only hint you get about why a job is slow.

Rodin API Defaults That Catch Teams Out

Rotary selector knob on a block standing for API defaults that need setting explicitly

Omit the Tier and You Get an Older Model

The tier field is marked required, yet the endpoint has a fallback: leave it out and it uses Regular, generating a Gen-1/1.5 asset. Your Rodin API call still succeeds, and you may only notice when the results look a generation behind. Always send a Gen-2.5 tier explicitly, as the documentation itself instructs.

Quads Are Not the Gen-2.5 Default

Quad topology is the headline reason many artists choose Rodin, so this default surprises people. On the Rodin API, Gen-2.5 tiers default mesh_mode to Raw, which means triangle faces. Other tiers default to Quad. If your pipeline needs clean loops for rigging or subdivision, send mesh_mode=Quad on every request and assert it in a test.

The Defaults Table

The table below compares what the API does when a field is missing with what we would send from a production client. It covers only the fields where the difference matters most.

FieldIf omittedOur suggestion
tierRegular (Gen-1/1.5)Send a Gen-2.5 tier every time
mesh_modeRaw on Gen-2.5Quad for rigged or edited assets
qualitymediumSet it, since the face count depends on mesh_mode
geometry_file_formatglbMatch your importer: usdz, fbx, obj or stl
materialPBRNone for geometry-only jobs, which speeds generation
geometry_instruct_modecreativeLeave unset; faithful is experimental

Parameters the Docs Advise Leaving Alone

Several options come with a recommendation not to touch them. The documentation suggests omitting prompt for image-to-3D, and it recommends leaving soft, detail_level, is_micro and texture_delight unset unless you have a specific need. It says faithful mode may be discontinued and is not recommended for production. Both hd_texture and uhd_texture may introduce artefacts.

Treat that list as a warning against copying every flag into a wrapper. A thin client with a few named presets is easier to test, and it will survive the next Rodin API changelog entry better than one exposing thirty switches.

Choosing Rodin API Tier, Mesh and Texture Settings

Square tile with a grid of recessed cells standing for mesh and face count choices

Tier Buys Effort, Not Face Count

The tier sets generation effort and is independent of mesh_mode, quality and texture_mode, so any allowed combination is valid. Hyper3D’s homepage gives approximate times for each level. It presents those times as product guidance, not an API service commitment, so measure your own before promising a turnaround.

Time grows steeply, so the effort tier is the first lever to check when a batch job runs long.

Approximate generation time by Gen-2.5 effort level (seconds)
Extreme-Low 4s
Low 9s
Medium 20s
High 40s
Extreme-High 80s

What Quality Means Depends on the Mesh

The quality presets map to very different targets depending on mesh_mode, which is easy to miss when you switch to quads. A request for quality=medium aims at 500,000 triangles in Raw mode but only 18,000 faces in Quad mode.

Quality presetRaw target facesQuad target faces
high1,000,00050,000
medium500,00018,000
low60,0008,000
extra-low20,0004,000

For an exact budget, use quality_override, which takes precedence over the preset. It accepts 500 to 2,000,000 faces, but only High and Extreme-High reach the top of that range. Other Gen-2.5 tiers stop at 1,000,000, and Quad mode has a ceiling of 200,000. Extreme-High also returns an extra mesh of up to 10 million faces, so expect larger downloads.

Triggering Fast Mode on Purpose

Faster processing switches on only when four conditions all hold: the tier is not Extreme-High, the format is glb, fbx or usdz, mesh_mode is Raw, and quality_override is 20,000 or lower. Quad requests never qualify. Fast mode also ignores preview_render, so a Rodin API thumbnail step that depends on that file needs another route.

Texture Resolution Has Its Own Matrix

Three settings decide texture resolution together, and HighPack changes textures only. On Gen-2.5 it adds no geometry and no extra high-poly model, which corrects an assumption you may carry over from older tiers.

texture_modeNo add-onNo add-on, uhd_textureHighPackHighPack, uhd_texture
extreme-low to high2K4K4K8K
extreme-high6K6K12K12K

The default texture_mode follows the tier, with one exception: Extreme-High defaults to high rather than extreme-high. You therefore do not pay the large texture surcharge unless you ask for it.

What the Rodin API Really Costs

Three rising stacks of plain coins standing for how Rodin API credit surcharges add up

Credits Are Additive

A base Gen-2.5 generation costs 0.5 credits. The Extreme-High tier adds 0.5, and texture_mode=extreme-high adds 2.0, so the most expensive documented combination reaches 3.0 credits. Other parameters carry no listed surcharge on this page, although August’s changelog says add-on pricing was updated, so confirm it before budgeting a HighPack run.

The web product’s free preview loop is the part not to assume here. The website lets you generate for free and pay on confirmation, yet the Rodin API documents a different shape: each accepted submission reports its cost in a consumed field. Nothing in the API pages we read describes a free preview step, so model every submission as billable until a test on your own account says otherwise.

Turning Credits Into Dollars

Hyper3D sells direct credits at $1.50 each, the one per-credit price it publishes, and that makes a worst-case calculation simple. Surcharges push the price up quickly, as the ladder below shows.

Cost per Gen-2.5 job at the $1.50 direct credit price
Base, 0.5 credits $0.75
Extreme-High tier, 1.0 credits $1.50
Extreme-high textures, 2.5 credits $3.75
Both, 3.0 credits $4.50
Our arithmetic: credits multiplied by $1.50. Subscription credits cost less, by an amount Hyper3D does not state.

What a Subscription Implies

The pricing page estimates output rather than publishing credit counts: about 416 models for $120 on Business and about 60 for $30 on Creator. Dividing gives roughly $0.29 and $0.50 a model, against $0.75 for a base job on direct credits. Business therefore offers about 6.9 times the estimated output for four times the price.

Treat those figures as a planning range. The page does not say which settings its estimates assume, and Creator is not an API option anyway. On the Business estimate, 1,000 base-tier jobs a month would work out at about $288, compared with $750 at the direct rate. Those are our sums, not quoted prices.

Costs Beyond Generation

A rigged character is at least two billable steps, since Rigging costs 0.5 credits on top of the generation. Rodin Agentic costs 0.5, 1.0 or 2.0 credits by tier. Direct credits are described as remaining available longer than subscription credits, which renew each billing cycle, so ask how long if you plan to hold a balance.

To reconcile spend, call /check_balance with usage_page. It returns dated records with the item, amount and task_uuid. Note that a balance is a point-in-time reading, not a reservation, because concurrent tasks draw on the same pool.

Rodin API Error Handling: Why 201 Is Not Success

Taped parcel box standing for checking a response body because a 201 can still hide a rejection

Read the Body Every Time

This is the trap most likely to corrupt a job table. A rejected submission can return HTTP 201 with an error code in the body, so a client that checks only the status records a task that never started. The documented acceptance test has two parts: error is absent or empty, and the top-level uuid is non-empty.

Successful status and download calls return 201 as well, not 200. Any Rodin API wrapper with a hard-coded check for 200 will treat good responses as failures, so test for the 2xx range and then inspect the body.

Retry Only What Can Change

Hyper3D draws a firm line here. HTTP 429 and 5xx responses are worth retrying with backoff. Body-level error codes are deterministic, and retrying them only burns rate-limit quota. The table below sorts the common codes by what your code should do next.

ResponseMeaningNext step
HTTP 429ThrottledWait for Retry-After, then retry
HTTP 5xxServer-side failureRetry with backoff
API_PARALLELISM_LIMIT_REACHEDToo many running tasksQueue it until a task finishes
API_INSUFFICIENT_FUNDSBalance too lowAlert a person and pause the queue
API_OBJECT_NOT_FOUND_ON_IMAGENo object found, or image unsupportedReject the input
IMAGE_CONTENT_VIOLATIONImage not allowed in your regionUse a different input
INVALID_REQUESTBad or missing valuesFix the request and log it

The parallelism code is the one exception to the no-retry rule, since the documentation itself says to try again once a running task finishes. Hold those jobs in your own queue rather than looping on the endpoint.

Text Prompts Can Trip Image Rules

A text-to-3D prompt is rendered to an image first, so a text-only request can also fail with IMAGE_CONTENT_VIOLATION. If your product passes user prompts through to the Rodin API, handle that code as a normal user-facing outcome. A generic server error message would mislead the person who typed the prompt.

Rate Limits to Respect, Not Hard-Code

The pricing page lists 120 requests a minute on the first three Business tiers and 240 on higher ones. It does not define those tiers, though its Business column shows spend levels from $120 to $1,200 a month, which is probably what it means. The errors page warns that the figure can change, that limits apply per endpoint and per account, and that status polling gets far more room than submission. Let Retry-After drive your client rather than a constant.

Rodin API Data Retention and Privacy

Thick safe with a round dial standing for the seven-day Hyper3D API data retention policy

The Seven-Day Rule

Hyper3D’s API retention policy took effect on 3 August 2026. Request payloads, including prompts and uploaded files, and generated output stay in active systems for a fixed 7 days and are then deleted from those systems. The policy applies specifically to Rodin API traffic, and the general privacy policy still covers account, payment and support data.

There is an operational consequence. Download links can expire, and the documentation says to fetch files promptly rather than storing URLs, without stating how long a link lasts. Copy results into your own storage as soon as a job reaches Done, because anything you have not saved will not stay available on the service for long.

Training, Sharing and the Exceptions

The policy makes three further commitments: payloads and output are not used to train models, API output is not published to public assets, and neither is made available to other users or to third parties for their own purposes. That is a stronger position than many teams assume of an image generation service, and it is worth citing in a vendor review.

Read the exceptions too. Service providers may process data to run the API, and legally required retention, security audit metadata and data in protected backups all sit outside the active-system deletion promise. The 7-day rule therefore does not mean every copy disappears on day seven.

Questions for a UK Review

If inputs may contain people, such as customer photos for avatars or try-on, treat them as personal data and involve your data protection lead. The policy names Deemos Corporation as operator and controller for the English-language service, while noting that controller details can vary by location. Confirm the entity that applies to you, plus where processing takes place, before sending anything sensitive.

Product photos and concept art are lower risk, but they may still be confidential. Agree which classes of input may leave your environment, and enforce that in the service that calls the Rodin API rather than leaving it to individual artists. Commercial use also needs a check: the pricing page tells customers to review current terms before using assets in regulated or high-risk contexts.

Beyond Generation: Agentic, Rigging and MCP on the Rodin API

Ball and socket joint standing for rigging and the wider Rodin API tooling beyond generation

Rodin Agentic: Convenience With Uncertainty

Rodin Agentic, documented since September and still marked beta, lets an agent choose the generation approach for you. It takes one to five images of up to 25 MiB each and offers three tiers: basic at about 3 minutes, standard at about 5 and pro at about 10. Hyper3D warns that results may carry some uncertainty because the mode is chosen automatically.

Its response adds a producer field reading high-poly for the Rodin path or n-gons for the agentic path. That matters, because the same endpoint can hand back different kinds of geometry. Route on that field if downstream tools care, and compare the wait with the roughly 20 seconds quoted for a Medium job before making this your default. It suits occasional hard objects better than a bulk pipeline.

Rigging Closes the Character Gap

The Rigging documentation arrived in October. You supply either a confirmed Rodin asset, referenced by its top-level uuid as asset_id, or your own model file, but never both. Skeleton templates cover human, quadruped, custom and an automatic choice between the first two, and you can attach up to 10 stock animations or 10 FBX clips.

Uploaded models lose embedded materials and textures, so asset_id is the cleaner route for Rodin output. For characters, also consider the TAPose flag on the generation call, which asks for a T-pose or A-pose suited to animation. Together they form a complete Rodin API path from photo to posed character, though we have not tested its quality.

The MCP Repository Is Archived

Hyper3D’s site still lists MCP among its features, so check the details before planning around it. The DeemosTech/rodin-api-mcp repository on GitHub, a small project with three commits and a last push in April 2025, was archived on 28 October 2026 and is now read-only. We found no announcement explaining that or naming a successor.

If you want an AI agent to call Rodin, a thin tool wrapper around the endpoints above is safer than a dependency on a frozen repo. The wider rush toward generated 3D worlds suggests that agent-driven computer vision and asset tooling will keep moving quickly, so ask Hyper3D directly what it supports today.

Should Your Team Build on the Rodin API?

Pocket compass with a blank face standing for deciding whether to build on the service

A Good Fit

The Rodin API makes sense when assets are a repeating input to your product: a configurator generating models from catalogue photos, a game studio’s internal asset tool, or an e-commerce team producing USDZ files for AR. In each case the integration is small, and the value comes from automating a step that someone already does by hand. Teams comparing options can browse our AI Models, Tools & Releases hub for related launches.

Where to Hold Back

Skip the integration if you need a handful of models a month, since the web product’s pay-on-confirmation flow and a Creator plan will likely serve you better. Also hold back if your legal team cannot accept the data position above, or if you need published uptime commitments, because the documents we reviewed for this guide do not offer one. Enterprise is the route to ask about custom deployment.

A First-Week Plan

A sensible pilot is short. Build the state machine on one Medium job, assert the mesh type of the file you receive, and force each failure path: a bad key, a blank image and an over-limit batch. Then run 50 real inputs across two tiers, record time, credits from consumed and rejection rate, and have an artist score the output. That leaves you with real numbers from your own Rodin API usage, which will beat any estimate on a pricing page.

Rodin API FAQs

Small lighthouse tower standing for quick answers to common Rodin API questions

Is the Rodin API free to try?

No free API tier is listed. The pricing page shows no API access on Free or Creator, and it recommends Business at $120 a month for standard API work. The website’s free preview flow applies to generating in the product, and the API reports a credit cost on each accepted submission.

Why did my Rodin API model come back as triangles?

Gen-2.5 tiers default mesh_mode to Raw, which produces triangle faces. Send mesh_mode=Quad explicitly. Note that Quad presets target far fewer faces than Raw, from 4,000 to 50,000, and that Fast mode only runs on Raw jobs.

How long does a Rodin API job take?

Hyper3D’s homepage suggests about 4 seconds at Extreme-Low, 20 at Medium and 80 at Extreme-High. Queue time can add to that. Rodin Agentic takes minutes rather than seconds, at about 3, 5 or 10 depending on its tier. The sample client gives up after 20 minutes.

Does Hyper3D train on my API uploads?

Its retention policy says API payloads and generated output are not used to train models. They stay in active systems for 7 days, with exceptions for legal retention, security metadata and protected backups. Check the current policy before sending sensitive material.

Can I use the Rodin API from an AI agent?

Yes, through ordinary HTTP tool calls. The official rodin-api-mcp repository on GitHub was archived on 28 October 2026, so we would not build on it. Write a small wrapper around submit, status and download, and keep your API key out of the agent’s context.

References