Tripo3D v2.5 Image to 3D API

tripo3d/v2.5/image-to-3d

Tripo3D v2.5 Image-to-3D turns a single image into a 3D model with Tripo's v2.5 model (up to 500,000 faces), with optional textures and PBR materials. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Image to 3D
Giriş

Sürükleyip bırakın veya yüklemek için tıklayın

preview

Boşta

3D

$0.324çalıştırma başına·~30 / $10

ÖrneklerTümünü görüntüle

3D
3D
3D
3D
3D
3D
3D
3D
3D
3D

İlgili Modeller

README

Tripo3D v2.5 Image-to-3D

Tripo3D v2.5 Image-to-3D generates a 3D model from a single reference image. Use a clear image of the object, then configure geometry, textures, topology, and optional PBR materials for the final asset.

Why Choose This?

  • Image-to-3D generation — Create a 3D model from a single reference image.
  • Texture and PBR options — Generate untextured geometry, texture maps, or PBR materials.
  • Face-limit control — Set an optional face limit, up to 500,000 faces.
  • Topology options — Generate triangle meshes, quad meshes, or smart low-poly assets.
  • Editable parts — Generate separate untextured parts for downstream editing.
  • Texture controls — Choose texture quality, alignment, UV generation, and optional lighting cleanup.

Parameters

ParameterRequiredDescription
imageYesReference image of the object. Supports PNG, JPEG, and WebP up to 20 MB.
textureNoGenerate texture maps. Disable both texture and pbr for an untextured model. Default: true.
pbrNoGenerate PBR materials. Enabling this also enables textures. Default: true.
texture_qualityNoTexture quality: standard, detailed, extreme, or fast. extreme uses 8K textures. fast requires texture version v3.5-20260815. Default: standard.
texture_versionNoTexture model version: v2.5-20250123 or v3.5-20260815. Default: v2.5-20250123.
delightNoReduce lighting baked into the source image during texturing. Applies only to texture version v3.5-20260815. Default: true.
quadNoGenerate a quad mesh in FBX format. If face_limit is omitted, the target is approximately 10,000 faces. Default: false.
smart_low_polyNoGenerate a low-poly mesh with simplified topology. Default: false.
generate_partsNoGenerate separate editable parts. Parts are untextured and use triangle meshes. Default: false.
face_limitNoRequested face limit. Omit for adaptive topology. Supports up to 500,000 faces, 150,000 for quad meshes, or 500–20,000 with smart low-poly.
texture_alignmentNoTexture alignment priority: original_image or geometry. Default: original_image.
orientationNoModel orientation: default or align_image. align_image applies to textured models. Default: default.
enable_image_autofixNoApply image preprocessing before generation. Default: false.
auto_sizeNoAutomatically estimate real-world model scale in meters. Default: false.
export_uvNoInclude UV unwrapping during generation. Default: true.
model_seedNoOptional seed for geometry generation.
texture_seedNoOptional seed for texture generation.

How to Use

  1. Upload an image — Choose a clear view of the object with minimal obstruction.
  2. Choose materials — Keep textures and PBR enabled, or disable both for an untextured model.
  3. Choose quality — Select the texture quality based on the level of detail you need.
  4. Configure topology optional — Use quad, smart low-poly, face limits, or separate parts when needed.
  5. Submit — Generate and retrieve the completed 3D model.

Pricing

Pricing is per generated model and depends on the selected options.

Base Price

ConfigurationPrice
Untextured model$0.216
Standard or fast textured model$0.324

Optional Add-ons

SettingAdditional Price
Detailed textures+$0.108
Extreme textures+$0.216
Quad mesh+$0.054
Smart low-poly mesh+$0.108
Separate parts+$0.216

The default configuration costs $0.324 per model.

PBR does not add a separate charge beyond the textured model price.

detailed and extreme texture charges apply only when textures are generated.

When generate_parts=true, the model uses the untextured base price and the separate-parts add-on. Texture and quad charges do not apply.

Best Use Cases

  • Product reconstruction — Turn product photos into reusable 3D assets.
  • Game assets — Generate textured, low-poly, or quad-based models for game workflows.
  • E-commerce 3D — Create 3D product assets from existing photography.
  • Rendering assets — Generate models with textures and optional PBR materials.
  • Editable models — Create separated parts for additional modeling and refinement.
  • High-detail assets — Pair a high face limit with detailed or 8K textures.

Pro Tips

  • Use a clear image with the object fully visible and minimal obstruction.
  • A clean background can help the model identify the object more reliably.
  • Use fast textures for quicker iteration and extreme when 8K texture detail is required.
  • Use smart_low_poly for simpler objects that need lightweight topology.
  • Use generate_parts when individual components need to remain separately editable.

Notes

  • Supported input formats are PNG, JPEG, and WebP.
  • Maximum input image size is 20 MB.
  • Disable both texture and pbr for an untextured model.
  • Enabling pbr also enables texture generation.
  • fast texture quality requires texture_version=v3.5-20260815.
  • delight applies only to texture version v3.5-20260815.
  • quad=true generates an FBX quad mesh and defaults to approximately 10,000 faces when face_limit is not specified.
  • generate_parts requires texture=false and pbr=false.
  • Do not combine generate_parts with quad or smart_low_poly.
  • Separate parts are generated as untextured triangle meshes.
  • auto_size estimates real-world scale and outputs the model size in meters.
  • orientation=align_image applies only to textured models.
  • Face limits depend on the selected topology settings.
Not:Bu web sitesi, üçüncü taraflarca sağlanan yapay zeka modellerini kullanmaktadır. Belge fiyatları yalnızca referans amaçlıdır ve güncelliğini yitirebilir. Generate düğmesi bir tahmin gösterir; nihai görev ücreti geçerlidir.

v2.5 Image To 3d API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/tripo3d/v2.5/image-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 v2.5 Image To 3d below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "texture": true,
    "pbr": true,
    "texture_quality": "standard",
    "texture_version": "v2.5-20250123",
    "delight": true,
    "quad": false,
    "smart_low_poly": false,
    "generate_parts": false,
    "texture_alignment": "original_image",
    "orientation": "default",
    "enable_image_autofix": false,
    "auto_size": false,
    "export_uv": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/tripo3d/v2.5/image-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/v2.5/image-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({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "texture": true,
        "pbr": true,
        "texture_quality": "standard",
        "texture_version": "v2.5-20250123",
        "delight": true,
        "quad": false,
        "smart_low_poly": false,
        "generate_parts": false,
        "texture_alignment": "original_image",
        "orientation": "default",
        "enable_image_autofix": false,
        "auto_size": false,
        "export_uv": true
}),
});
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 = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "texture": True,
    "pbr": True,
    "texture_quality": "standard",
    "texture_version": "v2.5-20250123",
    "delight": True,
    "quad": False,
    "smart_low_poly": False,
    "generate_parts": False,
    "texture_alignment": "original_image",
    "orientation": "default",
    "enable_image_autofix": False,
    "auto_size": False,
    "export_uv": True
}

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/v2.5/image-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)

v2.5 Image To 3d API — Frequently asked questions

What is the v2.5 Image To 3d API?

v2.5 Image To 3d is a Tripo3D model for 3D asset generation from images, exposed as a REST API on WaveSpeedAI. Tripo3D v2.5 Image-to-3D turns a single image into a 3D model with Tripo's v2.5 model (up to 500,000 faces), with optional textures and PBR materials. 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 v2.5 Image 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/v2.5/image-to-3d.

How much does v2.5 Image To 3d cost per run or per second?

v2.5 Image To 3d starts at $0.324 per run or per second. 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 v2.5 Image To 3d accept?

Key inputs: `image`, `auto_size`, `delight`, `enable_image_autofix`, `export_uv`, `face_limit`. 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/v2.5/image-to-3d.

How long does v2.5 Image To 3d take to generate?

Reported generation time on WaveSpeedAI is around 159 seconds per request. This is an estimate, not a latency guarantee; queue time and input settings can change the total wait. live status is visible in the prediction record.

Can I use v2.5 Image 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.

llms.txt — tripo3d/v2.5/image-to-3d for AI agents and LLMs