About Tripo H3.1
Accurate 3D shapes and true colors from one product photo.
Call it with the model name tripo/h3.1/image-to-3d on POST /jobs/createTask, from $0.432.
Introduction
Tripo H3.1 is the image-to-3D model Tripo AI introduced in March 2026 for production-grade assets, with sharper geometry, better alignment to the input picture and higher-quality textures than its earlier H-series models. You send one picture (image_url) and get one binary glTF file (.glb) back. Unlike single-switch converters, every stage of the pipeline is exposed: whether to texture the mesh, whether to add PBR maps, HD textures, detailed geometry, quad topology, a target face count, real-world scaling, the final orientation and two separate seeds. There is no prompt.
Key features
Shape that follows the picture
In our boot test the model kept the proportions of the photo and put the heel loop, lace hooks and tread on the correct sides even though the photo showed only the front. The textured result carried the worn leather, the red laces and the stitching onto the mesh.
Textures you can switch and upgrade
Textures are on by default and come as a full PBR set. Our default-settings file held a 2048-pixel base-colour map, a metal-roughness map and a normal map in one material.
Topology and size under your control
face_limit caps the number of faces anywhere from 1,000 to 2,000,000, quad_mesh switches to four-sided polygons for editing in a modelling tool, and geometry_quality: detailed spends more on fine surface detail. auto_size scales the mesh to real-world dimensions and model_orientation: align_image turns it to match the picture.
What we measured
At the default settings a 1024×1024 front view of a leather boot came back in 167 seconds as a 45.8 MB GLB with 1,471,382 triangles and three textures. That density is the reason to set face_limit for anything shown in a browser.
Request parameters
| Parameter | Required | Description |
|---|---|---|
auto_size | No | Scale the mesh to estimated real-world dimensions. Off by default. Default: false |
face_limit | No | Target face count, 1,000 to 2,000,000. Leave empty to let the model decide (often over a million faces). ≥ 1000 · ≤ 2000000 |
generate_pbr | No | Add PBR material maps (metal-roughness and normal). On by default and switches texturing on. Default: true |
generate_texture | No | Paint a texture onto the mesh. On by default; turning it off only removes texturing if generate_pbr is off too. Default: true |
geometry_quality | No | Geometry detail: standard (the default) or detailed. detailed builds finer surface detail and costs more. standard · detailed · Default: standard |
image_url | Yes | The picture to start from. |
model_orientation | No | default keeps the standard orientation; align_image rotates the model to match the picture. default · align_image · Default: default |
quad_mesh | No | Return four-sided (quad) polygons instead of triangles, for editing in modelling tools; the file then comes back as FBX instead of GLB. Off by default; adds to the price. Default: false |
seed | No | Use the same seed and settings for more controlled comparisons. ≥ 0 · ≤ 2147483647 |
texture_alignment | No | Align the texture to the original picture (the default) or to the generated geometry. original_image · geometry · Default: original_image |
texture_quality | No | Texture resolution: standard (the default) or detailed. detailed costs more and only applies to textured meshes. standard · detailed · Default: standard |
texture_seed | No | Seed for the texture step. Keep seed fixed and change this to try new textures on the same shape. ≥ 0 · ≤ 2147483647 |
Pricing
Prices are in USD. The API uses a separate USD balance. Website credits cannot be used or transferred to it, and API funds cannot be transferred to website credits. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
| Option | USD per run |
|---|---|
| Standard | $0.432 |
Send the same request body to POST /jobs/quote to see the estimated and maximum USD charge before running. A quote does not run the task or charge your balance.
Use cases
Assets for games, AR and real-time scenes
Set face_limit to the budget of your scene, switch on quad_mesh if the asset will be edited, and keep PBR on so the model reacts to scene lighting.
Product visualisation and printing
For a product viewer, keep textures on and use texture_quality: detailed when labels or stitching must stay readable. For 3D printing or sculpting, turn both texture switches off and set auto_size so the mesh arrives at a realistic scale.
Prompt guide & pro tips
Start from a clean picture
One subject, fully in frame, on a plain background. A three-quarter view tells the model more about depth than a straight front view. JPEG, PNG or WebP up to 10 MB.
Turn on only what you need
Run a first pass at the defaults with a face_limit, then upgrade only the stage that falls short.
Use the two seeds to iterate
seed fixes the geometry and texture_seed fixes the texture. Keep seed and change texture_seed to try new surfaces on the same shape, or keep texture_seed while you explore shapes.
Check the hidden side
Open the GLB in a viewer and turn it all the way round before you use it. If the unseen side is wrong, a different camera angle in the source picture helps more than any setting.
API quick start
Call the Tripo H3.1 API in three steps
- Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow-. API calls use your separate USD balance.
- Send the request. POST /jobs/createTask with model tripo/h3.1/image-to-3d and an input object that follows the parameter table. The response returns a task ID straight away.
- Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{
"model": "tripo/h3.1/image-to-3d",
"input": {
"image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
"generate_texture": true,
"generate_pbr": true,
"texture_quality": "standard",
"geometry_quality": "standard",
"model_orientation": "default"
}
}'
# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $POPNOW_API_KEY"Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.
Tripo H3.1 API questions
How much does the Tripo H3.1 API cost?
Tripo H3.1 costs $0.432 per run. The API uses a separate USD balance. Website credits cannot be used or transferred to it, and API funds cannot be transferred to website credits. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
What is the model name for Tripo H3.1 in the API?
Put tripo/h3.1/image-to-3d for Image to 3D in the model field of POST /jobs/createTask.
What is in the GLB?
One mesh with an embedded material. At the default settings our file carried three textures, a base-colour map, a metal-roughness map and a normal map, all at 2048 pixels. Switch generate_texture and generate_pbr off and you get the bare mesh.
How do I keep the file small?
Set face_limit, for example 50,000 to 200,000 for web viewers. Leaving it empty lets the model choose, which in our run meant more than a million triangles.
Can I reproduce a result?
Yes. seed fixes the geometry step and texture_seed fixes the texture step, so you can keep the shape and try a different texture, or the other way round.
What are the limits of the Tripo H3.1 API?
Largest upload: 10 MB. Requests outside these limits are rejected before anything is charged.
Can I try Tripo H3.1 without writing code?
Run Tripo H3.1 in the Playground with your API USD balance, without an API key. Each run appears in your developer history with its matching code.