The Nevision server agent posts host metrics — CPU, memory, disk, network — to a single ingestion URL. The ingest endpoint is language-agnostic, so you can also push from your own collector, a Kubernetes sidecar, or a one-off cron.
Endpoint
POST https://<your-ingest-url>.lambda-url.<region>.on.aws/ Content-Type: application/json
Auth is in the body (siteId + apiKey) — no headers required. Find the live ingest URL on Servers → Add a server. The first POST from a new (siteId, hostname) auto-registers a server and the response returns the assigned serverId.
Payload
{
"siteId": "YOUR_SITE_ID",
"apiKey": "YOUR_API_KEY",
"hostname": "web-01",
"agentVersion": "1.0.0",
"os": "linux",
"arch": "x86_64",
"cpuCores": 4,
"totalMemBytes": 8589934592,
"ingestIntervalSeconds": 60,
"timestamp": "2026-04-26T10:00:00Z",
"metrics": {
"cpu": {
"loadAvg1": 0.42,
"loadAvg5": 0.51,
"loadAvg15": 0.48,
"percent": 17.3,
"perCore": [12.1, 22.4, 18.0, 16.7]
},
"memory": {
"totalBytes": 8589934592,
"usedBytes": 5368709120,
"freeBytes": 3221225472,
"swapTotalBytes": 0,
"swapUsedBytes": 0
},
"disks": [
{ "mount": "/", "totalBytes": 100000000000, "usedBytes": 42000000000 }
],
"network": [
{ "iface": "eth0", "rxBytesPerSec": 12000, "txBytesPerSec": 8400 }
]
}
}cpu.percent is a 0–100 number. ingestIntervalSeconds must be ≥ your plan's minimum (free: 60s, paid: 1s). The first response includes {"accepted": true, "serverId": "..."}; persist that serverId and send it on subsequent requests.
Code examples
curl -X POST "$NEVISION_INGEST_URL" \
-H "Content-Type: application/json" \
-d '{
"siteId": "YOUR_SITE_ID",
"apiKey": "YOUR_API_KEY",
"hostname": "web-01",
"ingestIntervalSeconds": 60,
"timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"metrics": {
"cpu": {"loadAvg1": 0.4, "loadAvg5": 0.5, "loadAvg15": 0.5, "percent": 17.3, "perCore": []},
"memory": {"totalBytes": 8589934592, "usedBytes": 5368709120, "freeBytes": 3221225472}
}
}'Response
{ "accepted": true, "serverId": "8e9c..." }Persist serverId and pass it back on the next call to skip hostname re-resolution. If accepted is false, the response carries an error or reason (cadence_too_high, servers_limit_reached, rate_limited, limitReached).
Tips
- Respect cadence floor. Free plans accept 1 metric per minute per host; paid plans allow up to 1/sec.
- Use the official agent if you can. The bundled agent handles backoff, server-id persistence, and unit conversion for you — see Servers → Add a server.
- Hostname must be unique per host. A fleet of identical hostnames dedupes to a single record — set a unique
hostnameper node.