The /s3/store Robot

Transloadit is happy to export to whatever storage solution suits you best.

The /s3/store Robot exports encoding results to Amazon S3.

Parameters

Name Type Default Description
bucket (required) String The name of the bucket to which the file is exported.
key (required) String Your Amazon access key ID
secret (required) String Your Amazon secret access Key
bucket_region String "us-east-1" The AWS region that your S3 bucket is in. If not provided, Transloadit will figure that out for you at some speed cost.
path String "${unique_prefix}/${file.url_name}" The path at which the file is to be stored. This may include any available Assembly variables.
url_prefix String "http://{bucket}.s3.amazonaws.com/" The URL prefix used for the returned URL, such as "http://my.cdn.com/some/path".
acl String "public-read" The permissions used for this file. This can be "public-read", "public", "private" or "bucket-default".
headers String { "Content-Type": file.mime } A JavaScript object containing a list of headers to be set for this file on S3, such as { FileURL: "${file.url_name}" }. This can also include any available Assembly variables. Here you can find a list of available headers.
host String "s3.amazonaws.com" The host of the storage service used. This only needs to be set when the storage service used is not Amazon S3, but has a compatible API (such as hosteurope.de).
no_vhost Boolean false Set to true if you use a custom host and run into access denied errors.
sign_urls_for Integer / Boolean(false) false If set to a number this parameter provides signed urls in the result JSON (in the signed_url and signed_ssl_url properties). The number that you set this parameter to is the url expiry time in seconds. If set to false no url signing is done.

Live demos

Our /s3/store Robot can be used in combination with other Robots, to create powerful workflows unique to your use case.
Here are a few example scenarios, and the required the Assembly Instructions to implement them.
You can also try demos of these examples right here, live on our website.

Audio Looping

{
  "steps": {
    "looped": {
      "use": [":original"],
      "robot": "/audio/loop",
      "result": true,
      "duration": 300,
      "preset": "mp3"
    },
    "exported": {
      "use": ["looped", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Concatenate two audio files

{
  "steps": {
    "imported_preroll": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/german-anthem.mp3"
    },
    "concatenated": {
      "use": {"steps":[{"name":"imported_preroll", "as":"audio_1"},{"name":":original", "fields":"file", "as":"audio_2"}]},
      "robot": "/audio/concat",
      "result": true,
      "ffmpeg_stack": "v2.2.3"
    },
    "exported": {
      "use": ["imported_preroll", "concatenated", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "${unique_prefix}/both-anthems.${file.ext}",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

High-quality FLAC encoding

{
  "steps": {
    "flac_encoded": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "flac"
    },
    "exported": {
      "use": ["flac_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

High-quality MP3 encoding

{
  "steps": {
    "mp3_encoded": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "mp3"
    },
    "exported": {
      "use": ["mp3_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode to OGG with custom FFmpeg parameters

{
  "steps": {
    "ogg_encoded": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "ffmpeg": {"q:a":-1,"b:a":62000,"ar":22000},
      "ffmpeg_stack": "v3.3.3",
      "preset": "ogg"
    },
    "exported": {
      "use": ["ogg_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encoding with a specific bit rate

{
  "steps": {
    "bitrate_adjusted": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "bitrate": 256000,
      "ffmpeg_stack": "v2.2.3",
      "sample_rate": 44100
    },
    "exported": {
      "use": ["bitrate_adjusted", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Extract the cover art from an audio file

{
  "steps": {
    "artwork_extracted": {
      "use": [":original"],
      "robot": "/audio/artwork",
      "result": true
    },
    "artwork_resized": {
      "use": ["artwork_extracted"],
      "robot": "/image/resize",
      "result": true,
      "height": 500,
      "imagemagick_stack": "v2.0.3",
      "resize_strategy": "fit",
      "width": 500,
      "zoom": false
    },
    "exported": {
      "use": ["artwork_extracted", "artwork_resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Generate a waveform image from an audio file

{
  "steps": {
    "waveformed": {
      "use": [":original"],
      "robot": "/audio/waveform",
      "result": true,
      "background_color": "ffffffff",
      "center_color": "1974c7aa",
      "format": "image",
      "height": 410,
      "outer_color": "1974c7aa",
      "width": 1364
    },
    "exported": {
      "use": ["waveformed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Audio watermarking

{
  "steps": {
    "audio_imported": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/bensound-energy.flac"
    },
    "merge": {
      "use": {"steps":[{"name":"audio_imported", "as":"audio"},{"name":":original", "as":"audio"}]},
      "robot": "/audio/merge",
      "result": true,
      "preset": "mp3"
    },
    "exported": {
      "use": ["audio_imported", "merge", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Insert cover art into an audio file

{
  "steps": {
    "imported_image": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/chameleon.jpg"
    },
    "inserted_artwork": {
      "use": {"steps":[{"name":":original", "as":"audio"},{"name":"imported_image", "as":"image"}],"bundle_steps":true},
      "robot": "/audio/artwork",
      "method": "insert"
    },
    "exported": {
      "use": ["imported_image", "inserted_artwork", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Downmix multiple audio streams into one

{
  "steps": {
    "squashed_audio_channels": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "ffmpeg": {"ac":1},
      "ffmpeg_stack": "v3.3.3",
      "preset": "mp3"
    },
    "exported": {
      "use": ["squashed_audio_channels", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Extract a 10 second clip from audio

{
  "steps": {
    "shortened": {
      "use": [":original"],
      "robot": "/audio/encode",
      "result": true,
      "ffmpeg": {"ss":"00:00:5.0", "t":10},
      "ffmpeg_stack": "v3.3.3",
      "preset": "mp3"
    },
    "exported": {
      "use": ["shortened", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Automatically detect faces in images

{
  "steps": {
    "faces_detected": {
      "use": [":original"],
      "robot": "/image/facedetect",
      "crop": true,
      "crop_padding": "10%",
      "format": "preserve"
    },
    "exported": {
      "use": ["faces_detected", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert all pages of a document into an animated GIF

{
  "steps": {
    "thumbnailed": {
      "use": [":original"],
      "robot": "/document/thumbs",
      "result": true,
      "background": "#000000",
      "format": "gif",
      "height": 250,
      "resize_strategy": "fit",
      "width": 100
    },
    "exported": {
      "use": ["thumbnailed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert all pages of a document into separate images

{
  "steps": {
    "thumbnailed": {
      "use": [":original"],
      "robot": "/document/thumbs",
      "result": true,
      "height": 500,
      "resize_strategy": "fit",
      "width": 200
    },
    "exported": {
      "use": ["thumbnailed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert the first page of a document into an image

{
  "steps": {
    "thumbnailed": {
      "use": [":original"],
      "robot": "/document/thumbs",
      "result": true,
      "height": 500,
      "page": 1,
      "resize_strategy": "fit",
      "width": 200
    },
    "exported": {
      "use": ["thumbnailed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Take a screenshot of a website (by uploading an HTML file)

{
  "steps": {
    "screenshot": {
      "use": [":original"],
      "robot": "/html/convert",
      "result": true
    },
    "resized": {
      "use": ["screenshot"],
      "robot": "/image/resize",
      "result": true,
      "height": 1024,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 1024,
      "zoom": false
    },
    "exported": {
      "use": ["screenshot", "resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Generate a screenshot of a website (by using a URL)

{
  "steps": {
    "screenshot": {
      "robot": "/html/convert",
      "result": true,
      "format": "jpeg",
      "url": "https://transloadit.com",
      "width": 1024
    },
    "resized": {
      "use": ["screenshot"],
      "robot": "/image/resize",
      "result": true,
      "height": 768,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "crop",
      "width": 1024,
      "zoom": false
    },
    "exported": {
      "use": ["screenshot", "resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Create a gzipped tar archive containing multiple result files

{
  "steps": {
    "resized": {
      "use": [":original"],
      "robot": "/image/resize",
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "width": 100,
      "zoom": false
    },
    "archived": {
      "use": {"steps":[":original", "resized"],"bundle_steps":true},
      "robot": "/file/compress",
      "result": true,
      "format": "tar",
      "gzip": true
    },
    "exported": {
      "use": ["resized", "archived", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Create a Zip file for each uploaded file

{
  "steps": {
    "archived": {
      "use": [":original"],
      "robot": "/file/compress",
      "result": true,
      "format": "zip"
    },
    "exported": {
      "use": ["archived", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Create a single Zip file containing all uploaded files

{
  "steps": {
    "archived": {
      "use": {"steps":[":original"],"bundle_steps":true},
      "robot": "/file/compress",
      "result": true,
      "format": "zip"
    },
    "exported": {
      "use": ["archived", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Extract all images from an archive and resize them

{
  "steps": {
    "extracted": {
      "use": [":original"],
      "robot": "/file/decompress"
    },
    "resized": {
      "use": ["extracted"],
      "robot": "/image/resize",
      "result": true,
      "height": 200,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "pad",
      "width": 200,
      "zoom": false
    },
    "exported": {
      "use": ["extracted", "resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Automatically extract all files from an archive

{
  "steps": {
    "extracted": {
      "use": [":original"],
      "robot": "/file/decompress",
      "result": true
    },
    "exported": {
      "use": ["extracted", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Copy many files from FTP into an Amazon S3 bucket

{
  "steps": {
    "imported": {
      "user": "YOUR_FTP_USER",
      "robot": "/ftp/import",
      "result": true,
      "host": "example.org",
      "password": "YOUR_FTP_PASSWORD",
      "path": "my_folder/snowflake.jpg"
    },
    "exported": {
      "use": [":original"],
      "robot": "/s3/store",
      "result": true,
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode a video, extract 8 thumbnails and store everything in an S3 bucket

{
  "steps": {
    "ipad_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high"
    },
    "thumbnailed": {
      "use": ["ipad_encoded"],
      "robot": "/video/thumbs",
      "result": true,
      "ffmpeg_stack": "v2.2.3"
    },
    "exported": {
      "use": [":original", "ipad_encoded", "thumbnailed"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Store uploaded files in an Amazon S3 bucket

{
  "steps": {
    "exported": {
      "use": [":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Transparently extract uploaded archives

{
  "steps": {
    "archives_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.mime}", "regex", "application/(rar|x-7z-compressed|x-cab|x-cpio|x-debian-package|x-gtar-compressed|x-gzip|x-lzh|x-redhat-package-manager|x-tar|zip)"]],
      "error_on_decline": false
    },
    "nonarchives_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "declines": [["${file.mime}", "regex", "application/(rar|x-7z-compressed|x-cab|x-cpio|x-debian-package|x-gtar-compressed|x-gzip|x-lzh|x-redhat-package-manager|x-tar|zip)"]],
      "error_on_decline": false
    },
    "extracted": {
      "use": ["archives_filtered"],
      "robot": "/file/decompress",
      "result": true
    },
    "ipad_encoded": {
      "use": ["nonarchives_filtered", "extracted"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high"
    },
    "web_encoded": {
      "use": ["nonarchives_filtered", "extracted"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "webm"
    },
    "exported": {
      "use": ["nonarchives_filtered", "archives_filtered", "extracted", "ipad_encoded", "web_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Filter out videos that are larger than 20MB or longer than 5 minutes

{
  "steps": {
    "files_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "declines": [["${file.size}", ">", "20971520"],["${file.meta.duration}", ">=", "300"]],
      "error_on_decline": true
    },
    "exported": {
      "use": ["files_filtered", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Filter out all audio files with a bit rate lower than 64K

{
  "steps": {
    "files_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "declines": [["${file.meta.audio_bitrate}", "<", "64000"]]
    },
    "exported": {
      "use": ["files_filtered", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Filter out files that are smaller than 1KB

{
  "steps": {
    "files_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.size}", ">=", "1024"]]
    },
    "exported": {
      "use": ["files_filtered", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Filter out anything other than image files

{
  "steps": {
    "files_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.mime}", "regex", "image"]],
      "error_on_decline": true
    },
    "exported": {
      "use": ["files_filtered", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Filter out anything other than video or image files

{
  "steps": {
    "files_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.mime}", "regex", "image"],["${file.mime}", "regex", "video"]],
      "error_on_decline": true
    },
    "exported": {
      "use": ["files_filtered", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Only resize larger images when resizing files

{
  "steps": {
    "large_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.meta.width}", ">", "2048"],["${file.meta.height}", ">", "2048"]],
      "condition_type": "or"
    },
    "smaller_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.meta.width}", "<=", "2048"],["${file.meta.height}", "<=", "2048"]],
      "condition_type": "or"
    },
    "large_resized": {
      "use": ["large_filtered"],
      "robot": "/image/resize",
      "result": true,
      "height": 2048,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 2048
    },
    "smaller_resized": {
      "use": ["smaller_filtered"],
      "robot": "/image/resize",
      "result": true,
      "height": "${file.meta.height}",
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": "${file.meta.width}"
    },
    "optimized": {
      "use": ["smaller_resized", "large_resized"],
      "robot": "/image/optimize",
      "result": true
    },
    "exported": {
      "use": [":original", "large_filtered", "large_resized", "optimized", "smaller_filtered", "smaller_resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Reject videos that do not have an audio track

{
  "steps": {
    "nomute_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "declines": [["${file.meta.audio_bitrate}", "=", ""]],
      "error_on_decline": true
    },
    "iphone_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "iphone"
    },
    "exported": {
      "use": ["iphone_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Automatically reject virus-infected files with an error

{
  "steps": {
    "virus_scanned": {
      "use": [":original"],
      "robot": "/file/virusscan",
      "result": true,
      "error_on_decline": true
    },
    "exported": {
      "use": [":original", "virus_scanned"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Import files from an FTP server

{
  "steps": {
    "imported": {
      "user": "YOUR_FTP_USER",
      "robot": "/ftp/import",
      "result": true,
      "host": "example.org",
      "password": "YOUR_FTP_PASSWORD",
      "path": "my_folder/snowflake.jpg"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["imported", "resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Import files over HTTP

{
  "steps": {
    "imported": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/chameleon.jpg"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["imported", "resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Import a specific file from S3

{
  "steps": {
    "imported": {
      "robot": "/s3/import",
      "result": true,
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "my_folder/snowflake.jpg",
      "secret": "YOUR_AWS_SECRET"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["imported", "resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Import an entire folder of files from S3

{
  "steps": {
    "imported": {
      "robot": "/s3/import",
      "result": true,
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "my_folder/",
      "secret": "YOUR_AWS_SECRET"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["imported", "resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Import an entire folder of files from an SFTP Server

{
  "steps": {
    "imported": {
      "user": "YOUR_SFTP_USER",
      "robot": "/sftp/import",
      "result": true,
      "host": "example.org",
      "path": "my_folder/"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["imported", "resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Resize all images in an S3 bucket

{
  "steps": {
    "imported": {
      "robot": "/s3/import",
      "result": true,
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "my_folder/",
      "secret": "YOUR_AWS_SECRET"
    },
    "resized": {
      "use": ["imported"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v2.0.3",
      "width": 130,
      "zoom": false
    },
    "exported": {
      "use": ["resized"],
      "robot": "/s3/store",
      "result": true,
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "${file.original_path}${file.basename}-resized@130-${file.ext}",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Specify multiple encoding Steps for a single file

{
  "steps": {
    "ipad_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high"
    },
    "iphone_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "iphone"
    },
    "thumbnailed": {
      "use": [":original"],
      "robot": "/video/thumbs",
      "result": true,
      "ffmpeg_stack": "v2.2.3"
    },
    "thumbs_resized": {
      "use": ["thumbnailed"],
      "robot": "/image/resize",
      "result": true,
      "height": 130,
      "imagemagick_stack": "v1.0.0",
      "width": 130
    },
    "exported": {
      "use": [":original", "ipad_encoded", "iphone_encoded", "thumbs_resized"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Automatically process multiple file types

{
  "steps": {
    "image_thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "format": "png",
      "height": 240,
      "imagemagick_stack": "v1.0.0",
      "width": 320
    },
    "video_thumbed": {
      "use": [":original"],
      "robot": "/video/thumbs",
      "result": true,
      "background": "#000000",
      "count": 4,
      "ffmpeg_stack": "v2.2.3",
      "height": 240,
      "resize_strategy": "pad",
      "width": 320
    },
    "ipad_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high"
    },
    "exported": {
      "use": ["image_thumbed", "video_thumbed", "ipad_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Add a sepia effect to an image

{
  "steps": {
    "resized": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 500,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 500,
      "zoom": false
    },
    "sepiad90": {
      "use": ["resized"],
      "robot": "/image/resize",
      "result": true,
      "imagemagick_stack": "v1.0.0",
      "sepia": 90
    },
    "exported": {
      "use": ["resized", "sepiad90", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Avoid zooming small images when resizing

{
  "steps": {
    "thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "background": "#000000",
      "height": 300,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "pad",
      "width": 300,
      "zoom": false
    },
    "exported": {
      "use": ["thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Change the quality of a JPEG

{
  "steps": {
    "resized": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 500,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 500,
      "zoom": false
    },
    "qualitied40": {
      "use": ["resized"],
      "robot": "/image/resize",
      "result": true,
      "imagemagick_stack": "v1.0.0",
      "quality": 40
    },
    "qualitied92": {
      "use": ["resized"],
      "robot": "/image/resize",
      "result": true,
      "imagemagick_stack": "v1.0.0",
      "quality": 90
    },
    "exported": {
      "use": ["resized", "qualitied40", "qualitied92", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert an image from JPG to PNG

{
  "steps": {
    "thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "format": "png",
      "imagemagick_stack": "v1.0.0"
    },
    "exported": {
      "use": ["thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert an image to WEBP

{
  "steps": {
    "webp_converted": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "format": "webp",
      "imagemagick_stack": "v2.0.3"
    },
    "exported": {
      "use": ["webp_converted", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Crop an image based on cropping coordinates

{
  "steps": {
    "crop_thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "crop": {"x1":30,"y1":30,"x2":120,"y2":90},
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "crop"
    },
    "exported": {
      "use": ["crop_thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Crop a picture to 100x100 pixels

{
  "steps": {
    "crop_thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "crop",
      "width": 100
    },
    "exported": {
      "use": ["crop_thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Apply a watermark to images

{
  "steps": {
    "watermarked": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "format": "jpg",
      "imagemagick_stack": "v1.0.0",
      "watermark_position": "bottom-right",
      "watermark_position_x": 10,
      "watermark_position_y": 10,
      "watermark_size": "25%",
      "watermark_url": "http://demos.transloadit.com/inputs/tllogo-white-alpha-1612p.png"
    },
    "exported": {
      "use": ["watermarked", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Properly preserve transparency across image types

{
  "steps": {
    "nontransparent_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "accepts": [["${file.mime}", "=", "image/jpeg"],["${file.mime}", "=", "image/jpg"]],
      "error_on_decline": false
    },
    "maybetransparent_filtered": {
      "use": [":original"],
      "robot": "/file/filter",
      "result": true,
      "declines": [["${file.mime}", "=", "image/jpeg"],["${file.mime}", "=", "image/jpg"]],
      "error_on_decline": false
    },
    "nontransparent_resized": {
      "use": ["nontransparent_filtered"],
      "robot": "/image/resize",
      "result": true,
      "height": 300,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 400
    },
    "maybetransparent_resized": {
      "use": ["maybetransparent_filtered"],
      "robot": "/image/resize",
      "result": true,
      "background": "none",
      "height": 300,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 400
    },
    "exported": {
      "use": ["nontransparent_filtered", "maybetransparent_filtered", "nontransparent_resized", "maybetransparent_resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Reduce image file sizes by up to 80% without quality loss

{
  "steps": {
    "optimized": {
      "use": [":original"],
      "robot": "/image/optimize",
      "result": true
    },
    "exported": {
      "use": ["optimized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Resize an image to exactly 100x100 pixels

{
  "steps": {
    "fitted": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 100
    },
    "min_fitted": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "min_fit",
      "width": 100
    },
    "stretched": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "stretch",
      "width": 100
    },
    "padded": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "background": "#1974c7",
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "pad",
      "width": 100
    },
    "cropped": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "gravity": "center",
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "crop",
      "width": 100
    },
    "fillcropped": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "gravity": "center",
      "height": 100,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fillcrop",
      "width": 100
    },
    "exported": {
      "use": ["fitted", "min_fitted", "stretched", "padded", "cropped", "fillcropped", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Resize an image to exactly 75x75 pixels

{
  "steps": {
    "fitted": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 75
    },
    "min_fitted": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "min_fit",
      "width": 75
    },
    "stretched": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "stretch",
      "width": 75
    },
    "padded": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "background": "#aa0000",
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "pad",
      "width": 75
    },
    "cropped": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "gravity": "center",
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "crop",
      "width": 75
    },
    "fillcropped": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "gravity": "center",
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fillcrop",
      "width": 75
    },
    "exported": {
      "use": ["fitted", "min_fitted", "stretched", "padded", "cropped", "fillcropped", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Rotate uploaded images

{
  "steps": {
    "thumbed": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "imagemagick_stack": "v1.0.0",
      "rotation": 90
    },
    "exported": {
      "use": ["thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Apply a text watermark to images

{
  "steps": {
    "resized": {
      "use": [":original"],
      "robot": "/image/resize",
      "result": true,
      "height": 500,
      "imagemagick_stack": "v1.0.0",
      "resize_strategy": "fit",
      "width": 500,
      "zoom": false
    },
    "watermarked": {
      "use": ["resized"],
      "robot": "/image/resize",
      "result": true,
      "imagemagick_stack": "v1.0.0",
      "text": [{"text":"© 2017 Transloadit.com", "size":12,"font":"Ubuntu", "color":"#eeeeee", "valign":"bottom", "align":"right", "x_offset":16,"y_offset":-10}]
    },
    "exported": {
      "use": ["resized", "watermarked", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Write meta data to an image

{
  "steps": {
    "attributed": {
      "use": [":original"],
      "robot": "/meta/write",
      "result": true,
      "data_to_write": {"copyright":"Copyright 2017 Transloadit"}
    },
    "exported": {
      "use": ["attributed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Add an audio track to video footage

{
  "steps": {
    "merged": {
      "use": {"steps":[{"name":":original", "as":"audio"},{"name":":original", "as":"video"}]},
      "robot": "/video/merge",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "exported": {
      "use": ["merged", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Concatenate video files

{
  "steps": {
    "preroll_imported": {
      "robot": "/http/import",
      "result": true,
      "url": "http://demos.transloadit.com/inputs/waves10.mp4"
    },
    "preroll_resized": {
      "use": ["preroll_imported"],
      "robot": "/video/encode",
      "result": true,
      "background": "#000000",
      "ffmpeg_stack": "v3.3.3",
      "height": 270,
      "preset": "ipad-high",
      "resize_strategy": "pad",
      "width": 480
    },
    "original_resized": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "background": "#000000",
      "ffmpeg_stack": "v3.3.3",
      "height": 270,
      "preset": "ipad-high",
      "resize_strategy": "pad",
      "width": 480
    },
    "concatenated": {
      "use": {"steps":[{"name":"original_resized", "as":"video_1"},{"name":"preroll_resized", "as":"video_2"}]},
      "robot": "/video/concat",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "exported": {
      "use": ["preroll_imported", "preroll_resized", "original_resized", "concatenated", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Convert any video to animated GIF

{
  "steps": {
    "thumbnailed": {
      "use": [":original"],
      "robot": "/video/thumbs",
      "result": true,
      "count": 50,
      "ffmpeg_stack": "v3.3.3"
    },
    "animated": {
      "use": {"steps":[{"name":"thumbnailed", "as":"image"}]},
      "robot": "/video/merge",
      "result": true,
      "duration": 7.8,
      "ffmpeg": {"f":"gif", "pix_fmt":"rgb24"},
      "ffmpeg_stack": "v3.3.3",
      "framerate": "10",
      "resize_strategy": "pad"
    },
    "exported": {
      "use": [":original", "thumbnailed", "animated"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video for Android, preserving the original quality

{
  "steps": {
    "android_samequality_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"b:v":"${file.meta.video_bitrate}", "maxrate":"${file.meta.video_bitrate}", "bufsize":"${file.meta.video_bitrate}", "r":"${file.meta.framerate}", "ar":"${file.meta.audio_samplerate}", "b:a":"${file.meta.audio_bitrate}"},
      "ffmpeg_stack": "v3.3.3",
      "height": "${file.meta.height}",
      "preset": "android",
      "width": "${file.meta.width}"
    },
    "exported": {
      "use": [":original", "android_samequality_encoded"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video for Android

{
  "steps": {
    "android_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "android"
    },
    "exported": {
      "use": ["android_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video for browsers in 720p

{
  "steps": {
    "browser720_webm_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "height": 720,
      "preset": "webm",
      "width": 1280
    },
    "browser720_h264_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "height": 720,
      "preset": "ipad-high",
      "width": 1280
    },
    "thumbed": {
      "use": ["browser720_h264_encoded"],
      "robot": "/video/thumbs",
      "result": true,
      "count": 1,
      "ffmpeg_stack": "v3.3.3",
      "format": "jpg",
      "height": 720,
      "resize_strategy": "fit",
      "width": 1280
    },
    "exported": {
      "use": ["browser720_webm_encoded", "browser720_h264_encoded", "thumbed", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video for iPad HD

{
  "steps": {
    "ipadhd_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"b":"3200k", "maxrate":"3200k", "bufsize":"3200k", "bt":"4800k"},
      "ffmpeg_stack": "v3.3.3",
      "height": 1080,
      "preset": "ipad-high",
      "width": 1920
    },
    "exported": {
      "use": ["ipadhd_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video for iPhone and strip the sound

{
  "steps": {
    "iphone_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"an":true},
      "ffmpeg_stack": "v2.2.3",
      "preset": "iphone"
    },
    "exported": {
      "use": ["iphone_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode a video into WebM

{
  "steps": {
    "webm_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "webm"
    },
    "exported": {
      "use": ["webm_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Encode video to HEVC

{
  "steps": {
    "hevc_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "hevc"
    },
    "exported": {
      "use": ["hevc_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Extract a 10 second clip from a video

{
  "steps": {
    "shortened": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"ss":"00:00:26.0", "t":10},
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "exported": {
      "use": ["shortened", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Extract 10 thumbnails and modify their size

{
  "steps": {
    "ipad_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v2.2.3",
      "height": 480,
      "preset": "ipad-high",
      "width": 640
    },
    "thumbnailed": {
      "use": ["ipad_encoded"],
      "robot": "/video/thumbs",
      "count": 10,
      "ffmpeg_stack": "v2.2.3"
    },
    "large_resized": {
      "use": ["thumbnailed"],
      "robot": "/image/resize",
      "result": true,
      "height": 120,
      "imagemagick_stack": "v1.0.0",
      "width": 120
    },
    "medium_resized": {
      "use": ["thumbnailed"],
      "robot": "/image/resize",
      "result": true,
      "height": 75,
      "imagemagick_stack": "v1.0.0",
      "width": 75
    },
    "small_resized": {
      "use": ["thumbnailed"],
      "robot": "/image/resize",
      "result": true,
      "height": 30,
      "imagemagick_stack": "v1.0.0",
      "width": 30
    },
    "exported": {
      "use": ["ipad_encoded", "thumbnailed", "small_resized", "medium_resized", "large_resized", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Generate a video from an image sequence

{
  "steps": {
    "imported_chameleon": {
      "robot": "/http/import",
      "result": true,
      "url": "http://demos.transloadit.com/inputs/chameleon.jpg"
    },
    "resized_chameleon": {
      "use": ["imported_chameleon"],
      "robot": "/image/resize",
      "result": true,
      "height": 768,
      "imagemagick_stack": "v2.0.3",
      "resize_strategy": "fit",
      "width": 1024,
      "zoom": false
    },
    "imported_prinsengracht": {
      "robot": "/http/import",
      "result": true,
      "url": "http://demos.transloadit.com/inputs/prinsengracht.jpg"
    },
    "resized_prinsengracht": {
      "use": ["imported_prinsengracht"],
      "robot": "/image/resize",
      "result": true,
      "height": 768,
      "imagemagick_stack": "v2.0.3",
      "resize_strategy": "fit",
      "width": 1024,
      "zoom": false
    },
    "imported_snowflake": {
      "robot": "/http/import",
      "result": true,
      "url": "http://demos.transloadit.com/inputs/snowflake.jpg"
    },
    "resized_snowflake": {
      "use": ["imported_snowflake"],
      "robot": "/image/resize",
      "result": true,
      "height": 768,
      "imagemagick_stack": "v2.0.3",
      "resize_strategy": "fit",
      "width": 1024,
      "zoom": false
    },
    "merged": {
      "use": {"steps":[{"name":":original", "as":"audio"},{"name":"resized_chameleon", "as":"image"},{"name":"resized_prinsengracht", "as":"image"},{"name":"resized_snowflake", "as":"image"}]},
      "robot": "/video/merge",
      "result": true,
      "duration": 9,
      "ffmpeg_stack": "v2.2.3",
      "framerate": "1/3",
      "preset": "ipad-high",
      "resize_strategy": "pad"
    },
    "exported": {
      "use": ["imported_chameleon", "imported_prinsengracht", "imported_snowflake", "resized_chameleon", "resized_prinsengracht", "resized_snowflake", "merged", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Implement HTTP Live Streaming (HLS)

{
  "steps": {
    "low": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "hls_270p"
    },
    "mid": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "hls_360p"
    },
    "high": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "hls_540p"
    },
    "adaptive": {
      "use": {"steps":["low", "mid", "high"],"bundle_steps":true},
      "robot": "/video/adaptive",
      "ffmpeg_stack": "v3.3.3",
      "playlist_name": "my_playlist.m3u8",
      "technique": "hls"
    },
    "exported": {
      "use": ["adaptive", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "hlstest/${file.meta.relative_path}/${file.name}",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Implement MPEG-Dash using Transloadit

{
  "steps": {
    "270p_video": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "dash_270p_video"
    },
    "360p_video": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "dash_360p_video"
    },
    "32k_audio": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "dash_32k_audio"
    },
    "64k_audio": {
      "use": [":original"],
      "robot": "/video/encode",
      "ffmpeg_stack": "v3.3.3",
      "preset": "dash_64k_audio"
    },
    "adaptive": {
      "use": {"steps":["270p_video", "360p_video", "32k_audio", "64k_audio"],"bundle_steps":true},
      "robot": "/video/adaptive",
      "ffmpeg_stack": "v3.3.3",
      "playlist_name": "my_playlist.mpd",
      "technique": "dash"
    },
    "exported": {
      "use": [":original", "adaptive"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "path": "dashtest/${file.meta.relative_path}/${file.name}",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Surround a video with a frame using a watermark

{
  "steps": {
    "video_resized": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "height": 600,
      "preset": "ipad-high",
      "width": 800
    },
    "invert_watermarked": {
      "use": ["video_resized"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "height": 600,
      "preset": "ipad-high",
      "watermark_position": "top-left",
      "watermark_size": "100%",
      "watermark_url": "http://demos.transloadit.com/inputs/waterframe.png",
      "width": 800
    },
    "exported": {
      "use": ["video_resized", "invert_watermarked", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Join multiple videos sharing one audio track

{
  "steps": {
    "resized": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "joined": {
      "use": {"steps":[{"name":"resized", "fields":"myfile_0", "as":"video_1"},{"name":"resized", "fields":"myfile_1", "as":"video_2"},{"name":"resized", "fields":"myfile_2", "as":"video_3"}],"bundle_steps":true},
      "robot": "/video/concat",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "merged": {
      "use": {"steps":[{"name":":original", "as":"audio"},{"name":"joined", "as":"video"}]},
      "robot": "/video/merge",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "shortened10": {
      "use": ["merged"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"ss":"00:00:0.0", "t":13},
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "shortened10_watermarked": {
      "use": ["shortened10"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high",
      "watermark_position": "bottom-right",
      "watermark_size": "25%",
      "watermark_url": "http://demos.transloadit.com/inputs/tllogo-white-alpha-1612p.png"
    },
    "shortened25": {
      "use": ["merged"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"ss":"00:00:0.0", "t":27},
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "shortened25_watermarked": {
      "use": ["shortened25"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high",
      "watermark_position": "bottom-right",
      "watermark_size": "25%",
      "watermark_url": "http://demos.transloadit.com/inputs/tllogo-white-alpha-1612p.png"
    },
    "shortened50": {
      "use": ["merged"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg": {"ss":"00:00:0.0", "t":49},
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high"
    },
    "shortened50_watermarked": {
      "use": ["shortened50"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high",
      "watermark_position": "bottom-right",
      "watermark_size": "25%",
      "watermark_url": "http://demos.transloadit.com/inputs/tllogo-white-alpha-1612p.png"
    },
    "exported": {
      "use": ["resized", "joined", "merged", "shortened10", "shortened25", "shortened50", "shortened10_watermarked", "shortened25_watermarked", "shortened50_watermarked", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Merge an audio and a video file

{
  "steps": {
    "imported_video": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/big-buck-bunny-10s.mp4"
    },
    "replaced_audio_track": {
      "use": [{"name":":original", "as":"audio"},{"name":"imported_video", "as":"video"}],
      "robot": "/video/merge",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "iphone-high"
    },
    "exported": {
      "use": ["imported_video", "replaced_audio_track", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Merge an audio file and an image to generate a video

{
  "steps": {
    "imported_image": {
      "robot": "/http/import",
      "url": "http://demos.transloadit.com/inputs/chameleon.jpg"
    },
    "resized_image": {
      "use": ["imported_image"],
      "robot": "/image/resize",
      "result": true,
      "height": 768,
      "imagemagick_stack": "v2.0.3",
      "resize_strategy": "fit",
      "width": 1024,
      "zoom": false
    },
    "merged": {
      "use": {"steps":[{"name":":original", "as":"audio"},{"name":"resized_image", "as":"image"}]},
      "robot": "/video/merge",
      "result": true,
      "ffmpeg_stack": "v3.3.3",
      "preset": "ipad-high",
      "resize_strategy": "pad"
    },
    "exported": {
      "use": ["imported_image", "resized_image", "merged", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Optimize videos for iPad

{
  "steps": {
    "ipad_encoded": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high"
    },
    "exported": {
      "use": ["ipad_encoded", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Apply a watermark to videos

{
  "steps": {
    "watermarked": {
      "use": [":original"],
      "robot": "/video/encode",
      "result": true,
      "ffmpeg_stack": "v2.2.3",
      "preset": "ipad-high",
      "watermark_position": "bottom-right",
      "watermark_size": "25%",
      "watermark_url": "http://demos.transloadit.com/inputs/tllogo-white-alpha-1612p.png"
    },
    "exported": {
      "use": ["watermarked", ":original"],
      "robot": "/s3/store",
      "bucket": "demos.transloadit.com",
      "bucket_region": "us-east-1",
      "key": "YOUR_AWS_KEY",
      "secret": "YOUR_AWS_SECRET"
    }
  }
}

Our /s3/store robot blog posts

Over the years we wrote the following posts about Our /s3/store robot on our blog:

Did you know?

You can easily combine Robots to create powerful workflows, unique to your business.
This is the power of Transloadit.