TRIVERSE Docs
API Endpoints

Image to 3D

Transform 2D images into high-quality 3D assets. Triverse supports textured models, mesh-only geometry, and optimized Artistic Mesh generation.

Image to Textured Model

Generates a complete 3D model with high-fidelity textures based on a single reference image.

Endpoint

POST /tasks/image-to-model

Authentication

Required (Bearer Token)

Request Parameters

ParameterTypeDefaultDescription
image_fileStringRequiredThe file_key or public URL of the reference image.
model_versionStringv2The AI model version to use for generation.
polygon_limitInteger1,000,000Maximum number of polygons (Valid range: 1,000 to 1,500,000).
texture_sizeInteger1024Resolution of the generated texture (Range: 1024 - 4096).
turboBooleanfalseEnables faster geometry generation by using the Turbo path; output quality may be lower.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user and 1-64 characters using 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-to-model' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
  "model_version": "v2",
  "polygon_limit": 1000000,
  "texture_size": 1024
}'

JavaScript

const response = await fetch(
    "https://api.triverse.ai/api/v1/tasks/image-to-model",
    {
        method: "POST",
        headers: {
            Accept: "application/json",
            Authorization: "Bearer <YOUR_API_KEY>",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
            model_version: "v2",
            polygon_limit: 1000000,
            texture_size: 1024,
        }),
    }
);
const data = await response.json();
console.log(data);

Python

import requests

response = requests.post(
    "https://api.triverse.ai/api/v1/tasks/image-to-model",
    headers={
        "Accept": "application/json",
        "Authorization": "Bearer <YOUR_API_KEY>",
    },
    json={
        "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
        "model_version": "v2",
        "polygon_limit": 1000000,
        "texture_size": 1024,
    },
)
print(response.json())

Multi-View Image to Textured Model

Generates a 3D model from directional images. The current first release uses multi-view images for geometry generation, then still textures the model with the front view only.

Endpoint

POST /tasks/image-to-model-mv

Authentication

Required (Bearer Token)

Request Parameters

ParameterTypeDefaultDescription
front_image_fileStringRequiredThe front image file_key or public URL.
right_image_fileStringOptionalThe right image file_key or public URL.
back_image_fileStringOptionalThe back image file_key or public URL.
left_image_fileStringOptionalThe left image file_key or public URL.
model_versionStringv2The AI model version to use for generation.
polygon_limitInteger1,000,000Maximum number of polygons (Valid range: 1,000 to 1,500,000).
texture_sizeInteger1024Resolution of the generated texture (Range: 1024 - 4096).
turboBooleanfalseEnables faster geometry generation by using the Turbo path; output quality may be lower.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user and 1-64 characters using only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet to true to intentionally resubmit a request that would otherwise match the short duplicate window.

Rules

  • front_image_file is required.
  • At least one of right_image_file, back_image_file, or left_image_file must also be provided.
  • A request with only front is rejected during business validation.

Example Request

cURL

curl -X 'POST' \
  'https://api.triverse.ai/api/v1/tasks/image-to-model-mv' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "front_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/front.png",
  "right_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/right.png",
  "back_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/back.png",
  "model_version": "v2",
  "polygon_limit": 1000000,
  "texture_size": 1024
}'

JavaScript

const response = await fetch(
    "https://api.triverse.ai/api/v1/tasks/image-to-model-mv",
    {
        method: "POST",
        headers: {
            Accept: "application/json",
            Authorization: "Bearer <YOUR_API_KEY>",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            front_image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/front.png",
            right_image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/right.png",
            back_image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/back.png",
            model_version: "v2",
            polygon_limit: 1000000,
            texture_size: 1024,
        }),
    }
);
const data = await response.json();
console.log(data);

Python

import requests

response = requests.post(
    "https://api.triverse.ai/api/v1/tasks/image-to-model-mv",
    headers={
        "Accept": "application/json",
        "Authorization": "Bearer <YOUR_API_KEY>",
    },
    json={
        "front_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/front.png",
        "right_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/right.png",
        "back_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/back.png",
        "model_version": "v2",
        "polygon_limit": 1000000,
        "texture_size": 1024,
    },
)
print(response.json())

Image to Geometry (Mesh Only)

Generates a pure geometric mesh without textures. This is ideal for workflows where you intend to apply custom materials or perform further sculpting.

Endpoint

POST /tasks/image-to-mesh

Authentication

Required (Bearer Token)

Request Parameters

ParameterTypeDefaultDescription
image_fileStringRequiredThe file_key or public URL of the reference image.
model_versionStringv2The AI model version to use.
polygon_limitInteger1,000,000Target polygon count for the mesh. Valid range: 1,000 to 1,500,000.
turboBooleanfalseEnables faster geometry generation by using the Turbo path; output quality may be lower.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user and 1-64 characters using only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet to true to intentionally resubmit a request that would otherwise match the short duplicate window.

Response

All task creation endpoints return a PublicTaskCreationPayload containing a task_uuid. Use this ID to monitor the task status via the Task Status endpoint or WebSockets.

{
  "code": 0,
  "message": "success",
  "data": {
    "task_uuid": "92483a80-236c-4889-9a95-4c90bb64dfd8",
    "flow_name": "image-to-mesh",
    "status": "PENDING",
    "created_at": "2026-05-27T12:39:48.228522Z",
    "cost_credits": 120
  }
}

Example Request

cURL

curl -X 'POST' \
  'https://api.triverse.ai/api/v1/tasks/image-to-mesh' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
  "polygon_limit": 750000
}'

JavaScript

const response = await fetch(
    "https://api.triverse.ai/api/v1/tasks/image-to-mesh",
    {
        method: "POST",
        headers: {
            Accept: "application/json",
            Authorization: "Bearer <YOUR_API_KEY>",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
            polygon_limit: 750000,
        }),
    }
);
const data = await response.json();
console.log(data);

Python

import requests

response = requests.post(
    "https://api.triverse.ai/api/v1/tasks/image-to-mesh",
    headers={
        "Accept": "application/json",
        "Authorization": "Bearer <YOUR_API_KEY>",
    },
    json={
        "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/reference.png",
        "polygon_limit": 750000,
    },
)
print(response.json())

Image to Artistic Mesh

Generates an optimized Artistic Mesh from a single reference image. Upload a local image with POST /upload/image first, then pass the returned file_key as image_file. A publicly accessible absolute image URL is also accepted.

Endpoint

POST /tasks/image-to-artistic-mesh

Authentication

Required (Bearer Token)

Request Parameters

ParameterTypeDefaultDescription
image_fileStringRequiredThe uploaded image file_key or a publicly accessible absolute URL.
model_versionStringcraftsman-v3-2-3Artistic Mesh model version.
num_vertsInteger4096Target vertex count. Must be at least 1.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user and no longer than 64 characters.
allow_duplicateBooleanNoneSet to true to intentionally resubmit a request that would otherwise match the short duplicate window.

Unknown request fields are rejected. Artistic Mesh uses a fixed API price of 25 credits; model_version and num_verts do not change the price. Use POST /tasks/pricing/quote with flow_name: "image-to-artistic-mesh" to check the current price and available balance before creation.

Response

The endpoint returns a PublicTaskCreationPayload. Use task_uuid with GET /tasks/{task_uuid} to monitor the task. After it reaches SUCCESS, use GET /tasks/url/{task_uuid} to obtain the model and preview URLs.

{
  "code": 0,
  "message": "success",
  "data": {
    "task_uuid": "92483a80-236c-4889-9a95-4c90bb64dfd8",
    "flow_name": "image-to-artistic-mesh",
    "status": "PENDING",
    "created_at": "2026-07-12T08:00:00Z",
    "cost_credits": 25
  }
}

Example Request

cURL

curl -X 'POST' \
  'https://api.triverse.ai/api/v1/tasks/image-to-artistic-mesh' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20260712/reference.png",
  "model_version": "craftsman-v3-2-3",
  "num_verts": 4096,
  "client_order_id": "artistic-mesh-example-001"
}'

JavaScript

const response = await fetch(
    "https://api.triverse.ai/api/v1/tasks/image-to-artistic-mesh",
    {
        method: "POST",
        headers: {
            Accept: "application/json",
            Authorization: "Bearer <YOUR_API_KEY>",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            image_file:
                "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20260712/reference.png",
            model_version: "craftsman-v3-2-3",
            num_verts: 4096,
            client_order_id: "artistic-mesh-example-001",
        }),
    }
);
const data = await response.json();
console.log(data);

Python

import requests

response = requests.post(
    "https://api.triverse.ai/api/v1/tasks/image-to-artistic-mesh",
    headers={
        "Accept": "application/json",
        "Authorization": "Bearer <YOUR_API_KEY>",
    },
    json={
        "image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20260712/reference.png",
        "model_version": "craftsman-v3-2-3",
        "num_verts": 4096,
        "client_order_id": "artistic-mesh-example-001",
    },
)
print(response.json())

Multi-View Image to Geometry (Mesh Only)

Generates a mesh-only model from directional images. Use this when you have multiple views and do not need generated textures.

Endpoint

POST /tasks/image-to-mesh-mv

Authentication

Required (Bearer Token)

Request Parameters

ParameterTypeDefaultDescription
front_image_fileStringRequiredThe front image file_key or public URL.
right_image_fileStringNoneThe optional right image file_key or public URL.
back_image_fileStringNoneThe optional back image file_key or public URL.
left_image_fileStringNoneThe optional left image file_key or public URL.
model_versionStringv2The model version to use for generation.
polygon_limitInteger1,000,000Polygon limit. Valid range: 1,000 to 1,500,000.
turboBooleanfalseEnables faster geometry generation by using the Turbo path; output quality may be lower.
client_order_idStringNoneOptional idempotency key. When provided, it must be unique per user and 1-64 characters using only letters, numbers, underscores, or hyphens.
allow_duplicateBooleanNoneSet to true to intentionally resubmit a request that would otherwise match the short duplicate window.

Rules

  • front_image_file is required.
  • At least one of right_image_file, back_image_file, or left_image_file must also be provided.

Example Request

cURL

curl -X 'POST' \
  'https://api.triverse.ai/api/v1/tasks/image-to-mesh-mv' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "front_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/front.png",
  "right_image_file": "tasks/uid_64e96053-76ab-4e9c-bd82-2def925b53bc/20250805/right.png",
  "model_version": "v2",
  "polygon_limit": 1000000,
  "turbo": false
}'

On this page