cURL
curl -s \
"https://engine.example.com/v1/health"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
ProblemFromJSON,
ResponseError,
SystemApi,
} from "./nodeasset-client";
const api = new SystemApi(new Configuration({
basePath: "https://engine.example.com",
}));
try {
const answer = await api.getHealth();
console.log(answer.value);
} catch (e) {
if (!(e instanceof ResponseError)) throw e;
// A refusal is a problem; its type ends in the slug.
const problem = ProblemFromJSON(await e.response.json());
const slug = problem.type.split(":").pop();
console.error(e.response.status, slug, problem.detail);
}
# A client from OpenAPI Generator: see Build a client.
import sys
import nodeasset_client
config = nodeasset_client.Configuration(
host="https://engine.example.com",
)
with nodeasset_client.ApiClient(config) as client:
api = nodeasset_client.SystemApi(client)
try:
answer = api.get_health()
print(answer.value)
except nodeasset_client.ApiException as e:
# A refusal is a problem; its type ends in the slug.
problem = nodeasset_client.Problem.from_json(e.body)
slug = problem.type.rsplit(":", 1)[-1]
print(e.status, slug, problem.detail, file=sys.stderr)
// A client from OpenAPI Generator: see Build a client.
import nodeasset.client.ApiClient;
import nodeasset.client.ApiException;
import nodeasset.client.api.SystemApi;
import nodeasset.client.model.Problem;
public class GetHealth {
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
client.updateBaseUri("https://engine.example.com");
SystemApi api = new SystemApi(client);
try {
var request = SystemApi.APIGetHealthRequest.newBuilder().build();
var answer = api.getHealth(request);
System.out.println(answer.getValue());
} catch (ApiException e) {
// A refusal is a problem; its type ends in the slug.
Problem problem = client.getObjectMapper()
.readValue(e.getResponseBody(), Problem.class);
String type = problem.getType();
String slug = type.substring(type.lastIndexOf(':') + 1);
System.err.println(e.getCode() + " " + slug + " " + problem.getDetail());
}
}
}
{
"offset": 669,
"now": "2026-10-03T13:26:06.425882094Z",
"value": {
"connected": true,
"lastSyncedAt": "2026-10-03T13:25:31.491Z",
"syncAgeMs": 34934,
"latencyMs": 0,
"projectionLag": 2,
"message": "PQS latest offset 669; ledger end 671"
}
}System
Get health
Returns whether the engine reaches the ledger, and how far its projection lags behind it. It needs no sign-in and is not rate limited.
GET
/
v1
/
health
cURL
curl -s \
"https://engine.example.com/v1/health"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
ProblemFromJSON,
ResponseError,
SystemApi,
} from "./nodeasset-client";
const api = new SystemApi(new Configuration({
basePath: "https://engine.example.com",
}));
try {
const answer = await api.getHealth();
console.log(answer.value);
} catch (e) {
if (!(e instanceof ResponseError)) throw e;
// A refusal is a problem; its type ends in the slug.
const problem = ProblemFromJSON(await e.response.json());
const slug = problem.type.split(":").pop();
console.error(e.response.status, slug, problem.detail);
}
# A client from OpenAPI Generator: see Build a client.
import sys
import nodeasset_client
config = nodeasset_client.Configuration(
host="https://engine.example.com",
)
with nodeasset_client.ApiClient(config) as client:
api = nodeasset_client.SystemApi(client)
try:
answer = api.get_health()
print(answer.value)
except nodeasset_client.ApiException as e:
# A refusal is a problem; its type ends in the slug.
problem = nodeasset_client.Problem.from_json(e.body)
slug = problem.type.rsplit(":", 1)[-1]
print(e.status, slug, problem.detail, file=sys.stderr)
// A client from OpenAPI Generator: see Build a client.
import nodeasset.client.ApiClient;
import nodeasset.client.ApiException;
import nodeasset.client.api.SystemApi;
import nodeasset.client.model.Problem;
public class GetHealth {
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
client.updateBaseUri("https://engine.example.com");
SystemApi api = new SystemApi(client);
try {
var request = SystemApi.APIGetHealthRequest.newBuilder().build();
var answer = api.getHealth(request);
System.out.println(answer.getValue());
} catch (ApiException e) {
// A refusal is a problem; its type ends in the slug.
Problem problem = client.getObjectMapper()
.readValue(e.getResponseBody(), Problem.class);
String type = problem.getType();
String slug = type.substring(type.lastIndexOf(':') + 1);
System.err.println(e.getCode() + " " + slug + " " + problem.getDetail());
}
}
}
{
"offset": 669,
"now": "2026-10-03T13:26:06.425882094Z",
"value": {
"connected": true,
"lastSyncedAt": "2026-10-03T13:25:31.491Z",
"syncAgeMs": 34934,
"latencyMs": 0,
"projectionLag": 2,
"message": "PQS latest offset 669; ledger end 671"
}
}Public: no sign-in needed.
Headers
Your id for this request, 1 to 128 printable characters, repeated in the answer; absent, the engine makes one.
Maximum string length:
128Pattern:
^[\x21-\x7E]+$A W3C trace context, which the engine joins and passes on.
Pattern:
^[0-9a-f]{2}-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$Response
200 - application/json
The engine's health.
The ledger offset the answer was read at; 0 for an answer from the engine's own records.
The engine's clock when it answered, an ISO-8601 instant.
What the read answers; for a list, the page's records in the list's order.
Show child attributes
Show child attributes

