Get Downloadable Log Files
Returns S3 object paths for CDN access log archive files matching the specified date range
and resources. An empty files array means no logs were found for the given criteria.
The client constructs full download URLs by prepending the OpenStack controller and username
from GET /account/logs:
https://{openstack.controller}/{openstack.username}/{file}
Files are gzip-compressed CDN access log archives (.gz). The Downloader tab downloads files
in parallel chunks of 25, packages each chunk as a ZIP using JSZip, and triggers a browser
download per chunk (downloaded-logs-part-N.zip).
curl -X POST "https://api.5centscdn.com/v2/account/logs/s3" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"r": "2026-01-20 00:00:00 - 2026-01-20 23:59:59",
"resources": [
"12345",
"67890"
]
}'
import requests
import json
url = "https://api.5centscdn.com/v2/account/logs/s3"
headers = {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
data = {
"r": "2026-01-20 00:00:00 - 2026-01-20 23:59:59",
"resources": [
"12345",
"67890"
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.5centscdn.com/v2/account/logs/s3", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
},
body: JSON.stringify({
"r": "2026-01-20 00:00:00 - 2026-01-20 23:59:59",
"resources": [
"12345",
"67890"
]
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"r": "2026-01-20 00:00:00 - 2026-01-20 23:59:59",
"resources": [
"12345",
"67890"
]
}`)
req, err := http.NewRequest("POST", "https://api.5centscdn.com/v2/account/logs/s3", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.5centscdn.com/v2/account/logs/s3')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = 'YOUR_API_KEY'
request.body = '{
"r": "2026-01-20 00:00:00 - 2026-01-20 23:59:59",
"resources": [
"12345",
"67890"
]
}'
response = http.request(request)
puts response.body
{
"result": "success",
"files": [
"logs/2026/01/20/resource-12345/cdn-access.log.gz",
"logs/2026/01/20/resource-67890/cdn-access.log.gz"
]
}
{
"result": "success",
"files": []
}
/account/logs/s3
Target server for requests. Edit to use your own host.
API key (sent in header)
The media type of the request body
Date range in UTC format: "YYYY-MM-DD HH:mm:ss - YYYY-MM-DD HH:mm:ss". Defines the time window for which log files are retrieved.
Resource IDs for which log files should be retrieved. Must contain at least one entry.
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Provide your API key in the header.
Body
Date range in UTC format: "YYYY-MM-DD HH:mm:ss - YYYY-MM-DD HH:mm:ss". Defines the time window for which log files are retrieved.
2026-01-20 00:00:00 - 2026-01-20 23:59:59Resource IDs for which log files should be retrieved. Must contain at least one entry.
["12345","67890"]Responses
Operation outcome.
List of S3 object paths relative to the OpenStack storage account. The client constructs
full download URLs as: https://\{openstack.controller\}/\{openstack.username\}/{file}
Files are gzip-compressed CDN access log archives (.gz). An empty array means no logs were found for the requested date range and resources.