Skip to main content

Download Objects

Download files from WAYSCloud Storage using GET requests. This guide covers direct downloads, streaming, range requests, and download URLs.

Endpoint

GET /v1/storage/{bucket}/{key}

Basic Download

cURL

curl -X GET "https://api.wayscloud.services/v1/storage/my-bucket/document.pdf" \
-H "Authorization: Bearer wayscloud_storage_abc123_YourSecretKey" \
-o document.pdf

Python

import requests
import os

API_KEY = os.getenv('WAYSCLOUD_API_KEY')

response = requests.get(
'https://api.wayscloud.services/v1/storage/my-bucket/document.pdf',
headers={'Authorization': f'Bearer {API_KEY}'}
)

# Save to file
with open('document.pdf', 'wb') as f:
f.write(response.content)

JavaScript

const axios = require('axios');
const fs = require('fs');

const response = await axios.get(
'https://api.wayscloud.services/v1/storage/my-bucket/document.pdf',
{
headers: { 'Authorization': `Bearer ${process.env.WAYSCLOUD_API_KEY}` },
responseType: 'arraybuffer'
}
);

fs.writeFileSync('document.pdf', response.data);

Streaming Download

import requests
import os

API_KEY = os.getenv('WAYSCLOUD_API_KEY')

# Stream large file
response = requests.get(
'https://api.wayscloud.services/v1/storage/my-bucket/large-video.mp4',
headers={'Authorization': f'Bearer {API_KEY}'},
stream=True
)

with open('large-video.mp4', 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)

Range Requests

Download specific byte ranges:

# Download first 1MB
curl -X GET "https://api.wayscloud.services/v1/storage/my-bucket/large-file.zip" \
-H "Authorization: Bearer $WAYSCLOUD_API_KEY" \
-H "Range: bytes=0-1048575" \
-o first-megabyte.zip

Response Headers

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 1048576
ETag: "a1b2c3d4e5f6789"
Last-Modified: Mon, 04 Nov 2025 10:30:00 GMT
x-amz-meta-author: John Doe

Error Responses

404 Not Found

{"error": "Object not found", "code": "NO_SUCH_KEY"}

403 Forbidden

{"error": "API key does not have read permission"}

Next Steps