# Processing Engine

## Overview

Filestack’s `Processing Engine` is a very powerful system that allows developers to transform various types of files, including **images**, **documents**, and **videos**. Additionally, we provide insights into the contents of the files through our [Intelligence System](https://www.filestack.com/docs/transformations/intelligence/tagging/).

With Filestack, you can transform your files either in real-time by appending parameters to the URLs or asynchronously using [Workflows](https://www.filestack.com/docs/workflows/overview/).

If you need to give your users the ability to transform images, you can use [Transformation UI](https://www.filestack.com/docs/transformations/ui/) to provide them with a beautiful UI and a great experience manipulating their files.

All stored files in your application are available over the Filestack CDN, and each file’s URL can be modified with processing “tasks” that modify the requested resource. Each task has its own set of parameters that are documented on this page. Our [API Clients](https://www.filestack.com/docs/api/sdks/) provide programmatic access to construct these transformation URLs.

Processing tasks can be chained together in the same URL by separating them with forward slashes. All tasks follow the structure of `TASK=option:value`, where `option:value` pairs are comma-separated.

## Quick Example

For example, our uploaded file has the following URL:

`https://cdn.filestackcontent.com/pdn7PhZdT02GoYZCVYeF`

_Photo by [Thomas S.](https://unsplash.com/@photosbythomas?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/texas?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_

In order to resize it, we can simply add the [resize](https://www.filestack.com/docs/api/processing/#resize) task to the URL. Like this:

`https://cdn.filestackcontent.com/resize=width:300/pdn7PhZdT02GoYZCVYeF`

You may chain together as many tasks as you like, presuming their types logically follow. Tasks are executed in the order they appear in the URL, and are separated by forward slashes.

Let’s add more tasks to our image – [sepia](https://www.filestack.com/docs/api/processing/#sepia) (with parameters) and [polaroid:](https://www.filestack.com/docs/api/processing/#polaroid)

`https://cdn.filestackcontent.com/resize=width:300/sepia=tone:80/polaroid/pdn7PhZdT02GoYZCVYeF`

## Transformation Sources

You execute processing requests with either a `Filestack Handle`, a `Filestack Storage Alias`, or a `Public URL`. If using a URL or storage alias, your API key must be prepended to the task chain, like this:

### Filestack Handle

For every uploaded file, you will receive a unique URL that points to Filestack CDN. You can use that URL in your application (as is or transformed using the Filestack Processing API).

The unique part of the URL is what we call `handle`. This is the unique identifier of the file in the Filestack system. You can use the handle when you interact with the Processing Engine:

```
https://cdn.filestackcontent.com/resize=width:400/HANDLE
```

### Filestack Storage Alias

Storage aliases are a premium feature that allows you to use Filestack transformations and other add-ons with files not uploaded through Filestack. Storage aliases can be used with any of our supported cloud storage providers and, once configured, work as any other Filestack URL but require prepending your API key to the alias:

```
https://cdn.filestackcontent.com/API-KEY/resize=width:400/src://STORAGE_ALIAS
```

### Public URL

Public URL is any publicly available URL on the internet. In order to use external URLs with the Processing Engine, you might prepend your tasks with API key:

```
https://cdn.filestackcontent.com/API-KEY/resize=width:400/URL
```

## API Reference

You can view all tasks and their parameters in the [Processing API reference](https://www.filestack.com/docs/api/processing/).
