Tripo3d P2 Text To 3d API Documentation
Playground
Try it on WaveSpeedAI!Tripo P2 Text-to-3D generates detailed 3D meshes from text prompts, with optional PBR textures, selectable texture quality, and triangle or quad topology for game assets, product visualization, 3D design, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Tripo P2 Text-to-3D generates a downloadable 3D model directly from a text description, with optional textures and PBR materials. Describe the object you want to create, then control mesh topology, face count, texture quality, UVs, orientation, and real-world scaling for downstream 3D workflows.
It supports both triangle and quad meshes, multiple texture-quality tiers, and reproducible geometry and texture generation through dedicated seed controls.
Why Choose This?
-
Text-to-3D generation
Create complete 3D assets directly from natural-language descriptions. -
Triangle or quad topology
Generate standard triangle meshes or enablequadfor quad-based topology. -
Flexible texture quality
Choosefast,standard,detailed, orextremetexture quality depending on speed, cost, and fidelity requirements. -
Optional PBR materials
Generate PBR material maps for more realistic rendering and downstream asset workflows. -
Face-count control
Set a target mesh complexity withface_limit, or omit it for adaptive face-count selection. -
UV export
Generate UV coordinates for texturing and further editing in 3D software. -
Real-world scaling
Enableauto_sizeto automatically scale the generated model to real-world dimensions in meters. -
Reproducible generation
Use separate seeds for geometry, texture, and the internal text-to-image stage.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the 3D object to generate. Maximum 1024 characters. |
| negative_prompt | No | Optional description of features or characteristics to avoid. Maximum 255 characters. |
| texture | No | Generate textures for the model. Set both texture=false and pbr=false for untextured generation. Default: true. |
| pbr | No | Generate PBR material maps. Enabling PBR also enables texture generation and texture billing. Default: true. |
| texture_quality | No | Texture quality: fast, standard, detailed, or extreme. Default: standard. fast requires texture_version=v3.5-20260815. |
| texture_version | No | Optional texture model version. Use v3.5-20260815 when selecting fast texture quality. |
| face_limit | No | Optional mesh face limit from 48 to 50000. When quad=true, use at most 25000 faces. Omit for adaptive face-count selection. |
| quad | No | Generate quad topology instead of triangle topology. Maximum 25000 faces. Default: false. |
| delight | No | Remove baked-in lighting before texturing when using v3.5-20260815. Default: true. |
| auto_size | No | Automatically scale the generated model to real-world dimensions in meters. Default: false. |
| export_uv | No | Generate UV coordinates for the model. Default: true. |
| export_orientation | No | Optional forward-axis orientation for the exported model. |
| model_seed | No | Optional seed for reproducible geometry generation. |
| texture_seed | No | Optional seed for reproducible texture generation. |
| image_seed | No | Optional seed for the internal text-to-image stage. |
How to Use
- Describe the object — Write a clear
promptdescribing the shape, structure, materials, and important visual features. - Add exclusions optional — Use
negative_promptto specify unwanted characteristics. - Configure textures — Enable or disable
textureandpbr, then choose the desired texture quality. - Configure geometry optional — Set
face_limitand choose triangle or quad topology. - Configure export options optional — Adjust UV export, orientation, and real-world scaling when needed.
- Set seeds optional — Use fixed geometry, texture, or image seeds when reproducibility matters.
- Submit — Generate and download the completed 3D model.
Pricing
Pricing is based on whether textures are generated and the selected texture_quality.
| Texture Configuration | Price |
|---|---|
| No textures | $1.20 |
| Fast textures | $1.32 |
| Standard textures | $1.32 |
| Detailed textures | $1.44 |
| Extreme textures | $1.56 |
The base geometry price is $1.20 per generated model.
When either texture or pbr is enabled:
fastorstandardadds $0.12detailedadds $0.24extremeadds $0.36
Both texture and pbr default to true, while texture_quality defaults to standard, so the default request costs $1.32.
Set both texture=false and pbr=false for the $1.20 untextured price.
quad, face_limit, seeds, delight, auto_size, export_uv, and export_orientation do not add separate charges.
Best Use Cases
- Game asset prototyping — Quickly create props, objects, environment assets, and concept meshes from text.
- Product visualization — Generate 3D concepts for products, furniture, devices, packaging, or industrial objects.
- 3D concept exploration — Turn early design ideas into editable 3D assets.
- Textured asset generation — Create models with textures and optional PBR materials for rendering workflows.
- Quad-mesh workflows — Generate quad topology when downstream editing or mesh workflows benefit from it.
- 3D content production — Create assets for further refinement in modeling, rendering, animation, or game-development tools.
Pro Tips
- Describe one primary object clearly instead of combining several unrelated objects in the same prompt.
- Include shape, materials, proportions, structural details, and visual style when they matter.
- Use
standardtexture quality for initial iterations and move todetailedorextremewhen higher texture fidelity is needed. - Disable both
textureandpbrwhen you only need geometry and want the lowest-cost generation. - Use
quad=truewhen quad topology is important for downstream editing, and keepface_limitat or below25000. - Omit
face_limitwhen you want the model to choose mesh complexity adaptively. - Enable
auto_sizewhen real-world scale in meters matters. - Use fixed seeds when comparing prompt, geometry, or texture changes.
Notes
promptis required and supports up to1024characters.negative_promptsupports up to255characters.face_limitsupports48–50000faces for triangle meshes.- Quad meshes support up to
25000faces. fasttexture quality requirestexture_version=v3.5-20260815.- Other supported texture versions include
v3.0-20250812andv2.5-20250123. textureandpbrboth default totrue.export_uvdefaults totrue.- The API returns the primary model download URL.
- The output may be a GLB or FBX model; no output-format selector is exposed.
- Optional parameters should be omitted when unused rather than passed as
null.
Related Models
- Tripo P2 Text-to-3D — Generate 3D models directly from text descriptions.
- Tripo P2 Image-to-3D — Generate 3D models from image references.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"texture": true,
"pbr": true,
"texture_quality": "standard",
"texture_version": "v3.5-20260815",
"quad": false,
"delight": true,
"auto_size": false,
"export_uv": true,
"export_orientation": "+x"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/tripo3d/p2/text-to-3d" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Text description of the 3D object to generate. Maximum 1024 characters. | |
| negative_prompt | string | No | - | Optional description of features to avoid. Maximum 255 characters. | |
| texture | boolean | No | true | - | Generate textures. Disable both texture and pbr for untextured pricing. |
| pbr | boolean | No | true | - | Generate PBR material maps. Enabling PBR also enables textures and texture billing. |
| texture_quality | string | No | standard | fast, standard, detailed, extreme | Texture quality. Fast requires texture_version v3.5-20260815. |
| texture_version | string | No | - | v3.5-20260815, v3.0-20250812, v2.5-20250123 | Optional texture model version. Select v3.5-20260815 when using fast quality. |
| face_limit | integer | No | - | 48 ~ 50000 | Optional mesh face limit, 48 to 50000. When quad is true, use at most 25000 faces. Omit for adaptive face count. |
| quad | boolean | No | false | - | Generate quad rather than triangle topology. Maximum 25000 faces; no additional charge. |
| delight | boolean | No | true | - | Remove baked-in lighting before texturing with v3.5-20260815. |
| auto_size | boolean | No | false | - | Auto-scale the model to real-world dimensions in meters. |
| export_uv | boolean | No | true | - | Generate UV coordinates for the model. |
| export_orientation | string | No | - | +x, -x, -y, +y | Optional forward axis for the exported model. |
| model_seed | integer | No | - | - | Optional seed for geometry generation reproducibility. |
| texture_seed | integer | No | - | - | Optional seed for texture generation reproducibility. |
| image_seed | integer | No | - | - | Optional seed for the internal text-to-image step. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |