Skip to main content
Bunny CDN provides raw request logs for all Pull Zones. Logs appear in near real-time for high-traffic zones, with up to a 5-minute delay for quieter zones. Searchable logs are retained for 3 days. For longer retention, use Permanent Log Storage to automatically archive logs to Edge Storage.

Privacy & GDPR

IP addresses are anonymized by default. To enable full IP logging, sign the Data Processing Agreement (DPA) in your account settings, then disable anonymization in your Pull Zone logging settings.

API endpoint

Download raw log files from the logging API:
GET https://logging.bunnycdn.com/{MM}-{DD}-{YY}/{pull_zone_id}.log
Authenticate with your account API key:
AccessKey: your-api-key
Use gzip compression to reduce download size:
Accept-Encoding: gzip
Example:
curl -H "AccessKey: your-api-key" \
     -H "Accept-Encoding: gzip" \
     "https://logging.bunnycdn.com/03-13-24/60367.log"

Query parameters

ParameterDescription
startNumber of log lines to skip from the beginning
endEnd index of log lines to return
orderSort order: asc or desc (default)

Log format

Each request is stored as a pipe-separated line:
HIT|200|1507167062421|412|390|163.172.53.229|-|https://example.b-cdn.net/video.mp4|WA|Mozilla/5.0...|322b688bd63fb63f2babe9de30a5d262|DE
FieldDescription
Cache StatusHIT or MISS
Status CodeHTTP response code
TimestampUTC UNIX timestamp (milliseconds)
Bytes SentTotal bytes sent to client
Pull Zone IDID of the Pull Zone
Remote IPClient IP (anonymized by default)
RefererReferer header value
URLRequested URL
Edge LocationPOP code that served the request
User AgentClient user agent
Request IDUnique request identifier
Country CodeTwo-letter ISO country code

Extended logging

Extended logging adds three additional fields (contact support to enable):
FieldDescription
Body Bytes SentResponse body bytes (excluding headers)
Range HeaderHTTP Range header value
Authorization HeaderAuthorization header value

HTTP status codes

2XX Success

CodeDescriptionExplanation
200OKRequest successful, content served
201CreatedRequest successful, new resource created
204No ContentRequest processed, no content to return
206Partial ContentPartial GET request fulfilled (e.g., video range request)

3XX Redirection

CodeDescriptionExplanation
301Moved PermanentlyURL permanently changed, use new location
302FoundURL temporarily moved
303See OtherResponse available at different location
304Not ModifiedCached content still valid, no transfer needed

4XX Client Errors

CodeDescriptionExplanation
400Bad RequestServer could not understand the request
401UnauthorizedAuthentication required
403ForbiddenServer refuses to fulfill request (hotlink protection, token auth)
404Not FoundFile not found
405Method Not AllowedRequest method not supported
410GoneResource no longer available
429Too Many RequestsRate limit exceeded
499Client Closed RequestClient terminated connection before response completed
A 499 status code appears in logs when a client closes the connection before the server finishes responding. This commonly occurs due to mobile network interruptions, ad blockers, or users navigating away. It’s normal and doesn’t indicate a server problem.

5XX Server Errors

CodeDescriptionExplanation
500Internal Server ErrorUnexpected server error
502Bad GatewayInvalid response from upstream server
503Service UnavailableServer temporarily overloaded or under maintenance
504Gateway TimeoutUpstream server didn’t respond in time
502 and 504 errors typically indicate the CDN edge nodes cannot reach your origin. Check if your origin firewall is blocking Bunny CDN IPs.

Cache statistics

The dashboard shows two important cache metrics:
MetricDescription
Request Cache Hit RatePercentage of requests served directly from CDN edge cache
Bandwidth Hit RatePercentage of bandwidth served from CDN cache vs fetched from origin
Higher percentages indicate better CDN efficiency—more content served from edge nodes without contacting your origin.