Tripo3D H3.1 Multiview to 3D API
tripo3d/h3.1/multiview-to-3dTripo3D H3.1 Multiview to 3D combines 2–4 views of one object into a detailed 3D model with geometry, texture, and PBR material controls. Use complementary angles to show its structure, then set geometry quality and target face count for the asset.
Input
Drag and drop files, paste from clipboard, or provide a URL. Provide 2–4 image URLs of the same object from different angles.
4/4 files added
Output
ReadyTripo3D H3.1 Multiview to 3D API
Quick start
Submit a Tripo3D H3.1 Multiview to 3D task and retrieve its model files.
Connect to Vidgo
Keep your API key on the server and send it as a Bearer token.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer VIDGO_API_KEY
Submit a 3D task
Use distinct angles of one object with consistent materials, lighting, and proportions.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "tripo3d/h3.1/multiview-to-3d",
"input": {
"texture": true,
"pbr": true,
"quad": false,
"face_limit": 150000,
"texture_quality": "detailed",
"geometry_quality": "detailed",
"model_seed": 310107,
"texture_seed": 310207,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-01.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-02.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-03-rear-v2.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-04-rear-v2.png"
]
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Retrieve model files
Use task_id to query the task until finished or failed. Read all returned files.
Status
GET https://api.vidgo.ai/api/generate/status/{task_id}Read every file when status is finished. Stop polling on finished or failed.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "U7KTJA32E59H05IX",
"status": "running",
"created_time": "2026-09-28T14:37:11"
}
}{
"code": 200,
"data": {
"task_id": "U7KTJA32E59H05IX",
"status": "finished",
"files": [
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/output-01.glb",
"file_type": "3d"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/output-02.png",
"file_type": "image"
}
],
"created_time": "2026-09-28T14:37:11",
"error_message": null,
"progress": 100
}
}Complete polling example
Submit the request and check its status until completion.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "tripo3d/h3.1/multiview-to-3d",
"input": {
"texture": true,
"pbr": true,
"quad": false,
"face_limit": 150000,
"texture_quality": "detailed",
"geometry_quality": "detailed",
"model_seed": 310107,
"texture_seed": 310207,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-01.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-02.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-03-rear-v2.png",
"https://cdn.vidgo.ai/apis/models/tripo3d/h3.1/multiview-to-3d/v1/01-rover/input-04-rear-v2.png"
]
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneRequest parameters
Set model and optional callback_url at the request root. Place these parameters inside input.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| image_urls | string[] | Yes | — | Provide 2–4 image URLs of the same object from different angles. |
| face_limit | integer | Optional | — | Target face count: an integer from 1,000 to 2,000,000. |
| texture | boolean | Optional | true | Generate textures. Default: true. |
| pbr | boolean | Optional | — | Generate physically based rendering materials when Texture is enabled. |
| model_seed | integer | Optional | — | Optional integer seed for model generation. |
| texture_seed | integer | Optional | — | Optional integer seed for texture generation. |
| texture_quality | string | Optional | standard | Texture detail when Texture is enabled: standard or detailed. Default: standard. |
| geometry_quality | string | Optional | standard | Geometry detail: standard or detailed. Default: standard. |
| auto_size | boolean | Optional | — | Automatically scale the generated model. |
| quad | boolean | Optional | false | Generate quad mesh topology. Default: false. |
Response fields
Read the task state and every result file with its available metadata.
| Field | Type | Description |
|---|---|---|
| code | integer | 0 or 200 indicates a successful request. |
| data.task_id | string | Task identifier used for status queries. |
| data.status | string | not_started, running, finished, or failed. |
| data.files[] | array | Result files: models, previews, and accompanying assets. |
| data.files[].file_url | string | Direct file URL. |
| data.files[].file_type | string | 3d for model assets, image for previews, other for additional files. |
| data.files[].label | string | Available file label, such as model_glb or thumbnail. |
| data.files[].format | string | Available file format, such as glb. |
| data.files[].content_type | string | Available MIME type. |
| data.files[].file_name | string | Available file name. |
| data.files[].file_size | integer | Available file size in bytes. |
| data.error_message | string | null | Task failure details. |
Task lifecycle
Poll while queued or running. Finish checking when the task completes or fails.
not_startedQueued
runningGenerating
finishedReady
failedFailed
Request handling
- AuthenticationSend a valid API key in the Authorization header.
- Status checksCheck every 2–5 seconds. Apply backoff for 429/5xx responses and set an overall timeout.
- CallbacksSet a public callback_url at the request root to receive the completed or failed task.
Model specifications
| Item | Value | Description |
|---|---|---|
| Model | tripo3d/h3.1/multiview-to-3d | 2–4 views of the same object |
| face_limit | 1000–2000000 | Target face count: an integer from 1,000 to 2,000,000. |
| geometry_quality / texture_quality | standard / detailed | Configure geometry and texture detail independently. |
Tripo3D H3.1 Multiview to 3D API frequently asked questions
What is the Tripo3D H3.1 Multiview to 3D API?
Tripo3D H3.1 Multiview to 3D is a Tripo AI model for generating 3D assets from several views of one object. It combines 2–4 images into an inspectable, high-detail model with geometry quality, texture quality, and PBR material controls. Its dense geometry generation uses structural information from complementary angles, while view selection and target face count guide form and mesh density. You can call it programmatically or try it from the playground above.
How many views does Tripo3D H3.1 Multiview to 3D use?
Provide 2–4 images of the same object in Image Urls, with each image showing a different angle.
Which angles work for Tripo3D H3.1 Multiview to 3D?
Choose angles that reveal complementary silhouettes and defining parts. Front, side, and rear views can show structures on different sides of the object.
How should Tripo3D H3.1 Multiview to 3D references match?
Use the same object, colors, materials, and assembly in every image. Keep important parts visible across adjacent views so they can be compared from different sides.
When should I choose Tripo3D H3.1 Multiview to 3D?
Choose Multiview to 3D when you have 2–4 distinct views of one object. For a single reference image, Tripo3D H3.1 Image to 3D offers the matching input mode.
How can Tripo3D H3.1 Multiview to 3D set structural detail?
Geometry Quality offers standard and detailed modes, while Face Limit accepts a target from 1,000 to 2,000,000 faces. Set them for the parts visible across your reference views.
How does Tripo3D H3.1 Multiview to 3D configure PBR materials?
Enable Texture, choose standard or detailed Texture Quality, and set Pbr to true to request physically based rendering materials with the textured model.

