TRIVERSE Docs
API Endpoints

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

ParameterTypeDefaultDescription
model_fileStringRequiredModel file_key or public URL to render.
render_modeStringbasicRender mode: basic, multi_angle, custom, or preset.
image_countInteger3Number of render images. Valid range: 1 to 10.
resolutionString2048x2048Output resolution, for example 1024x1024.
render_formatStringPNGOutput image format, such as PNG or JPEG.
enable_rgb_renderBooleantrueWhether to generate RGB render output.
enable_white_renderBooleantrueWhether to generate white-background render output.
camera_anglesArray[String]NoneOptional camera angles, for example ["front", "left"].
preset_nameStringNoneOptional render preset name.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet 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

ParameterTypeDefaultDescription
model_fileStringRequiredSource model file_key or public URL.
target_face_countIntegerNoneOptional target face count. Valid range: 1,000 to 5,000,000. Defaults to the service default when omitted.
face_typeStringNoneOptional output face type: quad or triangle. Defaults to quad.
texture_sizeIntegerNoneOptional texture size: 1024, 2048, or 4096.
export_formatStringNoneOptional output format: fbx or glb. Defaults by face_type: quad -> fbx, triangle -> glb.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet 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

ParameterTypeDefaultDescription
model_fileStringRequiredSource model file_key or public URL.
source_formatStringRequiredSource format, for example glb.
target_formatStringRequiredTarget format, for example fbx.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet 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

ParameterTypeDefaultDescription
promptStringRequiredPrimary text prompt. Minimum length: 3 characters.
ai_modelStringseedream_4_5Public AI model alias for image generation.
image_countInteger4Number of images to generate. Valid range: 1 to 4.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet 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

ParameterTypeDefaultDescription
user_inputStringRequiredOriginal user text to optimize. Length range: 1 to 500 characters after trimming.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user, 1-64 characters, and contain only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet 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())

On this page