Telemetry Endpoints
Real User Monitoring (RUM) beacon ingestion and aggregated Web Vitals data.
SDK handles this automatically
When using @netloc8/react or @netloc8/nextjs, RUM beacons are submitted automatically by the Provider. You don't need to call these endpoints directly.
POST
/v1/telemetry/rumSubmit RUM beacon
Ingest Real User Monitoring beacons from the SDK. Accepts Web Vitals metrics and/or client-side error reports. Uses Origin header validation against registered site domains. Max body size: 4 KB.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Optional | Page URL path (no query string, max 500 chars) |
deviceType | string | Optional | "desktop", "mobile", or "tablet" |
connectionType | string | Optional | Network connection type (e.g. "4g") |
metrics | object | Optional | Core Web Vitals: lcp, fid, inp, cls, ttfb, dns, tls, request, response (all ms except CLS) |
errors | array | Optional | Client-side errors (max 10 per beacon) |
Example Request
Bash
curl -X POST https://api.netloc8.com/v1/telemetry/rum \
-H "Content-Type: application/json" \
-H "Origin: https://example.com" \
-d '{
"path": "/dashboard",
"deviceType": "desktop",
"metrics": { "lcp": 1200, "cls": 0.05, "inp": 150 }
}'Response
204Beacon accepted
GET
/v1/telemetry/rum/summaryAuthenticatedGet RUM summary
Returns hourly aggregated Web Vitals percentiles (p50, p75, p95) for a registered domain. Supports filtering by country, device type, and date range. Default range: last 7 days.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Required | Domain to query (must belong to authenticated user) |
country | string | Optional | Filter by ISO 3166-1 alpha-2 country code |
device | string | Optional | "desktop", "mobile", or "tablet" |
from | string | Optional | Start hour (ISO format, e.g. 2026-03-08T00) |
to | string | Optional | End hour (ISO format). Default: now |
Example Request
Bash
curl -H "X-API-Key: YOUR_KEY" \
"https://api.netloc8.com/v1/telemetry/rum/summary?domain=example.com"Response
200Aggregated RUM data
JSON
{
"domain": "example.com",
"period": {
"from": "2026-03-10T00",
"to": "2026-03-17T23"
},
"metrics": [
{
"hour": "2026-03-17T22",
"sampleCount": 150,
"lcp": {
"p50": 1200,
"p75": 1800,
"p95": 3500
},
"inp": {
"p50": 100,
"p75": 150,
"p95": 300
},
"cls": {
"p50": 0.02,
"p75": 0.05,
"p95": 0.15
},
"ttfb": {
"p50": 200,
"p75": 350,
"p95": 800
}
}
]
}