tripo3d/p2/text-to-3d

Tripo P2 generates 3D models from a text prompt, with optional PBR textures, adjustable face counts, and triangle or quad mesh topology.
Inference
Commercial use
Partner

About

P2 Text To 3D

1. Calling the API#

Install the client#

The client provides a convenient way to interact with the model API.

npm install --save @fal-ai/client

Setup your API Key#

Set FAL_KEY as an environment variable in your runtime.

export FAL_KEY="YOUR_API_KEY"

Submit a request#

The client API handles the API submit protocol. It will handle the request status updates and return the result when the request is completed.

import { fal } from "@fal-ai/client";

const result = await fal.subscribe("tripo3d/p2/text-to-3d", {
  input: {
    prompt: "A low-poly wooden chair"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});
console.log(result.data);
console.log(result.requestId);

2. Authentication#

The API uses an API Key for authentication. It is recommended you set the FAL_KEY environment variable in your runtime when possible.

API Key#

In an environment where you cannot set environment variables, you can configure the API key manually on the client.
import { fal } from "@fal-ai/client";

fal.config({
  credentials: "YOUR_FAL_KEY"
});

3. Queue#

Submit a request#

The client API provides a convenient way to submit requests to the model.

import { fal } from "@fal-ai/client";

const { request_id } = await fal.queue.submit("tripo3d/p2/text-to-3d", {
  input: {
    prompt: "A low-poly wooden chair"
  },
  webhookUrl: "https://optional.webhook.url/for/results",
});

Fetch request status#

You can fetch the status of a request to check if it is completed or still in progress.

import { fal } from "@fal-ai/client";

const status = await fal.queue.status("tripo3d/p2/text-to-3d", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b",
  logs: true,
});

Get the result#

Once the request is completed, you can fetch the result. See the Output Schema for the expected result format.

import { fal } from "@fal-ai/client";

const result = await fal.queue.result("tripo3d/p2/text-to-3d", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b"
});
console.log(result.data);
console.log(result.requestId);

4. Files#

Some attributes in the API accept file URLs as input. Whenever that's the case you can pass your own URL or a Base64 data URI.

Data URI (base64)#

You can pass a Base64 data URI as a file input. The API will handle the file decoding for you. Keep in mind that for large files, this alternative although convenient can impact the request performance.

Hosted files (URL)#

You can also pass your own URLs as long as they are publicly accessible. Be aware that some hosts might block cross-site requests, rate-limit, or consider the request as a bot.

Uploading files#

We provide a convenient file storage that allows you to upload files and use them in your requests. You can upload files using the client API and use the returned URL in your requests.

import { fal } from "@fal-ai/client";

const file = new File(["Hello, World!"], "hello.txt", { type: "text/plain" });
const url = await fal.storage.upload(file);

Read more about file handling in our file upload guide.

5. Schema#

Input#

prompt string* required

Text description of the 3D object to generate. Maximum 1024 characters.

negative_prompt string

Text describing features to avoid in the generated model.

image_seed integer

Seed for the internal text-to-image step.

model_seed integer

Seed for geometry generation reproducibility.

face_limit integer

Maximum number of faces for the generated mesh. Quad meshes support up to 25,000 faces.

texture boolean

Whether to generate textures for the model. Default value: true

pbr boolean

Whether to generate PBR material maps. Enabling PBR also enables textures. Default value: true

texture_seed integer

Seed for texture generation reproducibility.

texture_quality TextureQualityEnum

Texture quality level. Default value: "standard"

Possible enum values: fast, standard, detailed, extreme

texture_version Enum

Texture model version. The fast quality requires v3.5-20260815.

Possible enum values: v3.5-20260815, v3.0-20250812, v2.5-20250123

delight boolean

Remove baked-in lighting before texturing with v3.5-20260815. Default value: true

auto_size boolean

Auto-scale the model to real-world dimensions in meters.

export_uv boolean

Whether to generate UV coordinates for the model. Default value: true

export_orientation Enum

Optional forward axis for the exported model.

Possible enum values: +x, -x, -y, +y

quad boolean

Generate quad mesh topology instead of triangles.

{
  "prompt": "A low-poly wooden chair",
  "texture": true,
  "pbr": true,
  "texture_quality": "standard",
  "delight": true,
  "export_uv": true
}

Output#

model_mesh File* required

Generated 3D model file. May be GLB or FBX depending on Tripo output.

model_urls ModelUrls* required

URLs for different 3D model variants.

rendered_image File

Preview render of the generated 3D model.

{
  "model_mesh": {
    "url": "",
    "content_type": "image/png",
    "file_name": "z9RV14K95DvU.png",
    "file_size": 4404019
  },
  "model_urls": {}
}

Other types#

File#

url string* required

The URL where the file can be downloaded from.

content_type string

The mime type of the file.

file_name string

The name of the file. It will be auto-generated if not provided.

file_size integer

The size of the file in bytes.

ModelUrls#

glb File

GLB format 3D model

fbx File

FBX format 3D model

base_model File

Base (untextured) model

pbr_model File

PBR-textured model

Related Models