Page timing
GET /api/v1/page-timing
Measure how fast a server responds: DNS lookup, TCP connect, TLS handshake, time to first byte (TTFB), download and total time — plus the transfer size and whether the response is compressed. A lightweight, no-browser alternative to a full Lighthouse run.
Query parameters
| Name | Type | Description |
|---|---|---|
url required | string | The URL to time. |
Request
Response
200 · application/json
- {
- "url": "https://example.com",
- "statusCode": 200,
- "contentEncoding": "br",
- "contentType": "text/html",
- "transferSize": 71978,
- "contentLength": null,
- "timings": {
- "dnsMs": 4,
- "connectMs": 22,
- "tlsMs": 26,
- "ttfbMs": 194,
- "downloadMs": 42,
- "totalMs": 236
- }
- }
Response fields
| Field | Type | Description |
|---|---|---|
contentEncoding | string | Compression used (gzip, br…), or null if uncompressed. |
transferSize | integer | Bytes received over the wire (compressed). |
contentLength | integer | The Content-Length header, if the server sent one. |
timings.dnsMs | integer | DNS lookup time. |
timings.connectMs | integer | TCP connection time. |
timings.tlsMs | integer | TLS handshake time (HTTPS only). |
timings.ttfbMs | integer | Time to first byte — server processing latency. |
timings.downloadMs | integer | Time to download the response body. |
timings.totalMs | integer | Total request time. |
For full rendered performance (Core Web Vitals), use Lighthouse. See Errors for status codes.