GPT Image 2.5 is LIVE — Flare & Sunburst | Try in Image Generator →
Home/Explore/Tripo3D/P2/Text To 3d

tripo3d/

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.

text-to-3d
Input
Enable Safety Checker

Idle

$1per run

ExamplesView all

3D model output

Open preview to inspect the generated asset.

An ornate steampunk airship: a riveted brass and copper hull with porthole windows, a wooden deck with railings and a ship wheel, twin brass propellers at the stern, rope rigging connecting to a patched canvas balloon with leather straps and a brass gondola lantern, weathered metal with scratches and patina, single isolated object, game asset

Related Models

README

Tripo P2 Text-to-3D

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 enable quad for quad-based topology.

  • Flexible texture quality
    Choose fast, standard, detailed, or extreme texture 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 with face_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
    Enable auto_size to 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

ParameterRequiredDescription
promptYesText description of the 3D object to generate. Maximum 1024 characters.
negative_promptNoOptional description of features or characteristics to avoid. Maximum 255 characters.
textureNoGenerate textures for the model. Set both texture=false and pbr=false for untextured generation. Default: true.
pbrNoGenerate PBR material maps. Enabling PBR also enables texture generation and texture billing. Default: true.
texture_qualityNoTexture quality: fast, standard, detailed, or extreme. Default: standard. fast requires texture_version=v3.5-20260815.
texture_versionNoOptional texture model version. Use v3.5-20260815 when selecting fast texture quality.
face_limitNoOptional mesh face limit from 48 to 50000. When quad=true, use at most 25000 faces. Omit for adaptive face-count selection.
quadNoGenerate quad topology instead of triangle topology. Maximum 25000 faces. Default: false.
delightNoRemove baked-in lighting before texturing when using v3.5-20260815. Default: true.
auto_sizeNoAutomatically scale the generated model to real-world dimensions in meters. Default: false.
export_uvNoGenerate UV coordinates for the model. Default: true.
export_orientationNoOptional forward-axis orientation for the exported model.
model_seedNoOptional seed for reproducible geometry generation.
texture_seedNoOptional seed for reproducible texture generation.
image_seedNoOptional seed for the internal text-to-image stage.

How to Use

  1. Describe the object — Write a clear prompt describing the shape, structure, materials, and important visual features.
  2. Add exclusions optional — Use negative_prompt to specify unwanted characteristics.
  3. Configure textures — Enable or disable texture and pbr, then choose the desired texture quality.
  4. Configure geometry optional — Set face_limit and choose triangle or quad topology.
  5. Configure export options optional — Adjust UV export, orientation, and real-world scaling when needed.
  6. Set seeds optional — Use fixed geometry, texture, or image seeds when reproducibility matters.
  7. Submit — Generate and download the completed 3D model.

Pricing

Pricing is based on whether textures are generated and the selected texture_quality.

Texture ConfigurationPrice
No textures$1.00
Fast textures$1.10
Standard textures$1.10
Detailed textures$1.20
Extreme textures$1.30

The base geometry price is $1.00 per generated model.

When either texture or pbr is enabled:

  • fast or standard adds $0.10
  • detailed adds $0.20
  • extreme adds $0.30

Both texture and pbr default to true, while texture_quality defaults to standard, so the default request costs $1.10.

Set both texture=false and pbr=false for the $1.00 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 standard texture quality for initial iterations and move to detailed or extreme when higher texture fidelity is needed.
  • Disable both texture and pbr when you only need geometry and want the lowest-cost generation.
  • Use quad=true when quad topology is important for downstream editing, and keep face_limit at or below 25000.
  • Omit face_limit when you want the model to choose mesh complexity adaptively.
  • Enable auto_size when real-world scale in meters matters.
  • Use fixed seeds when comparing prompt, geometry, or texture changes.

Notes

  • prompt is required and supports up to 1024 characters.
  • negative_prompt supports up to 255 characters.
  • face_limit supports 48–50000 faces for triangle meshes.
  • Quad meshes support up to 25000 faces.
  • fast texture quality requires texture_version=v3.5-20260815.
  • Other supported texture versions include v3.0-20250812 and v2.5-20250123.
  • texture and pbr both default to true.
  • export_uv defaults to true.
  • The API returns the primary model download URL.
  • The provider may return 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

Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

P2 Text To 3d API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/tripo3d/p2/text-to-3d with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for P2 Text To 3d below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "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 "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/tripo3d/p2/text-to-3d";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "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"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "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"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/tripo3d/p2/text-to-3d", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

P2 Text To 3d API — Frequently asked questions

What is the P2 Text To 3d API?

P2 Text To 3d is a Tripo3D model for 3D asset generation, exposed as a REST API 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. You can call it programmatically or try it from the playground above.

How do I call the P2 Text To 3d API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/tripo3d/tripo3d-p2-text-to-3d.

How much does P2 Text To 3d cost per run?

P2 Text To 3d starts at $1 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does P2 Text To 3d accept?

Key inputs: `prompt`, `negative_prompt`, `auto_size`, `delight`, `export_orientation`, `export_uv`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/tripo3d/tripo3d-p2-text-to-3d.

How do I get started with the P2 Text To 3d API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use P2 Text To 3d outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Tripo3D). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

Tripo P2 Text-to-3D API on WaveSpeedAI