Tripo3D P1 Text to 3D API
tripo3d/p1/text-to-3dTripo3D P1 Text to 3D turns an object prompt into a clean low-poly model with a target face count, optional textures, and a geometry seed. Describe one prop’s silhouette and details, then inspect the mesh in the interactive viewer.
Input
A non-empty description of the object, up to 1,024 characters.
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 Text 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/text-to-3d",
"input": {
"face_limit": 2500,
"texture": true,
"model_seed": 927101,
"prompt": "A compact stylized lunar survey rover, one standalone game asset. Four large chunky black treaded wheels, two on each side, a low orange and ivory rectangular chassis with beveled corners, a dark blue inset front window, a short thick camera mast centered on the roof, and a small flat rear equipment deck. Clearly separated wheels and wheel arches, sturdy simple geometry, clean readable silhouette, broad orange and white material regions, restrained surface detail. Native low-poly real-time game asset, no ground plane, no terrain, no text, no logos, no people, no extra vehicles."
}
}
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": "75LQ7BZCV1D3BRCM",
"status": "running",
"created_time": "2026-09-27T21:56:08"
}
}{
"code": 200,
"data": {
"task_id": "75LQ7BZCV1D3BRCM",
"status": "finished",
"files": [
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/p1/text-to-3d/v1/01/00-output.glb",
"file_type": "3d"
},
{
"file_url": "https://cdn.vidgo.ai/apis/models/tripo3d/p1/text-to-3d/v1/01/01-output.png",
"file_type": "image"
}
],
"created_time": "2026-09-27T21:56:08",
"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/text-to-3d",
"input": {
"face_limit": 2500,
"texture": true,
"model_seed": 927101,
"prompt": "A compact stylized lunar survey rover, one standalone game asset. Four large chunky black treaded wheels, two on each side, a low orange and ivory rectangular chassis with beveled corners, a dark blue inset front window, a short thick camera mast centered on the roof, and a small flat rear equipment deck. Clearly separated wheels and wheel arches, sturdy simple geometry, clean readable silhouette, broad orange and white material regions, restrained surface detail. Native low-poly real-time game asset, no ground plane, no terrain, no text, no logos, no people, no extra vehicles."
}
}
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 |
|---|---|---|---|---|
| prompt | string | Yes | — | A non-empty description of the object, up to 1,024 characters. |
| 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 |
|---|---|---|
| prompt | 1–1024 | A non-empty description of the object, up to 1,024 characters. |
| 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 Text to 3D Related Workflows
Tripo3D P1 Text to 3D API frequently asked questions
What is the Tripo3D P1 Text to 3D API?
Tripo3D P1 Text to 3D is a Tripo AI model for creating low-poly 3D objects from text prompts. It combines object descriptions with a target face count, texture selection, and a geometry seed for prop and scene 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.
What silhouette details should Tripo3D P1 Text to 3D prompts include?
Describe one object’s type, overall silhouette, proportions, and defining details. For a treasure chest, specify its curved lid and metal bands. Prompt accepts up to 1,024 characters.
How does Tripo3D P1 Text 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 a prop or scene object.
How does texture selection affect Tripo3D P1 Text 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 Text to 3D repeat geometry with a seed?
Enter an integer Model Seed and save the prompt, face target, and texture setting. Reuse the same input and settings with the seed to reproduce geometry generation.
Which game props suit Tripo3D P1 Text to 3D?
Clean low-poly meshes suit standalone tools, containers, furniture, and scene-object prototypes. Describe one object and set a face target to compare its shape against your asset budget.
When should I choose Tripo3D P1 Text to 3D over Tripo3D P1 Image to 3D?
Choose Text to 3D when you have an object concept to describe in words. Choose Image to 3D when one object image should guide the model’s shape.
