Raw access logs
The Raw Logs page lets you inspect individual CDN requests instead of aggregates. Use it to trace a specific error, confirm a cache decision for one URL, or audit traffic from an IP. It is backed by GET /api/monitoring/logs, which requires a JWT Bearer token and is scoped to your account's hostnames.
When you want the data outside the panel, see Export logs to CSV.
Columns
Each row is one request. The endpoint returns the following fields (LogEntry):
| Column | Field | Notes |
|---|---|---|
| Timestamp | timestamp | UTC, serialized with a Z suffix |
| Host | requestHost | The request Host |
| Method | requestMethod | HTTP method |
| URI | requestUri | Request path |
| Status | responseStatus | HTTP status code |
| Size | responseSize | Response size in bytes |
| Duration | duration | In seconds |
| IP | clientIp | Client IP address |
| Cache | cacheStatus | HIT / MISS / BYPASS / EXPIRED |
| Device | deviceType | Device class |
| Country | countryCode | ISO country code |
| User agent | userAgent | Full UA string |
In the panel, the table shows Timestamp, Domain, Path, Method, Status, Duration, Client IP, and User Agent. Clicking a row expands it to reveal Response Size, Device Type, Country, and the full User-Agent string.
:::note Duration is in seconds here
The raw-log duration field is in seconds. When you export to CSV, the equivalent Duration_ms column is in milliseconds instead — convert accordingly.
:::
Filters
The default range on this page is the last 30 days. Narrow results with these filters, which map directly to query parameters on /api/monitoring/logs:
| Filter | Param | Behavior |
|---|---|---|
| Search | search | Free-text match on request URI, client IP, or host |
| Property | propertyId | Restrict to a single property |
| From / To | from, to | UTC date range |
| Status Code | statusCode | Category or exact code (see below) |
| Method | method | HTTP method; upper-cased server-side |
curl -H "Authorization: Bearer $TOKEN" \
"https://api.paradarum.com/api/monitoring/logs?from=2026-06-01T00:00:00Z&to=2026-06-10T23:59:59Z&propertyId=42&statusCode=400&method=GET&search=/images&page=1&pageSize=50"
The response is wrapped with pagination metadata:
{
"data": [],
"page": 1,
"pageSize": 50,
"totalRecords": 0,
"totalPages": 0
}
Status-code filter semantics
The statusCode filter is overloaded so you can match a whole class or a single code:
- A value that is a multiple of 100 in the 100–599 range filters the entire category. For example,
statusCode=400matches every response wherestatus >= 400 AND status < 500(all 4xx). - Any other value is an exact match. For example,
statusCode=404matches only 404, andstatusCode=503matches only 503.
| Value | Matches |
|---|---|
400 | All 4xx |
500 | All 5xx |
404 | Only 404 |
503 | Only 503 |
429 | Only 429 |
The panel's Status Code dropdown offers categories (1xx–5xx) plus common specific codes such as 301, 302, 304, 401, 403, 404, 429, 502, 503, and 504.
:::tip Method is case-insensitive on input
The method filter is upper-cased on the server, so get and GET behave identically.
:::
Pagination
Results are paged with page (default 1) and pageSize (default 50). The panel offers page sizes of 25 / 50 / 100 / 250.
:::info Need more than a page at a time? Pagination is for browsing in the UI and via the API. To pull a large filtered set in one shot — up to the most recent 100,000 rows — use the CSV export, which ignores pagination entirely. See Export logs to CSV. :::
Related pages
- Export logs to CSV — download the current filter set.
- Statistics dashboard — aggregate charts and cards.
- Date ranges & live mode — range presets and realtime view.