Website Builder API
GET /services/websites/v1/generator/download/{websiteId}/{versionId} Public

Download a specific website version with signature validation

URL format: /download/{websiteId}/{versionId}?signature={hmac}&expires={timestamp} PAUSE/RESUME SUPPORT: - Browser: Automatic pause/resume support via Range headers - Envoy wget: Use `wget -c URL` for continue/resume - Envoy curl: Use `curl -C - -o file.zip URL` for continue/resume HEADERS: - Accept-Ranges: bytes (enables pause/resume) - Content-Type: application/zip - Cache-Control: public, max-age=3600 (1 hour cache)

Parameters

NameTypeInRequiredDescription
websiteId string path Required Website ID (route param — comes in as string, cast to int below)
versionId string path Required Version ID to download
signature string query Required HMAC signature to authenticate the download request.
Example: a1b2c3d4e5f6...
expires integer query Required Unix timestamp after which the signed URL expires.
Example: 1717200000

Responses

200
422
429
Successful response
Headers
HeaderTypeDescriptionExample
X-RateLimit-Limit integer Maximum number of requests allowed per minute 60
X-RateLimit-Remaining integer Number of requests remaining in the current window 57
Validation error
FieldTypeDescription
message string Errors overview.
errors object A detailed description of each field that failed validation.
Too Many Requests — rate limit exceeded
Headers
HeaderTypeDescriptionExample
X-RateLimit-Limit integer Maximum number of requests allowed per minute 60
X-RateLimit-Remaining integer Number of requests remaining in the current window 57
Retry-After integer Seconds until the rate limit resets 60
FieldTypeDescription
error boolean
message string
Base URL
https://api.wemasy.nl/api
Authentication

Request Sample
cURL
JS
PHP
Python
curl -X GET "https://api.wemasy.nl/api/services/websites/v1/generator/download/{websiteId}/{versionId}" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
fetch('https://api.wemasy.nl/api/services/websites/v1/generator/download/{websiteId}/{versionId}', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Accept': 'application/json'  }})
.then(r => r.json())
.then(data => console.log(data));
$response = Http::withToken('YOUR_API_TOKEN')
    ->accept('application/json')
    ->get('https://api.wemasy.nl/api/services/websites/v1/generator/download/{websiteId}/{versionId}');
$data = $response->json();
import requests

headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Accept": "application/json"
}
r = requests.get("https://api.wemasy.nl/api/services/websites/v1/generator/download/{websiteId}/{versionId}", headers=headers)
print(r.json())

Try It
websiteId Required
versionId Required
signature Required
expires Required

Export