# Transloadit

> Transloadit is a versatile file uploading and processing API that allows developers to create complex media processing workflows through declarative JSON recipes called Assembly Instructions.

## Uploading and importing (INPUT)

Transloadit handles file uploads over XHR or tus.io (our open source protocol for resumable file uploads) and can process files through various "Robots" (specialized processing steps) that can be chained together to create customized workflows.

## Encoding workflows (PROCESS)

Assembly Instructions at a glance:

```json
{
  "steps": {
    ":original": {
      "robot": "/upload/handle"
    },
    "browser720_webm_encoded": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "webm",
      "width": 1280,
      "height": 720
    },
    "browser720_h264_encoded": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "mp4",
      "width": 1280,
      "height": 720
    },
    "thumbed": {
      "use": "browser720_h264_encoded",
      "robot": "/video/thumbs",
      "width": 1280,
      "height": 720,
      "format": "jpg",
      "resize_strategy": "fit",
      "count": 1,
    },
    "exported": {
      "use": ["browser720_webm_encoded", "browser720_h264_encoded", "thumbed", ":original"],
      "robot": "/s3/store",
      "credentials": "demo_s3_credentials",
      "url_prefix": "https://demos.transloadit.com/"
    }
  }
}
```

As you can see, our features are called Robots, and each Step inside
the Assembly Instructions can refer one. Robots can pass files to each other
with the `use` keyword. This means you can create complex workflows
unique to your application.

## Exporting to cloud storage or downloading results (OUTPUT)

Transloadit can export to all the major cloud storage providers.
Customers first need to store their credentials in their Transloadit account and
then refer to them in the Assembly Instructions.

Alternatively, Transloadit keeping 24h of temporary storage, you can directly download
resulting files when an Assembly is finished.

All meta data is available on a unique Assembly URL which contains the Assembly Status JSON.

## Example integration code with Node.js

```js
// npm install transloadit
const { Transloadit } = require('transloadit')

const transloadit = new Transloadit({
  authKey: 'TRANSLOADIT_KEY',
  authSecret: 'TRANSLOADIT_SECRET',
})

const options = {
  files: {
    file1: '/PATH/TO/FILE.jpg',
  },
  params: {
    steps: {
      // You can have many Steps. In this case we will just resize any inputs (:original)
      ':original': {
        robot: '/upload/handle',
      },
      resize: {
        use: ':original',
        robot: '/image/resize',
        result: true,
        width: 75,
        height: 75,
      },
    },
    // OR if you already created a template, you can use it instead of "steps":
    // template_id: 'YOUR_TEMPLATE_ID',
  },
  waitForCompletion: true, // Wait for the Assembly (job) to finish executing before returning
}

const status = await transloadit.createAssembly(options)
console.log('✅ Success - Your resized image:', status?.results?.resize?.[0]?.ssl_url)
```

## SDKs

- [Uppy](https://uppy.io/): Our open source browser UI for uploading files
- [Node.js SDK](https://github.com/transloadit/node-sdk): Official Node.js integration
- [Python SDK](https://github.com/transloadit/python-sdk): Official Python integration
- [Ruby SDK](https://github.com/transloadit/ruby-sdk): Official Ruby integration
- [All SDKs](https://transloadit.com/docs/sdks/): Complete list of available SDKs

## Robots

### Available Robots

- [/audio/artwork](https://transloadit.com/docs/transcoding/audio-encoding/audio-artwork/) - extracts the embedded cover artwork from audio files and allows you to pipe it into other Steps, for example into /image/resize Steps. It can also insert images into audio files as cover artwork
- [/audio/concat](https://transloadit.com/docs/transcoding/audio-encoding/audio-concat/) - concatenates several audio files together
- [/audio/encode](https://transloadit.com/docs/transcoding/audio-encoding/audio-encode/) - converts audio files into all kinds of formats for you. We provide encoding presets for the most common formats
- [/audio/loop](https://transloadit.com/docs/transcoding/audio-encoding/audio-loop/) - loops one audio file as often as is required to match a given duration
- [/audio/merge](https://transloadit.com/docs/transcoding/audio-encoding/audio-merge/) - overlays several audio files on top of each other
- [/audio/waveform](https://transloadit.com/docs/transcoding/audio-encoding/audio-waveform/) - generates waveform images for your audio files and allows you to change their colors and dimensions
- [/azure/import](https://transloadit.com/docs/transcoding/file-importing/azure-import/) - imports whole directories of files from your Azure container
- [/azure/store](https://transloadit.com/docs/transcoding/file-exporting/azure-store/) - exports encoding results to Microsoft Azure
- [/backblaze/import](https://transloadit.com/docs/transcoding/file-importing/backblaze-import/) - imports whole directories of files from your Backblaze bucket
- [/backblaze/store](https://transloadit.com/docs/transcoding/file-exporting/backblaze-store/) - exports encoding results to Backblaze
- [/cloudfiles/import](https://transloadit.com/docs/transcoding/file-importing/cloudfiles-import/) - imports whole directories of files from your Rackspace Cloud Files container
- [/cloudfiles/store](https://transloadit.com/docs/transcoding/file-exporting/cloudfiles-store/) - exports encoding results to Rackspace Cloud Files
- [/cloudflare/import](https://transloadit.com/docs/transcoding/file-importing/cloudflare-import/) - imports whole directories of files from your cloudflare r2 bucket
- [/cloudflare/store](https://transloadit.com/docs/transcoding/file-exporting/cloudflare-store/) - exports encoding results to cloudflare r2 buckets
- [/digitalocean/import](https://transloadit.com/docs/transcoding/file-importing/digitalocean-import/) - imports whole directories of files from DigitalOcean Spaces
- [/digitalocean/store](https://transloadit.com/docs/transcoding/file-exporting/digitalocean-store/) - exports encoding results to DigitalOcean Spaces
- [/document/autorotate](https://transloadit.com/docs/transcoding/document-processing/document-autorotate/) - corrects the orientation of documents
- [/document/convert](https://transloadit.com/docs/transcoding/document-processing/document-convert/) - converts documents into different formats
- [/document/merge](https://transloadit.com/docs/transcoding/document-processing/document-merge/) - concatenates several PDF documents into a single file
- [/document/ocr](https://transloadit.com/docs/transcoding/artificial-intelligence/document-ocr/) - recognizes text in documents and returns it in a machine-readable format
- [/document/split](https://transloadit.com/docs/transcoding/document-processing/document-split/) - extracts pages from documents
- [/document/thumbs](https://transloadit.com/docs/transcoding/document-processing/document-thumbs/) - generates an image for each page in a PDF file or an animated GIF file that loops through all pages
- [/dropbox/import](https://transloadit.com/docs/transcoding/file-importing/dropbox-import/) - imports whole directories of files from your Dropbox
- [/dropbox/store](https://transloadit.com/docs/transcoding/file-exporting/dropbox-store/) - exports encoding results to Dropbox
- [/edgly/deliver](https://transloadit.com/docs/transcoding/content-delivery/edgly-deliver/) - caches and delivers files globally
- [/file/compress](https://transloadit.com/docs/transcoding/file-compressing/file-compress/) - creates archives of files or file conversion results
- [/file/decompress](https://transloadit.com/docs/transcoding/file-compressing/file-decompress/) - extracts entire archives of files to be consumed by other Robots or exported as individual files
- [/file/filter](https://transloadit.com/docs/transcoding/file-filtering/file-filter/) - directs files to different encoding Steps based on your conditions
- [/file/hash](https://transloadit.com/docs/transcoding/media-cataloging/file-hash/) - hashes files in Assemblies
- [/file/preview](https://transloadit.com/docs/transcoding/media-cataloging/file-preview/) - generates a thumbnail for any uploaded file to preview its content, similar to the thumbnails in desktop file managers
- [/file/read](https://transloadit.com/docs/transcoding/document-processing/file-read/) - reads file contents from supported file-types
- [/file/serve](https://transloadit.com/docs/transcoding/content-delivery/file-serve/) - serves files to web browsers
- [/file/verify](https://transloadit.com/docs/transcoding/file-filtering/file-verify/) - verifies your files are the type that you want
- [/file/virusscan](https://transloadit.com/docs/transcoding/file-filtering/file-virusscan/) - rejects millions of trojans, viruses, malware & other malicious threats before they reach your platform
- [/ftp/import](https://transloadit.com/docs/transcoding/file-importing/ftp-import/) - imports whole libraries of files from your FTP servers into Transloadit. This Robot relies on password access. For more security, consider our /sftp/import Robot
- [/ftp/store](https://transloadit.com/docs/transcoding/file-exporting/ftp-store/) - exports encoding results to your FTP servers. This Robot relies on password access. For more security, consider our /sftp/store Robot
- [/google/import](https://transloadit.com/docs/transcoding/file-importing/google-import/) - imports whole directories of files from Google Storage
- [/google/store](https://transloadit.com/docs/transcoding/file-exporting/google-store/) - exports encoding results to Google Storage
- [/html/convert](https://transloadit.com/docs/transcoding/document-processing/html-convert/) - takes screenshots of web pages or uploaded HTML pages
- [/http/import](https://transloadit.com/docs/transcoding/file-importing/http-import/) - imports any file that is publicly available via a web URL into Transloadit
- [/image/describe](https://transloadit.com/docs/transcoding/artificial-intelligence/image-describe/) - recognizes objects in images and returns them as English words
- [/image/facedetect](https://transloadit.com/docs/transcoding/artificial-intelligence/image-facedetect/) - detects faces in images and can return either their coordinates or the faces themselves as new images
- [/image/merge](https://transloadit.com/docs/transcoding/image-manipulation/image-merge/) - merges several images into a single spritesheet
- [/image/ocr](https://transloadit.com/docs/transcoding/artificial-intelligence/image-ocr/) - recognizes text in images and returns it in a machine-readable format
- [/image/optimize](https://transloadit.com/docs/transcoding/image-manipulation/image-optimize/) - reduces the size of images while maintaining the same visual quality
- [/image/resize](https://transloadit.com/docs/transcoding/image-manipulation/image-resize/) - resizes, crops, changes colorization, rotation, and applies text and watermarks to images
- [/meta/write](https://transloadit.com/docs/transcoding/media-cataloging/meta-write/) - writes metadata into files
- [/minio/import](https://transloadit.com/docs/transcoding/file-importing/minio-import/) - imports whole directories of files from your MinIO bucket
- [/minio/store](https://transloadit.com/docs/transcoding/file-exporting/minio-store/) - exports encoding results to MinIO buckets
- [/s3/import](https://transloadit.com/docs/transcoding/file-importing/s3-import/) - imports whole directories of files from your S3 bucket
- [/s3/store](https://transloadit.com/docs/transcoding/file-exporting/s3-store/) - exports encoding results to Amazon S3
- [/script/run](https://transloadit.com/docs/transcoding/code-evaluation/script-run/) - runs scripts in Assemblies
- [/sftp/import](https://transloadit.com/docs/transcoding/file-importing/sftp-import/) - imports whole libraries of files from your SFTP servers into Transloadit. This Robot relies on public key authentication
- [/sftp/store](https://transloadit.com/docs/transcoding/file-exporting/sftp-store/) - exports encoding results to your own SFTP server
- [/speech/transcribe](https://transloadit.com/docs/transcoding/artificial-intelligence/speech-transcribe/) - transcribes speech in audio or video files
- [/supabase/import](https://transloadit.com/docs/transcoding/file-importing/supabase-import/) - imports whole directories of files from your Supabase bucket
- [/supabase/store](https://transloadit.com/docs/transcoding/file-exporting/supabase-store/) - exports encoding results to supabase buckets
- [/swift/import](https://transloadit.com/docs/transcoding/file-importing/swift-import/) - imports whole directories of files from your Openstack/Swift bucket
- [/swift/store](https://transloadit.com/docs/transcoding/file-exporting/swift-store/) - exports encoding results to OpenStack Swift buckets
- [/text/speak](https://transloadit.com/docs/transcoding/artificial-intelligence/text-speak/) - synthesizes speech in documents
- [/text/translate](https://transloadit.com/docs/transcoding/artificial-intelligence/text-translate/) - translates text in documents
- [/tigris/import](https://transloadit.com/docs/transcoding/file-importing/tigris-import/) - imports whole directories of files from your Tigris bucket
- [/tigris/store](https://transloadit.com/docs/transcoding/file-exporting/tigris-store/) - exports encoding results to Tigris buckets
- [/tlcdn/deliver](https://transloadit.com/docs/transcoding/content-delivery/tlcdn-deliver/) - caches and delivers files globally
- [/tus/store](https://transloadit.com/docs/transcoding/file-exporting/tus-store/) - exports encoding results to any Tus-compatible server
- [/upload/handle](https://transloadit.com/docs/transcoding/handling-uploads/upload-handle/) - receives uploads that your users throw at you from browser or apps, or that you throw at us programmatically
- [/video/adaptive](https://transloadit.com/docs/transcoding/video-encoding/video-adaptive/) - encodes videos into HTTP Live Streaming (HLS) and MPEG-Dash supported formats and generates the necessary manifest and playlist files
- [/video/concat](https://transloadit.com/docs/transcoding/video-encoding/video-concat/) - concatenates several videos together
- [/video/encode](https://transloadit.com/docs/transcoding/video-encoding/video-encode/) - encodes, resizes, applies watermarks to videos and animated GIFs
- [/video/merge](https://transloadit.com/docs/transcoding/video-encoding/video-merge/) - composes a new video by adding an audio track to existing still image(s) or video
- [/video/subtitle](https://transloadit.com/docs/transcoding/video-encoding/video-subtitle/) - adds subtitles and closed captions to videos
- [/video/thumbs](https://transloadit.com/docs/transcoding/video-encoding/video-thumbs/) - extracts any number of images from videos for use as previews
- [/vimeo/store](https://transloadit.com/docs/transcoding/file-exporting/vimeo-store/) - exports encoding results to vimeo
- [/wasabi/import](https://transloadit.com/docs/transcoding/file-importing/wasabi-import/) - imports whole directories of files from your wasabi bucket
- [/wasabi/store](https://transloadit.com/docs/transcoding/file-exporting/wasabi-store/) - exports encoding results to Wasabi buckets
- [/youtube/store](https://transloadit.com/docs/transcoding/file-exporting/youtube-store/) - exports encoding results to YouTube

## More resources

- [Getting Started](https://transloadit.com/docs/): Introduction to Transloadit's core concepts
- [Assembly Instructions](https://transloadit.com/docs/topics/assembly-instructions/): How to create processing workflows
- [Templates](https://transloadit.com/docs/topics/templates/): Learn about reusable Assembly Instructions
- [API Reference](https://transloadit.com/docs/api/): Detailed API documentation
- [Community Forum](https://community.transloadit.com/): Get help from other Transloadit users
- [Status Page](https://status.transloadit.com/): Real-time status of our services
- [Pricing](https://transloadit.com/pricing/): Transloadit pricing plans
- [Blog](https://transloadit.com/blog/): Latest news and updates

this file is 16kB