# Meshy 6 Preview

> Meshy-6-Preview is the latest model from Meshy. It generates realistic and production ready 3D models.



## Overview

- **Endpoint**: `https://fal.run/fal-ai/meshy/v6-preview/multi-image-to-3d`
- **Model ID**: `fal-ai/meshy/v6-preview/multi-image-to-3d`
- **Category**: image-to-3d
- **Kind**: inference
**Tags**: image-to-3d



## Pricing

$2.00 per untextured model / $3.00 per textured model. Add +$0.50 for auto-rigging and +$0.30 for animation. Max cost per request: $3.80.

For more details, see [fal.ai pricing](https://fal.ai/pricing).

## API Information

This model can be used via our HTTP API or more conveniently via our client libraries.
See the input and output schema below, as well as the usage examples.


### Input Schema

The API accepts the following input parameters:


- **`image_urls`** (`list<string>`, _required_):
  1 to 4 images for 3D model creation. All images should depict the same object from different angles. Supports .jpg, .jpeg, .png formats, and AVIF/HEIF which will be automatically converted. If more than 4 images are provided, only the first 4 will be used.
  - Array of string
  - Examples: ["https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png","https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png","https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"]

- **`topology`** (`TopologyEnum`, _optional_):
  Specify the topology of the generated model. Quad for smooth surfaces, Triangle for detailed geometry. Default value: `"triangle"`
  - Default: `"triangle"`
  - Options: `"quad"`, `"triangle"`

- **`target_polycount`** (`integer`, _optional_):
  Target number of polygons in the generated model Default value: `30000`
  - Default: `30000`
  - Range: `100` to `300000`

- **`symmetry_mode`** (`SymmetryModeEnum`, _optional_):
  Controls symmetry behavior during model generation. Default value: `"auto"`
  - Default: `"auto"`
  - Options: `"off"`, `"auto"`, `"on"`

- **`should_remesh`** (`boolean`, _optional_):
  Whether to enable the remesh phase. When false, returns triangular mesh ignoring topology and target_polycount. Default value: `true`
  - Default: `true`

- **`should_texture`** (`boolean`, _optional_):
  Whether to generate textures. False provides mesh without textures for 5 credits, True adds texture generation for additional 10 credits. Default value: `true`
  - Default: `true`

- **`enable_pbr`** (`boolean`, _optional_):
  Generate PBR Maps (metallic, roughness, normal) in addition to base color. Requires should_texture to be true.
  - Default: `false`

- **`pose_mode`** (`PoseModeEnum`, _optional_):
  Pose mode for the generated model. 'a-pose' generates an A-pose, 't-pose' generates a T-pose, empty string for no specific pose. Default value: `""`
  - Default: `""`
  - Options: `"a-pose"`, `"t-pose"`, `""`

- **`texture_prompt`** (`string`, _optional_):
  Text prompt to guide the texturing process. Requires should_texture to be true.

- **`texture_image_url`** (`string`, _optional_):
  2D image to guide the texturing process. Requires should_texture to be true.

- **`enable_rigging`** (`boolean`, _optional_):
  Automatically rig the generated model as a humanoid character. Includes basic walking and running animations. Best results with humanoid characters that have clearly defined limbs.
  - Default: `false`

- **`rigging_height_meters`** (`float`, _optional_):
  Approximate height of the character in meters. Only used when enable_rigging is true. Default value: `1.7`
  - Default: `1.7`

- **`enable_animation`** (`boolean`, _optional_):
  Apply an animation preset to the rigged model. Requires enable_rigging to be true.
  - Default: `false`

- **`animation_action_id`** (`integer`, _optional_):
  Animation preset ID from Meshy's library (500+ presets). Only used when enable_animation is true. See https://docs.meshy.ai/en/api/animation-library for available action IDs. Default value: `1001`
  - Default: `1001`
  - Examples: 1001

- **`enable_safety_checker`** (`boolean`, _optional_):
  If set to true, input data will be checked for safety before processing. Default value: `true`
  - Default: `true`



**Required Parameters Example**:

```json
{
  "image_urls": [
    "https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png",
    "https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png",
    "https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"
  ]
}
```

**Full Example**:

```json
{
  "image_urls": [
    "https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png",
    "https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png",
    "https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"
  ],
  "topology": "triangle",
  "target_polycount": 30000,
  "symmetry_mode": "auto",
  "should_remesh": true,
  "should_texture": true,
  "rigging_height_meters": 1.7,
  "animation_action_id": 1001,
  "enable_safety_checker": true
}
```


### Output Schema

The API returns the following output format:

- **`animation_glb`** (`File`, _optional_):
  Animated 3D model in GLB format. Only present when enable_animation is true.

- **`animation_fbx`** (`File`, _optional_):
  Animated 3D model in FBX format. Only present when enable_animation is true.

- **`model_glb`** (`File`, _required_):
  Generated 3D object in GLB format.
  - Examples: {"file_name":"model.glb","file_size":7875308,"content_type":"model/gltf-binary","url":"https://v3b.fal.media/files/b/tiger/62QMEQqZ3pjUds4DfuVtX_model.glb"}

- **`thumbnail`** (`File`, _optional_):
  Preview thumbnail of the generated model
  - Examples: {"file_name":"preview.png","file_size":70958,"content_type":"image/png","url":"https://v3b.fal.media/files/b/koala/2NI_hEd7jXzS5rLQhnRga_preview.png"}

- **`model_urls`** (`ModelUrls`, _required_):
  URLs for different 3D model formats
  - Examples: {"obj":{"file_name":"model.obj","file_size":2761323,"content_type":"text/plain","url":"https://v3b.fal.media/files/b/koala/xmOnmSeePfuROe3pqHpf0_model.obj"},"glb":{"file_name":"model.glb","file_size":7875308,"content_type":"model/gltf-binary","url":"https://v3b.fal.media/files/b/tiger/62QMEQqZ3pjUds4DfuVtX_model.glb"},"fbx":{"file_name":"model.fbx","file_size":5574540,"content_type":"application/octet-stream","url":"https://v3b.fal.media/files/b/koala/R7vPBgkecVvcnbNpRAy9x_model.fbx"},"usdz":{"file_name":"model.usdz","file_size":8631497,"content_type":"model/vnd.usdz+zip","url":"https://v3b.fal.media/files/b/panda/fSGLGmtgzUjhepklN06Zw_model.usdz"}}

- **`texture_urls`** (`list<TextureFiles>`, _optional_):
  Array of texture file objects
  - Array of TextureFiles
  - Examples: [{"base_color":{"file_name":"texture_0.png","file_size":4464364,"content_type":"image/png","url":"https://v3b.fal.media/files/b/panda/OVrRor7IgeNK9w2i5-NDf_texture_0.png"}}]

- **`seed`** (`integer`, _optional_):
  The seed used for generation (if available)
  - Examples: 783032043

- **`rigged_character_glb`** (`File`, _optional_):
  Rigged character in GLB format. Only present when enable_rigging is true.

- **`rigged_character_fbx`** (`File`, _optional_):
  Rigged character in FBX format. Only present when enable_rigging is true.

- **`basic_animations`** (`BasicAnimations`, _optional_):
  Basic walking and running animations. Only present when enable_rigging is true.

- **`rig_task_id`** (`string`, _optional_):
  Rigging task ID. Only present when enable_rigging is true.



**Example Response**:

```json
{
  "model_glb": {
    "file_name": "model.glb",
    "file_size": 7875308,
    "content_type": "model/gltf-binary",
    "url": "https://v3b.fal.media/files/b/tiger/62QMEQqZ3pjUds4DfuVtX_model.glb"
  },
  "thumbnail": {
    "file_name": "preview.png",
    "file_size": 70958,
    "content_type": "image/png",
    "url": "https://v3b.fal.media/files/b/koala/2NI_hEd7jXzS5rLQhnRga_preview.png"
  },
  "model_urls": {
    "obj": {
      "file_name": "model.obj",
      "file_size": 2761323,
      "content_type": "text/plain",
      "url": "https://v3b.fal.media/files/b/koala/xmOnmSeePfuROe3pqHpf0_model.obj"
    },
    "glb": {
      "file_name": "model.glb",
      "file_size": 7875308,
      "content_type": "model/gltf-binary",
      "url": "https://v3b.fal.media/files/b/tiger/62QMEQqZ3pjUds4DfuVtX_model.glb"
    },
    "fbx": {
      "file_name": "model.fbx",
      "file_size": 5574540,
      "content_type": "application/octet-stream",
      "url": "https://v3b.fal.media/files/b/koala/R7vPBgkecVvcnbNpRAy9x_model.fbx"
    },
    "usdz": {
      "file_name": "model.usdz",
      "file_size": 8631497,
      "content_type": "model/vnd.usdz+zip",
      "url": "https://v3b.fal.media/files/b/panda/fSGLGmtgzUjhepklN06Zw_model.usdz"
    }
  },
  "texture_urls": [
    {
      "base_color": {
        "file_name": "texture_0.png",
        "file_size": 4464364,
        "content_type": "image/png",
        "url": "https://v3b.fal.media/files/b/panda/OVrRor7IgeNK9w2i5-NDf_texture_0.png"
      }
    }
  ],
  "seed": 783032043
}
```


## Usage Examples

### cURL

```bash
curl --request POST \
  --url https://fal.run/fal-ai/meshy/v6-preview/multi-image-to-3d \
  --header "Authorization: Key $FAL_KEY" \
  --header "Content-Type: application/json" \
  --data '{
     "image_urls": [
       "https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png",
       "https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png",
       "https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"
     ]
   }'
```

### Python

Ensure you have the Python client installed:

```bash
pip install fal-client
```

Then use the API client to make requests:

```python
import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
           print(log["message"])

result = fal_client.subscribe(
    "fal-ai/meshy/v6-preview/multi-image-to-3d",
    arguments={
        "image_urls": ["https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png", "https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png", "https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"]
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)
print(result)
```

### JavaScript

Ensure you have the JavaScript client installed:

```bash
npm install --save @fal-ai/client
```

Then use the API client to make requests:

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

const result = await fal.subscribe("fal-ai/meshy/v6-preview/multi-image-to-3d", {
  input: {
    image_urls: ["https://v3b.fal.media/files/b/kangaroo/cPyD3-por0XI7jDa9F9vP_image%20(3).png", "https://v3b.fal.media/files/b/elephant/9sd5JWAOJBcR7G3NMjPVs_image%20(2).png", "https://v3b.fal.media/files/b/tiger/TP4sTzPATX_w1Tn4m6kYM_image%20(1).png"]
  },
  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);
```


## Additional Resources

### Documentation

- [Model Playground](https://fal.ai/models/fal-ai/meshy/v6-preview/multi-image-to-3d)
- [API Documentation](https://fal.ai/models/fal-ai/meshy/v6-preview/multi-image-to-3d/api)
- [OpenAPI Schema](https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/meshy/v6-preview/multi-image-to-3d)

### fal.ai Platform

- [Platform Documentation](https://docs.fal.ai)
- [Python Client](https://docs.fal.ai/clients/python)
- [JavaScript Client](https://docs.fal.ai/clients/javascript)
