Hyper3DHyper3D Docs
API Specification

Generate Texture

Generate textures for an uploaded 3D model.

POST
/api/v2/rodin_texture_only

Authorization

bearer
headerAuthorizationBearer <token>

Request Body

multipart/form-data
  1. body
image*file
Formatbinary
model*file

Required. Exactly one 3D model file to texture.

Formatbinary
prompt?string
Lengthlength <= 1024
escore?number
Range0 <= value <= 10
Default3.5
reference_scale?number
Range0.5 <= value <= 1
Default1
seed?integer
Range0 <= value <= 65535
geometry_file_format?string
Default"glb"
Value in"glb""usdz""fbx""obj""stl"
material?string
Default"PBR"
Value in"PBR""Shaded""All""Hybrid"
resolution?string
Default"Basic"
Value in"Basic""High"
hd_texture?boolean
Defaultfalse
texture_delight?boolean
Defaultfalse
texture_mode?string
Default"high"
Value in"legacy""extreme-low""low""medium""high""extreme-high"

Response Body

application/json
  1. response
error?string
Value in"NO_SUCH_TASK""ASSET_NOT_AVAILABLE""IMAGE_LABEL_LENGTH_TOO_LONG""INVALID_REQUEST""API_NO_ACTIVE_SUBSCRIPTION""API_SUBSCRIPTION_PLAN_TOO_LOW""API_PARALLELISM_LIMIT_REACHED""API_INSUFFICIENT_FUNDS""API_OBJECT_NOT_FOUND_ON_IMAGE""IMAGE_CONTENT_VIOLATION""PERMISSION_DENIED""API_UNKNOWN"
message?string

Success message or detailed error information.

uuid?string

Unique identifier for the submitted generation task.

Formatuuid
submit_time?string

Server time when the task was submitted.

Formatdate-time
jobs?
consumed?number

Credits consumed by this request.

Example Request
curl -X POST 'https://api.hyper3d.com/api/v2/rodin_texture_only' \  -F 'image=string' \  -F 'model=string'
Example Response
{  "error": "NO_SUCH_TASK",  "message": "Submitted.",  "uuid": "123e4567-e89b-12d3-a456-426614174000",  "submit_time": "2019-08-24T14:15:22Z",  "jobs": {    "uuids": [      "52faea01-729e-4195-85e8-6050a65315e3"    ],    "subscription_key": "string"  },  "consumed": 0.5}

Input

Upload exactly one reference image and exactly one 3D model as multipart files. Both are required.

Images are accepted as JPEG, PNG, WebP, TIFF, GIF, AVIF, HEIC, HEIF, BMP, or JPEG 2000. Models are accepted as OBJ, STL, glTF/GLB, FBX, or USDZ.

material accepts PBR, Shaded, or All and defaults to PBR. All delivers both PBR and Shaded outputs. resolution accepts Basic (2K) or High (4K) and defaults to Basic.

Examples

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rodin_texture_only' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'image=@./reference.png' \
  --form 'model=@./model.glb' \
  --form 'material=PBR' \
  --form 'resolution=Basic'

Texture resolution

Texture resolution is determined by texture_mode and resolution.

texture_moderesolutionOutput resolution
legacy, extreme-low, low, medium, highBasic2K
High4K
extreme-highBasic6K
High12K

Pricing

ItemCharge
Base texture generation0.5 credits
texture_mode=extreme-high2.0 credits

Response and errors

The successful submission response has the same identifier contract as Rodin generation: use jobs.subscription_key for status and top-level uuid for download.

{
  "message": "Submitted.",
  "uuid": "123e4567-e89b-12d3-a456-426614174000",
  "jobs": {
    "uuids": ["223e4567-e89b-12d3-a456-426614174000"],
    "subscription_key": "subscription-key-from-generation-response"
  },
  "consumed": 0.5
}

HTTP 201 means the endpoint handled the request, but the task is accepted only when error is absent or empty and the top-level uuid is non-empty. HTTP 400 indicates invalid fields or files, 401 indicates invalid authentication, and 429 indicates throttling.