> For the complete documentation index, see [llms.txt](https://docs.echo3d.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.echo3d.com/api/compress.md).

# Compress

Learn how to compress assets with a query.

## ​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 %}

![](https://3757500311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M41BcmqhdFQ3r89wcIR%2F-MdxP8Qqh7BprO-Ex9U5%2F-MdxPZLpWdVvtR22r3rw%2FCompress%20API.png?alt=media\&token=40d867ca-aceb-4df8-b721-f914702ecaf0)

## 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`.
