Waterfall
GET /api/v1/waterfall
A request-by-request load waterfall for any page — every resource with its load timing and render-blocking status, plus the key page-timing milestones. See exactly what's slowing a page down.
Query parameters
| Name | Type | Description |
|---|---|---|
url required | string | The page to load. |
device optional | string | mobile (default) or desktop. |
limit optional | integer | Max requests to return. Default 100, max 500. |
Request
Response
200 · application/json
- {
- "url": "https://example.com",
- "strategy": "mobile",
- "fetchedUrl": "https://example.com/",
- "totalRequests": 24,
- "returned": 24,
- "totalTransferBytes": 482140,
- "requests": [
- {
- "url": "https://example.com/",
- "resourceType": "Document",
- "mimeType": "text/html",
- "statusCode": 200,
- "startTime": 0,
- "endTime": 220,
- "duration": 220,
- "transferSize": 12840,
- "resourceSize": 51200
- }
- ]
- }
Response fields
| Field | Type | Description |
|---|---|---|
strategy | string | The device strategy used: mobile or desktop. |
fetchedUrl | string | The final URL that was actually loaded (after redirects). |
totalRequests | integer | Total number of network requests seen during the load. |
returned | integer | Number of requests in this response after applying limit. |
totalTransferBytes | integer | Sum of transfer sizes across all requests, in bytes. |
requests[] | array | Each request: url, resourceType, mimeType, statusCode, startTime/endTime/duration (ms relative to navigation start), transferSize and resourceSize (bytes). |
Waterfall data comes from a real browser load, so this endpoint is slower than the static checks. See Errors.