# Image to 3D Model — P Series

**Base URL:** `https://openapi.tripo3d.ai/v3`

**Endpoint:** `POST /generation/image-to-model`

Generate a 3D model from an image using P Series. Optimized for low-poly output with clean topology. See also [H Series](https://developers.tripo3d.ai/en/docs/generation-image-to-model/standard).

## Request Parameters

### input

- **Type:** string
- **Required:** Required

Image source. The subject should be clearly visible with minimal occlusion. Accepts the following input types:**Choose exactly one** of the following — do not pass multiple types simultaneously.

- file_token — Upload an image via the [File Upload API](https://developers.tripo3d.ai/en/docs/files) first, then pass the returned token.
Example: `file_abc123`
- URL — A publicly accessible direct link to an image.
Example: `https://example.com/photo.png`
- task_id — The task ID from a previous image generation task (`text_to_image` or `image_to_image`). The system automatically extracts the output image.
Example: `550e8400-e29b-41d4-a716-446655440000`



- Supported formats: `PNG`, `JPEG`, `WebP`
- Max file size: **20 MB**
- Recommended resolution: at least **256 × 256 px**. Subject should be clearly visible with a clean background and minimal occlusion.

### model

- **Type:** string
- **Required:** Required

P Series model version. Specify a model explicitly when calling the P Series.
- `P1-20260311` — optimized for low-poly generation.
- `P2-20260801` — next-gen P Series with quad output support.

### enable_image_autofix

- **Type:** boolean
- **Required:** Optional
- **Default:** `false`

Whether to automatically optimize the input image before generation. Used for AI completion and 3D quality enhancement. When enabled, the system will enhance low-resolution or low-quality images to improve 3D generation results. Default is false.
### texture_alignment

- **Type:** string
- **Required:** Optional
- **Default:** `original_image`

Texture alignment priority.
- `original_image` — prioritize matching the input image colors.
- `geometry` — prioritize matching the generated geometry.

### orientation

- **Type:** string
- **Required:** Optional
- **Default:** `default`

Model orientation.
- `default` — automatic orientation.
- `align_image` — align the model to the input image viewpoint.
Only effective when `texture` is `true`. Has no effect without texture enabled.

### model_seed

- **Type:** integer
- **Required:** Optional

Random seed for geometry generation. Using the same seed with the same input will produce an identical 3D mesh. If not set, a random seed is used each time.
### face_limit

- **Type:** integer
- **Required:** Optional

Maximum polycount for the output mesh.


- `P1-20260311`: **50 – 20,000**
- `P2-20260801` triangle: **48 – 50,000**; with `quad=true`: **48 – 25,000**
- If omitted, adaptively determined.
For best quality: simple models start from **150** faces, complex models start from **250** faces. Lower values may result in poor generation quality.

### texture

- **Type:** boolean
- **Required:** Optional
- **Default:** `true`

Whether to generate texture maps for the model. Set to false to get a bare geometry without any textures. Default is true.
### pbr

- **Type:** boolean
- **Required:** Optional
- **Default:** `true`

Enable PBR material maps (`base_color`, `metallic`, `roughness`, `normal`).When `pbr` is set to `true`, `texture` will be automatically forced to `true`.

### texture_seed

- **Type:** integer
- **Required:** Optional

Random seed for texture generation. Using the same seed will produce identical textures. If not set, a random seed will be used each time. To get a model with different textures but the same geometry, keep model_seed unchanged and vary texture_seed.
### texture_quality

- **Type:** string
- **Required:** Optional
- **Default:** `standard`

Texture quality level.
- `fast` — the fastest generation, trading texture detail for speed. Output texture size is identical to `standard`. Requires texture `v3.5-20260815`; costs the same as `standard`.
- `standard` — balanced quality and speed.
- `detailed` — higher fidelity, slower generation.
- `extreme` — 8K textures, highest fidelity. Costs additional credits compared to detailed.


`fast` is only available on texture `v3.5-20260815`. On the generation endpoints that means `texture_version` must be set to it; on `/v3/models/texture` it means `model`. Any other texture version returns `1004` rather than silently falling back to `standard`.
### texture_version

- **Type:** string
- **Required:** Optional

Pins the texture model independently of the geometry `model`.
- `v3.5-20260815` — newest texture model. Required for `texture_quality=fast` and `delight`.
- `v3.0-20250812` — default for `v3.x` and P-series geometry.
- `v2.5-20250123` — default for `v2.5-20250123` geometry.
If omitted, it is derived from the geometry `model` as listed above.
### delight

- **Type:** boolean
- **Required:** Optional
- **Default:** `true`

Removes baked-in lighting from the reference image before texturing. Set `false` to keep the original shading. Only the `v3.5-20260815` texture model reads this; older texture versions ignore it.
### auto_size

- **Type:** boolean
- **Required:** Optional
- **Default:** `false`

Whether to automatically scale the generated model to real-world dimensions. When enabled, the model size will be in meters, suitable for AR/VR or game engine scenes. Default is false.
### export_uv

- **Type:** boolean
- **Required:** Optional
- **Default:** `true`

Controls UV unwrapping. Set `false` for faster generation and smaller file size.
### export_orientation

- **Type:** string
- **Required:** Optional
- **Default:** `+x`

Export orientation (forward axis).
- `+x` — default, X-forward.
- `-x` — negative X-forward.
- `-y` — negative Y-forward.
- `+y` — Y-forward.



- Applies to this generation only. If the model will be used in post-processing tasks (texture, rig, retarget, convert, ...), it is recommended **not** to set this parameter.
- When set, post-processing the model may produce a wrongly-oriented result while the task still reports `status: success` — no error is raised. Use with caution.
- If you plan to post-process the model, leave this unset and convert the orientation in the last step via `/v3/models/convert`.

### quad

- **Type:** boolean
- **Required:** Optional
- **Default:** `false`

**P2-20260801 only.** Whether to output a quad mesh (four-sided polygons) instead of triangles.

## Request Example

### P Series

```bash
curl --request POST \
  --url https://openapi.tripo3d.ai/v3/generation/image-to-model \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "input": "https://example.com/image.png",
  "model": "P1-20260311",
  "face_limit": 5000,
  "texture": true,
  "pbr": true
}'
```

### P2 Series

```bash
curl --request POST \
  --url https://openapi.tripo3d.ai/v3/generation/image-to-model \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "input": "https://example.com/image.png",
  "model": "P2-20260801",
  "quad": true,
  "texture": true,
  "pbr": true
}'
```


## Response Example

### Create task

```json
{
  "code": 0,
  "data": {
    "task_id": "123e4567-e89b-42d3-a456-426614174000"
  }
}
```

### Task result

```json
{
  "code": 0,
  "data": {
    "task_id": "123e4567-e89b-42d3-a456-426614174000",
    "type": "image_to_model",
    "status": "success",
    "progress": 100,
    "output": {
      "model_url": "https://cdn.tripo3d.ai/output/model_pbr.glb",
      "rendered_image_url": "https://cdn.tripo3d.ai/output/preview.png"
    },
    "created_at": "2026-04-28T12:00:00Z",
    "completed_at": "2026-04-28T12:01:30Z"
  }
}
```
