Tripo3D P1 Image to 3D API
tripo3d/p1/image-to-3dTripo3D P1 Image to 3D turns one object image into a clean low-poly model with a target face count, optional textures, and a geometry seed. Use a clear reference silhouette to guide the shape, then inspect the mesh in the interactive viewer.
Input
Drag and drop files, paste from clipboard, or provide a URL. An array containing exactly one public HTTP(S) image URL.
1/1 files added
Target face count, an integer from 48 to 20,000. Leave empty to let the model choose.
Generate textures with true; choose geometry-only output with false.
Integer seed for reproducible geometry. Keep the input and settings consistent when comparing iterations.
Output
Completed
Tripo3D P1 Image to 3D API
Quick Start
Submit a request and retrieve the generated files.
Authenticate
Use your Vidgo API key as a Bearer token.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer $VIDGO_API_KEY
Submit
Send the model ID and input settings.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "tripo3d/p1/image-to-3d",
"input": {
"face_limit": 3000,
"texture": true,
"model_seed": 927201,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/tripo3d/p1/image-to-3d/v1/01/input.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"Query the task
Retrieve progress with the returned task ID.
Status
GET https://api.vidgo.ai/api/generate/status/{task_id}Query with your task_id to retrieve progress and files.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "CLVWVQ6PG66A0RK7",
"status": "running",
"created_time": "2026-09-27T22:04:54"
}
}{
"code": 200,
"data": {
"task_id": "CLVWVQ6PG66A0RK7",
"status": "finished",
"files": [
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/p1/image-to-3d/v1/01/00-output.glb",
"file_type": "3d"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/p1/image-to-3d/v1/01/01-output.png",
"file_type": "image"
}
],
"created_time": "2026-09-27T22:04:54",
"error_message": null,
"progress": 100
}
}Use the files
Read the files array once the task is finished.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "tripo3d/p1/image-to-3d",
"input": {
"face_limit": 3000,
"texture": true,
"model_seed": 927201,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/tripo3d/p1/image-to-3d/v1/01/input.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
doneInput Parameters
Set model and optional callback_url at the root. Place these fields inside input.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| image_urls | string[] | Yes | — | An array containing exactly one public HTTP(S) image URL. |
| face_limit | integer | No | — | Target face count, an integer from 48 to 20,000. Leave empty to let the model choose. |
| texture | boolean | No | true | Generate textures with true; choose geometry-only output with false. |
| model_seed | integer | No | — | Integer seed for reproducible geometry. Keep the input and settings consistent when comparing iterations. |
Response Fields
Keep the task ID and all returned file metadata.
| Field | Type | Description |
|---|---|---|
| task_id | string | Task identifier. |
| status | string | Current task state. |
| files | array | Generated files, including model assets and previews. |
| files[].file_url | string | Public file URL. |
| files[].file_type | string | 3d / image / other |
| files[].label | string | Asset role, such as model_glb or thumbnail. |
| files[].format | string | File format when provided. |
| files[].file_name | string | File name when provided. |
| files[].file_size | integer | Size in bytes when provided. |
| files[].content_type | string | MIME type when provided. |
Task Lifecycle
Query until finished or failed.
not_startedQueued
runningGenerating
finishedCompleted
failedGeneration failed
Result Handling
- Poll the taskUse the returned task_id with the status endpoint. Stop polling at a terminal state.
- Completion callbackSet callback_url at the request root to receive task completion notifications.
- Preview and downloadOpen a GLB model for interactive inspection and keep all returned files for download.
Specifications
| Item | Value | Description |
|---|---|---|
| image_urls | 1 | An array containing exactly one public HTTP(S) image URL. |
| face_limit | 48–20000 | Target face count, an integer from 48 to 20,000. Leave empty to let the model choose. |
| texture | true | Generate textures with true; choose geometry-only output with false. |
| model_seed | integer | Integer seed for reproducible geometry. Keep the input and settings consistent when comparing iterations. |
Tripo3D P1 Image to 3D Related Workflows
Tripo3D P1 Image to 3D API frequently asked questions
What is the Tripo3D P1 Image to 3D API?
Tripo3D P1 Image to 3D is a Tripo AI model for creating low-poly 3D objects from one image. It combines an object reference with a target face count, texture selection, and a geometry seed for prop and product prototypes. P1 focuses on clean, lightweight meshes; face targets guide mesh density, and an integer seed supports geometry reproduction with consistent inputs. You can call it through the API or try it in the Playground tab.
Which object reference suits Tripo3D P1 Image to 3D?
Choose one image with a clearly defined object and visible silhouette; even lighting helps show its shape and visible details. An object photo or concept image can serve as the reference.
How do I submit one image to Tripo3D P1 Image to 3D?
Upload one image in the Playground tab or enter one publicly accessible HTTP(S) image URL in Image Urls. In an API request, the image_urls array contains that one URL.
How does Tripo3D P1 Image to 3D set a low-poly face budget?
Set Face Limit to an integer from 48 to 20,000 as the target face count. Compare the silhouette and surface detail at different targets before choosing a budget for the reference object.
How does texture selection affect Tripo3D P1 Image to 3D pricing?
Texture is on by default: a textured generation costs 70 credits ($0.350). Choose geometry-only output for 56 credits ($0.280). Each rate applies per generation.
How can Tripo3D P1 Image to 3D repeat geometry with a seed?
Enter an integer Model Seed and save the image, face target, and texture setting. Reuse the same input and settings with the seed to reproduce geometry generation.
Which prop prototypes suit Tripo3D P1 Image to 3D?
A single object photo or concept image can guide 3D exploration of tools, containers, and furniture. Set a target face count, then inspect the silhouette and proportions in the preview.
When should I choose Tripo3D P1 Image to 3D over Tripo3D P1 Text to 3D?
Choose Image to 3D when you have one object photo or concept image to guide the shape. Choose Text to 3D when you have an object concept to describe in words.
