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!

Sign Up See a Demo

Screenshot

{ 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.

  • Lots of Space

    Our plans range from 1,000 to 250,000 Zip files. Need unlimited downloads? We got that. Check out our plans.

{ Try It }

The demo below lets a user instantly download a custom Zip file containing just the images they want. Try it out, then check out the code behind it.

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;