Sorry, I completely misunderstood the issue. If you want to retrieve a zip file via an API call and write it out (as noted by Peter Prochazka), you'll need to retrieve the file as an octet-stream. I was able to create a User-defined Java Class step to do this when I wanted to download the prpti files from the Pentaho repository (these files define "Interactive" type reports; they're actually just zip files). I wasn't writing them out, but just processing them inside the transformation, but the idea is pretty much the same.
What you have to do is basically:
Authenticate with the HTTP service (if needed)
Create the HTTPConnection
Request a file via the API call (be sure to request the response as octet stream)
read a chunk of data into an array of bytes (use whatever size makes sense--say 100K)
when nothing is read drop out of loop
write bytes to the output file
End of loop
With a User-defined Java Class step like this written, you can deal with any number of files: create the API call in the PDI data stream and pass that into your download step. You could also call an external piece of Java code to do most of the work (just put it in a JAR file in design-tools/data-integration/lib [if running as a separate process, such as by means of pan.bat/.sh] or, if you're running your transformation right in Tomcat/Pentaho, in server/pentaho-server/tomat/lib). I'm guessing there must be Java code available on a website somewhere that would connect to a URL and download a file.
This may be more complex than you want to tackle and I might be able to get permission to post part of my solution, but as it was work done for my company, they'd have to approve my doing that. If you're interested, let me know.