Create Zip Files Instantly

Use our API to create zip files from existing online files and let your users download them immediately. No more tying up your servers generating zip files or making your users download multiple files one at a time.

Save yourself and your users the headaches. Zip, Please!

{ Highlights }

Ready Instantly

Your Zip file is ready for delivery as soon as you send us the file list via our API, no matter how big it is or how many files it includes. Try it.

Simple Integration

Our API, based on REST and JSON, is as simple as they come. Plus, we have great documentation.

Affordable Pricing

ZipPlease is far cheaper than scaling up your infrastructure. Check out our pricing.

{ Try It }

Instantly create a zip file of any number of today's Interesting Photos from Flickr using our API.

Flickr Interesting Photos
// Send the request to our backend, which will request the zip from 
// ZipPlease, and respond to the client side with the download URL.

$("#downloadFlickr").click( function(){
  var images = [];
  $("img.flickrImage.selected").each( function( i, image ){
    images.push( $(image).attr("src").replace("_s.jpg","_c.jpg"));
  });
  $.ajax({
    type : "POST",
    url: "./demos/flickr",
    data : { images : images },
    dataType : "json",
    success : function( response ){
      // The response includes a ZipPlease URL, where
      // the file can be downloaded.
      location.href = response.url;
    }
  });
});
var request = require("request"),
    uuid = require("node-uuid");

var zipPleaseAPIEndpoint = "http://www.zipplease.com/api/zips";

// Incoming request from the front end
app.post("/demo/flickr", function( req, res ){
  var images = req.body.images;

  var uniqueZipName = "zipPleaseFlickrDemo_" + uuid.v4() + ".zip";

  // Create the JSON payloy to send to ZipPlease
  var zipRequest = {
    accountKey : "6B5qClA0SG2er7x7PmZTK4QU", // Not real.
    accountSecret : "jHxRb2y3CevJyROL96hYKcE0oAI", // Get your own.
    zipName : uniqueZipName,
    files : images,
    compress : false // already jpegs
  };

  var options = {
    uri: zipPleaseAPIEndpoint,
    method: 'POST',
    json : zipRequest
  };
  
  // Send the request to ZipPlease.
  request(options, function( err, response, body ){
    // The response includes a URL where the Zip can be downloaded.
    // We'll send that URL back to the front end.
    res.writeHead(200, {"Content-Type": "application/json"});
    res.end( JSON.stringify( { url : body.url } ) );
  });
});
require 'sinatra'
require 'net/http'
require 'uri'
require 'uuid'
require 'json'

# Incoming request from the front end
post '/demo/flickr' do
  images = JSON.parse(request.body.string)["images"]

  unique_zip_name = "zipPleaseFlickrDemo_" + UUID.new.generate() + ".zip"; 

  endpoint = "http://www.zipplease.com/api/zips"; 

  # Create the JSON payloy to send to ZipPlease
  request = {
    :accountKey => "6B5qClA0SG2er7x7PmZTK4QU",
    :accountSecret => "jHxRb2y3CevJyROL96hYKcE0oAI",
    :zipName => unique_zip_name, 
    :files => images, 
    :compress => false
  }

  uri = Uri.parse(endpoint)
  
  # Send the request to ZipPlease
  response = Net::HTTP.post_form(uri, request.to_json)

  # The response includes a URL where the Zip can be downloaded.
  # We'll send that URL back to the front end.
  response.body
end
$zipPleaseAPIEndpoint = "http://www.zipplease.com/api/zips";
$uniqueZipName = "zipPleaseFlickrDemo_" + uniqid() + ".zip";
 
// Create the JSON payloy to send to ZipPlease
$zipRequest = json_encode(array(
    'accountKey' => "6B5qClA0SG2er7x7PmZTK4QU", // Not real.
    'accountSecret' => "jHxRb2y3CevJyROL96hYKcE0oAI", // Get your own.
    'zipName' => $uniqueZipName,
    'files' => $_POST['data'], // Incoming request from the front end
    'compress' => false // already jpegs
));

$params = array(
    'http' => array(
        'method' => 'POST',
        'content' => $zipRequest
    )
);

// Send the request to ZipPlease.
$ctx = stream_context_create($params);
$fp = @fopen($zipPleaseAPIEndpoint, 'rb', false, $ctx);

if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
}

// The response includes a URL where the Zip can be downloaded.
// We'll send that URL back to the front end.
return $response;