Afina Backbone Systems

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.