Generate Texture
Generate textures for an uploaded 3D model.
bearerAuthorizationBearer <token>multipart/form-data- body
image*file**Required**. Exactly one image file to use as texture reference.
binarymodel*fileRequired. Exactly one 3D model file to texture.
binaryprompt?stringOptional. Text prompt describing the desired colors, materials, and surface details. It guides texture generation together with the reference image.
length <= 1024escore?numberOptional. Controls texture complexity and richness. Higher values encourage more detailed, higher-variation textures with stronger material and color complexity; lower values produce cleaner, simpler, flatter textures.
0 <= value <= 103.5reference_scale?numberOptional. Controls how strongly the generated texture follows the reference image. Higher values preserve its colors, style, and visual details more closely; lower values allow the prompt and model prior more freedom.
0.5 <= value <= 11seed?integerOptional. A seed value for randomization. If not provided, the seed will be randomly generated.
0 <= value <= 65535geometry_file_format?stringOptional. Output geometry file format. Supported formats are `glb`, `usdz`, `fbx`, `obj`, and `stl`.
"glb""glb""usdz""fbx""obj""stl"material?stringOptional. Material type included in the output. - `PBR` includes physically based texture maps, - `Shaded` provides a base-color texture with baked lighting, - `All` delivers both. Defaults to `PBR`. - `Hybrid`: PBR texture maps with a base color texture that includes baked lighting.
"PBR""PBR""Shaded""All""Hybrid"resolution?stringOptional. Output texture resolution. Details see [Texture resolution](/en/api-specification/generate-texture#texture-resolution).
"Basic""Basic""High"hd_texture?booleanOptional. Enables texture super-resolution to enhance fine details. This is independent of the final pack resolution.
falsetexture_delight?booleanOptional. Removes highlights and baked lighting from the texture-reference image before texture generation.
falsetexture_mode?stringOptional. Texture mode for the generated model. Higher modes generally produce richer, higher-resolution texture detail but take longer and may affect billing. See [Pricing](/en/api-specification/generate-texture#pricing). - `legacy`: Use the legacy texture pipeline. - `extreme-high`: Can produce up to 12K textures. See [Texture resolution](/en/api-specification/generate-texture#texture-resolution).
"high""legacy""extreme-low""low""medium""high""extreme-high"application/json- response
error?stringError code, if the request could not be submitted. This is returned in the response body alongside HTTP 201, so clients must check this field rather than relying on the HTTP status alone. This field is omitted on success. For detailed error code information, please refer to: [errors](/en/api-specification/errors)
"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?stringSuccess message or detailed error information.
uuid?stringUnique identifier for the submitted generation task.
uuidsubmit_time?stringServer time when the task was submitted.
date-timejobs?A job object, containing details of individual jobs executed as part of the generation process.
consumed?numberCredits consumed by this request.
curl -X POST 'https://api.hyper3d.com/api/v2/rodin_texture_only' \ -F 'image=string' \ -F 'model=string'{ "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_mode | resolution | Output resolution |
|---|---|---|
| legacy, extreme-low, low, medium, high | Basic | 2K |
| High | 4K | |
| extreme-high | Basic | 6K |
| High | 12K |
Pricing
| Item | Charge |
|---|---|
| Base texture generation | 0.5 credits |
texture_mode=extreme-high | 2.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.