Utilities (Remesh, Convert, Render)
The Utilities resource group provides auxiliary tools to enhance your 3D workflow, including model rendering, format conversion, remeshing, image generation, and prompt optimization.
Multi-Angle Preview Render
Generate high-quality 2D renders of your 3D model from multiple camera angles. This is perfect for creating thumbnails or preview galleries.
Endpoint
POST /tasks/model-preview-render
Authentication
Required (Bearer Token)
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
model_file | String | Required | Model file_key or public URL to render. |
render_mode | String | basic | Render mode: basic, multi_angle, custom, or preset. |
image_count | Integer | 3 | Number of render images. Valid range: 1 to 10. |
resolution | String | 2048x2048 | Output resolution, for example 1024x1024. |
render_format | String | PNG | Output image format, such as PNG or JPEG. |
enable_rgb_render | Boolean | true | Whether to generate RGB render output. |
enable_white_render | Boolean | true | Whether to generate white-background render output. |
camera_angles | Array[String] | None | Optional camera angles, for example ["front", "left"]. |
preset_name | String | None | Optional render preset name. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens. |
allow_duplicate | Boolean | None | Set to true to intentionally resubmit a request that would otherwise match the short duplicate window. |
Example Request
cURL
curl -X 'POST' \
'https://api.triverse.ai/api/v1/tasks/model-preview-render' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model_file": "https://triverse-public.oss-cn-beijing.aliyuncs.com/tasks/2025-08-05/20/model.glb",
"render_mode": "multi_angle",
"image_count": 4,
"camera_angles": ["front", "left", "right", "back"],
"preset_name": "studio-soft"
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/model-preview-render",
{
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model_file:
"https://triverse-public.oss-cn-beijing.aliyuncs.com/tasks/2025-08-05/20/model.glb",
render_mode: "multi_angle",
image_count: 4,
camera_angles: ["front", "left", "right", "back"],
preset_name: "studio-soft",
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/model-preview-render",
headers={
"Accept": "application/json",
"Authorization": "Bearer <YOUR_API_KEY>",
},
json={
"model_file": "https://triverse-public.oss-cn-beijing.aliyuncs.com/tasks/2025-08-05/20/model.glb",
"render_mode": "multi_angle",
"image_count": 4,
"camera_angles": ["front", "left", "right", "back"],
"preset_name": "studio-soft",
},
)
print(response.json())Model Remeshing
Perform retopology on an existing model to optimize its polygon count and mesh structure.
Endpoint
POST /tasks/model-remesh
Authentication
Required (Bearer Token)
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
model_file | String | Required | Source model file_key or public URL. |
target_face_count | Integer | None | Optional target face count. Valid range: 1,000 to 5,000,000. Defaults to the service default when omitted. |
face_type | String | None | Optional output face type: quad or triangle. Defaults to quad. |
texture_size | Integer | None | Optional texture size: 1024, 2048, or 4096. |
export_format | String | None | Optional output format: fbx or glb. Defaults by face_type: quad -> fbx, triangle -> glb. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens. |
allow_duplicate | Boolean | None | Set to true to intentionally resubmit a request that would otherwise match the short duplicate window. |
quad + glb is rejected with HTTP 400 because GLB does not preserve quad topology semantics. Use export_format=fbx for quad remesh, or choose face_type=triangle for GLB.
Example Request
cURL
curl -X 'POST' \
'https://api.triverse.ai/api/v1/tasks/model-remesh' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model_to_remesh.glb",
"target_face_count": 50000,
"face_type": "quad",
"texture_size": 2048,
"export_format": "fbx"
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/model-remesh",
{
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model_file:
"tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model_to_remesh.glb",
target_face_count: 50000,
face_type: "quad",
texture_size: 2048,
export_format: "fbx",
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/model-remesh",
headers={
"Accept": "application/json",
"Authorization": "Bearer <YOUR_API_KEY>",
},
json={
"model_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model_to_remesh.glb",
"target_face_count": 50000,
"face_type": "quad",
"texture_size": 2048,
"export_format": "fbx",
},
)
print(response.json())Format Conversion
Convert your 3D models between different industry-standard formats.
Endpoint
POST /tasks/convert-model-format
Authentication
Required (Bearer Token)
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
model_file | String | Required | Source model file_key or public URL. |
source_format | String | Required | Source format, for example glb. |
target_format | String | Required | Target format, for example fbx. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens. |
allow_duplicate | Boolean | None | Set to true to intentionally resubmit a request that would otherwise match the short duplicate window. |
Example Request
cURL
curl -X 'POST' \
'https://api.triverse.ai/api/v1/tasks/convert-model-format' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model.glb",
"source_format": "glb",
"target_format": "fbx"
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/convert-model-format",
{
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model_file:
"tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model.glb",
source_format: "glb",
target_format: "fbx",
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/convert-model-format",
headers={
"Accept": "application/json",
"Authorization": "Bearer <YOUR_API_KEY>",
},
json={
"model_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/model.glb",
"source_format": "glb",
"target_format": "fbx",
},
)
print(response.json())Image Generation
Generate a 2D image from a text prompt, which can then be used as a reference for Image-to-3D tasks.
Endpoint
POST /tasks/image-generation
Authentication
Required (Bearer Token)
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt | String | Required | Primary text prompt. Minimum length: 3 characters. |
ai_model | String | seedream_4_5 | Public AI model alias for image generation. |
image_count | Integer | 4 | Number of images to generate. Valid range: 1 to 4. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens. |
allow_duplicate | Boolean | None | Set to true to intentionally resubmit a request that would otherwise match the short duplicate window. |
Example Request
cURL
curl -X 'POST' \
'https://api.triverse.ai/api/v1/tasks/image-generation' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"prompt": "Studio photo of a futuristic racing helmet",
"ai_model": "seedream_4_5",
"image_count": 4
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/image-generation",
{
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "Studio photo of a futuristic racing helmet",
ai_model: "seedream_4_5",
image_count: 4,
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/image-generation",
headers={
"Accept": "application/json",
"Authorization": "Bearer <YOUR_API_KEY>",
},
json={
"prompt": "Studio photo of a futuristic racing helmet",
"ai_model": "seedream_4_5",
"image_count": 4,
},
)
print(response.json())Prompt Optimization
Optimize a short user description into a generation prompt. This endpoint creates a normal asynchronous task and returns a task_uuid.
Endpoint
POST /tasks/prompt-optimize
Authentication
Required (Bearer Token)
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
user_input | String | Required | Original user text to optimize. Length range: 1 to 500 characters after trimming. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens. |
allow_duplicate | Boolean | None | Set to true to intentionally resubmit a request that would otherwise match the short duplicate window. |
Example Request
cURL
curl -X 'POST' \
'https://api.triverse.ai/api/v1/tasks/prompt-optimize' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"user_input": "a bronze robot holding a lantern"
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/prompt-optimize",
{
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json",
},
body: JSON.stringify({
user_input: "a bronze robot holding a lantern",
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/prompt-optimize",
headers={
"Accept": "application/json",
"Authorization": "Bearer <YOUR_API_KEY>",
},
json={
"user_input": "a bronze robot holding a lantern",
},
)
print(response.json())