Today our team is excited to announce the launch of the official Transloadit Go SDK. If you're not familiar with Go, it's a really powerful open-source language that's growing fast. Though our API is written in Node.js, we've been happily using Go internally for scaling and system utilities, and are always looking for more ways to leverage the power of this fun language.


While it was already possible to talk to our REST API with any language, we're hoping that this release will make it super easy for developers with an interest in Go to integrate our file import & encoding services into their own projects.

The code and docs are up on GitHub and Godoc, but we'd like to give you an idea of how you could use our SDK to resize a lol_cat.jpg image to 75 pixels in width & height.

After a quick go get, here's what the integration code could look like:

import ""
import "fmt"

// Create client
options := transloadit.DefaultConfig
options.AuthKey = "TRANSLOADIT_KEY"
options.AuthSecret = "TRANSLOADIT_SECRET"
client, err := transloadit.NewClient(options)
if err != nil {

// Initialize new assembly
assembly := client.CreateAssembly()

// Add file to upload
err = assembly.AddFile("./lol_cat.jpg")
if err != nil {

// Add instructions, e.g. resize image to 75x75px
assembly.AddStep("resize", map[string]interface{}{
    "robot":           "/image/resize",
    "width":           75,
    "height":          75,
    "resize_strategy": "crop",

// Wait until Transloadit is done processing all uploads
// and is ready for you to download the results
assembly.Blocking = true

// Start the upload
info, err := assembly.Upload()
if err != nil {

fmt.Printf("You can view the result at: %s\n", info.Results["resize"][0].Url)

While this may seem like a lot of trouble to resize an image, you could use this same snippet to optimize video for tablets, convert to HLS to prepare your app's videos for submission to the App Store, generate animated gif previews of documents, and all other cool conversions that Transloadit's bots can do for you.

As a bonus, this SDK ships with a built-in feature that allows you to automatically create Assemblies from a local directory. It will upload all files to Transloadit and convert them using the Steps you supplied, and will immediately download the results.
In addition to that, this function can watch a directory for changes to automatically process them. Let's have a look at the code needed:

options := &transloadit.WatchOptions{
    // Use Encoding instructions as stored in a Template in your Transloadit Account
    TemplateId: "02a8693053cd11e49b9ba916b58830db",
    // The directory which the files will be taken from
    Input: "./input",
    // The directory where the results are downloaded into
    Output: "./output",
    // Watch the input directory for changes
    Watch: true,
    // Put the original files from the input directory
    // into the output directory (recommended as the input dir gets cleared)
    Preserve: true,

watcher := client.Watch(options)

Now you can just drop files in the ./input directory and the converted results will be saved in ./output, pretty convenient :smile:

But - not as convenient as possible, because you'll still have to write a few lines of code to profit.

That's why we've worked with the young & gifted Acconut to not only build this SDK, but also build a CLI tool based on this SDK that lets you use Transloadit on your own servers / workstations without writing a single line of code. Stay tuned for a separate blog post on that little gem!

If you have feedback, we'd love to hear from you in the project's GitHub issues, the comments section here, our in our inbox over at

PS A shout out to our emeritus Felix who did a thorough review on this project :smile: