# Compress

## ​Compress a 3D asset

<mark style="color:green;">`POST`</mark> `https://api.echo3D.com/compress`

This endpoint allows you to compress a 3D model.

#### Request Body

| Name                                               | Type    | Description                                                                                                                                                                      |
| -------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| key<mark style="color:red;">\*</mark>              | string  | Your API key.                                                                                                                                                                    |
| email<mark style="color:red;">\*</mark>            | string  | Your email address                                                                                                                                                               |
| userKey<mark style="color:red;">\*</mark>          | string  | Your authentication key                                                                                                                                                          |
| hologramFileType<mark style="color:red;">\*</mark> | string  | A type of hologram. Only `2` form `MODEL_HOLOGRAM` is supported.                                                                                                                 |
| ratio                                              | number  | A value between 0 to 1 that represents the compression ratio where 1 the original model and 0 is an empty model. For example, `0.3`. Default is `1`.                             |
| fileToCompress                                     | string  | The model file to compress. Supported formats include .obj, .fbx, .gltf, and .glb.                                                                                               |
| compressGlb                                        | boolean | True if the output file should go through lossless compression which dramatically reduces file size but only supports a .glb output and selected 3D players. Default is `false`. |
| gltfpack                                           | boolean | True if the output should include an optimize version of the file using `glftpack`. Default is `false`.                                                                          |
| tags                                               | string  | Command-line parameters for `gltfpack`. Only `cc` (produce compressed output) and `tc` (compress textures) are supported. Use `cc,tc` to include both.                           |
| modelName                                          | string  | The name to set for the output file.                                                                                                                                             |
| modelId                                            | string  | The entry ID of the model file to compress.                                                                                                                                      |
| resize                                             | boolean | True if the output file should be resized. Default is `false`.                                                                                                                   |
| gltftransform                                      | string  | The `gltf-transform` command to run (list of commands can be found [here](https://gltf-transform.donmccurdy.com/cli.html)).                                                      |
| secKey                                             | string  | Your Secret key. Only if enabled through the [Security page](/web-console/manage-pages/collections-and-sharing/security.md#secret-key).                                          |
| ultimateCompress                                   | boolean | True if the output should include an optimize version of the file using echo3D Ultimate Compression. Default is `false`.                                                         |

{% tabs %}
{% tab title="200 The compressed file will start downloading." %}

```
N/A
```

{% endtab %}
{% endtabs %}

![](/files/-MdxPZLpWdVvtR22r3rw)

## Action Descriptions and Priority

### 1. Resizing

If a Compress API call is sent with `resize=true`,the model will be resized based on the `ratio` value given.

### 2. Polygon Reduction

If a Compress API call is sent with no `resize` parameter or with `resize=false`, the model will be decimated (poly reduced) based on the `ratio` value given.

### 3. echo3d Ultimate Compression

If a Compress API call is sent with no `resize` parameter or with `resize=false` and `ultimateCompress=true`, the model will go through extensive compression which dramatically reduces file size. When compressing a file directly (not an entry), only .gltf and .glb files are supported. Only supports a .glb output and works with selected 3D players. Note that this compression may be lossy.

### 4. Draco Compression

If a Compress API call is sent with no `resize` parameter or with `resize=false` and `compressGlb=true`, the model will go through lossless Draco compression which reduces file size. Only supports a .glb output and works with selected 3D players.

### 5. gltfpack

If a Compress API call is sent with no `resize` parameter or with `resize=false`, no `compressGlb` parameter or `compressGlb=false`, and `gltfpack=true`, the model will be  optimized using the `glftpack` tool. You should send the file (in `.gltf` or `.glb` format) using the fileToCompress parameter, or the entry ID or the Poly model ID using the `modelId` parameter. You can also add command-line parameters for `gltfpack`:

* `cc` to produce a compressed output.
* `tc` to compress textures.

### 6. gltf-transform

If a Compress API call is sent with no `resize` parameter or with `resize=false`, no `compressGlb` parameter or `compressGlb=false`, and `gltfpack=false`, the model will be  optimized using the `gltf-transform` tool. You should set the gltf-transform parameter as the command to run with `gltftransform=<COMMAND>` (list can be found [here](https://gltf-transform.donmccurdy.com/cli.html)), and send the file (in `.gltf` or `.glb` format) using the fileToCompress parameter. You can also add command-line parameters for `gltftransform`, for example:

* `gltftransform` set to `resize`.
* `width` set to `256`.
* `height` set to `256`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.echo3d.com/api/compress.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
