Node API
Each node answers a small read-only API on its own hostname. It exists so that your monitoring can check ours without scraping this page.
Health
Returns the node's own view of itself. No authentication; safe to poll every 30 seconds.
GET https://russia4.afinabs.com/v1/health
{
"node": "russia4",
"state": "operational",
"since": "2026-08-14T09:12:44Z",
"role": ["edge"],
"probes": 148,
"checked": "2026-09-07T02:41:03Z"
}
State is one of operational, degraded,
draining or offline. A draining node still answers
open connections but takes no new ones.
Probe results
Latest result per target for the probes assigned to this node. Results older than 24 hours are not kept on the node itself.
GET https://russia4.afinabs.com/v1/probes?target=example.org
{
"target": "example.org",
"node": "russia4",
"ok": true,
"rtt_ms": 34,
"code": 200,
"at": "2026-09-07T02:40:12Z"
}
Omit target to get every result the node currently holds.
Responses over 100 entries are paginated with an opaque cursor.
Rate limits and errors
Unauthenticated clients get 120 requests per minute per address. Over that,
the node answers 429 with Retry-After in seconds. Errors use the
same envelope throughout:
{
"error": "unknown_target",
"message": "No probe is configured for that target on this node."
}
If a call fails in a way this page does not explain, send the request id
from the X-Request-Id response header to
noc@afinabs.com.