apyhub
FILE MANIPULATION · FILE SECURITY

Generate Secure Archives API

What it does

Protected ZIP Creator lets you build password-protected ZIP archives from either uploaded files or remote file URLs. Send a list of files or a list of URLs, plus a password, and get back a ZIP file for download or a signed link to the finished archive.

Use the /file/download and /url/download endpoints when you want the ZIP immediately as binary output. Use the /file/link and /url/link endpoints when you prefer a signed URL in the response and want to fetch the archive later. In all cases, the archive contents are protected with the password you supply in the request body.

This is useful when you need to bundle documents, images, or mixed assets for secure sharing, internal handoff, or customer delivery. For example, you can collect supporting files from an upload form, package them into one encrypted archive, and return a single download instead of multiple attachments.

Protected ZIP Creator is a straightforward file-security and file-manipulation utility: it takes binary files or remote URIs, applies password protection, and returns either a binary ZIP stream or a signed archive link.

▣ ENDPOINT 01 / 04
POST
Create password-protected ZIP from remote URLs and return signed link
https://api.eu.apyverse.com/apyhub/create-protected-zip/url/link

QUICKSTART

GUIDE

Quickstart

Create a password-protected ZIP from a list of file URLs by sending the URLs and password in one JSON request.

curl -X POST "https://api.eu.apyverse.com/apyhub/create-protected-zip/url/link" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "https://assets.apyhub.com/samples/sample.pdf",
      "https://assets.apyhub.com/samples/sample.png"
    ],
    "password": "secret123"
  }'

What you'll get back

Returns a JSON object with a data string field containing the URI of the generated ZIP file.

{
  "data": "https://storage.example.com/zip/output.zip?sig=abc"
}
TRY ITLIVE · 150 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
urls*

About this endpoint

What it does

Creates a password-protected ZIP archive from one or more remote file URLs and returns a signed URI to the generated ZIP file.

Request Body

ParameterTypeMandatoryDescription
urlsString ArrayYesRemote file URLs to include in the ZIP archive. Each item must be a URI. Minimum 1 URL.
passwordStringYesPassword used to protect the generated ZIP archive. Format: password.

Response

Returns a JSON object with a data string field containing a signed URI to the generated ZIP file.

ParameterTypeMandatoryDescription
dataStringYesSigned URI of the generated ZIP file. Format: URI.

Body

Name
Type
Description
bodyREQUIRED
any
▣ ENDPOINT 02 / 04
POST
Create password-protected ZIP from uploaded files and stream download
https://api.eu.apyverse.com/apyhub/create-protected-zip/file/download

QUICKSTART

GUIDE

Quickstart

Create a password-protected ZIP from one or more files and download the resulting archive.

curl -X POST "https://api.eu.apyverse.com/apyhub/create-protected-zip/file/download" \
  -H "apy-token: $APY_TOKEN" \
  -F "files=@/path/to/file1.pdf" \
  -F "files=@/path/to/file2.png" \
  -F "password=secret123"

What you'll get back

Returns a binary file (string with format: binary) — the generated ZIP archive is returned as the response body.

(binary ZIP file)
TRY ITLIVE · 150 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
files*
One or more files to include in the archive.

About this endpoint

What it does

Creates a password-protected ZIP archive from one or more uploaded files and returns the archive as a streamed binary download.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput filename. Default: output.zip.

Request Body

ParameterTypeMandatoryDescription
filesString ArrayYesOne or more files to include in the archive. Each item must be a binary file upload.
passwordStringYesPassword used to protect the ZIP archive. Format: password.

Response

Returns a streamed binary response containing the generated ZIP file. The output schema is a binary string, so the success response is the file content itself rather than a JSON object.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT output.zip

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 03 / 04
POST
Create password-protected ZIP from uploaded files and return signed link
https://api.eu.apyverse.com/apyhub/create-protected-zip/file/link

QUICKSTART

GUIDE

Quickstart

Create a password-protected ZIP from a list of files by sending them in a multipart form request.

curl -X POST "https://api.eu.apyverse.com/apyhub/create-protected-zip/file/link" \
  -H "apy-token: $APY_TOKEN" \
  -F "files=@/path/to/file1.txt" \
  -F "files=@/path/to/file2.jpg" \
  -F "password=secret123"

What you'll get back

Returns a JSON object with a data string field containing the URI of the generated ZIP file.

{
  "data": "https://storage.example.com/zip/output.zip?sig=abc"
}
TRY ITLIVE · 150 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
files*

About this endpoint

What it does

Creates a password-protected ZIP archive from uploaded files and returns a signed link to the generated ZIP file.

Request Body

ParameterTypeMandatoryDescription
filesString ArrayYesUploaded files to include in the ZIP archive. Each item is a binary file.
passwordStringYesPassword used to protect the ZIP file. Format: password.

Response

Returns a JSON object with a data string field containing a URI to the generated ZIP file.

ParameterTypeMandatoryDescription
dataStringYesSigned link to the created ZIP file. Format: URI.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 04 / 04
POST
Create password-protected ZIP from remote URLs and stream download
https://api.eu.apyverse.com/apyhub/create-protected-zip/url/download

QUICKSTART

GUIDE

Quickstart

Download one or more files from URLs and protect the ZIP with a password.

curl -X POST "https://api.eu.apyverse.com/apyhub/create-protected-zip/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "https://assets.apyhub.com/samples/sample.pdf",
      "https://assets.apyhub.com/samples/sample.png"
    ],
    "password": "secret123"
  }'

What you'll get back

Returns a binary file (string with format: binary) — the protected ZIP archive itself.

<binary ZIP file>
TRY ITLIVE · 150 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
urls*

About this endpoint

What it does

Creates a password-protected ZIP archive from the remote files referenced by the input URLs and streams the resulting archive back as the response. The request body must provide the source urls and the ZIP password.

Request Body

ParameterTypeMandatoryDescription
urlsString ArrayYesRemote file URLs to include in the ZIP. Each item must be a URI.
passwordStringYesPassword used to protect the generated ZIP archive. Format: password.

Response

Returns a binary stream containing the generated ZIP file. The output schema is a binary string, so the response body is the downloadable archive itself.

ParameterTypeMandatoryDescription
response bodyStringYesBinary ZIP file stream.

Body

Name
Type
Description
bodyREQUIRED
any
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.