Image to 3D
Transform 2D images into high-quality 3D assets. Triverse offers two primary workflows: generating a fully textured model or generating a mesh-only geometry.
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
| Parameter | Type | Default | Description |
|---|---|---|---|
image_file | String | Required | The file_key or public URL of the reference image. |
model_version | String | v2 | The AI model version to use for generation. |
polygon_limit | Integer | 1,000,000 | Maximum number of polygons (Valid range: 1,000 to 1,500,000). |
texture_size | Integer | 1024 | Resolution of the generated texture (Range: 1024 - 4096). |
turbo | Boolean | false | Enables faster geometry generation by using the Turbo path; output quality may be lower. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user and 1-64 characters using 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-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
| Parameter | Type | Default | Description |
|---|---|---|---|
front_image_file | String | Required | The front image file_key or public URL. |
right_image_file | String | Optional | The right image file_key or public URL. |
back_image_file | String | Optional | The back image file_key or public URL. |
left_image_file | String | Optional | The left image file_key or public URL. |
model_version | String | v2 | The AI model version to use for generation. |
polygon_limit | Integer | 1,000,000 | Maximum number of polygons (Valid range: 1,000 to 1,500,000). |
texture_size | Integer | 1024 | Resolution of the generated texture (Range: 1024 - 4096). |
turbo | Boolean | false | Enables faster geometry generation by using the Turbo path; output quality may be lower. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user and 1-64 characters using 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. |
Rules
front_image_fileis required.- At least one of
right_image_file,back_image_file, orleft_image_filemust also be provided. - A request with only
frontis 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
| Parameter | Type | Default | Description |
|---|---|---|---|
image_file | String | Required | The file_key or public URL of the reference image. |
model_version | String | v2 | The AI model version to use. |
polygon_limit | Integer | 1,000,000 | Target polygon count for the mesh. Valid range: 1,000 to 1,500,000. |
turbo | Boolean | false | Enables faster geometry generation by using the Turbo path; output quality may be lower. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user and 1-64 characters using 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. |
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())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
| Parameter | Type | Default | Description |
|---|---|---|---|
front_image_file | String | Required | The front image file_key or public URL. |
right_image_file | String | None | The optional right image file_key or public URL. |
back_image_file | String | None | The optional back image file_key or public URL. |
left_image_file | String | None | The optional left image file_key or public URL. |
model_version | String | v2 | The model version to use for generation. |
polygon_limit | Integer | 1,000,000 | Polygon limit. Valid range: 1,000 to 1,500,000. |
turbo | Boolean | false | Enables faster geometry generation by using the Turbo path; output quality may be lower. |
client_order_id | String | None | Optional idempotency key. When provided, it must be unique per user and 1-64 characters using 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. |
Rules
front_image_fileis required.- At least one of
right_image_file,back_image_file, orleft_image_filemust 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
}'JavaScript
const response = await fetch(
"https://api.triverse.ai/api/v1/tasks/image-to-mesh-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",
model_version: "v2",
polygon_limit: 1000000,
turbo: false,
}),
},
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
"https://api.triverse.ai/api/v1/tasks/image-to-mesh-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",
"model_version": "v2",
"polygon_limit": 1000000,
"turbo": False,
},
)
print(response.json())