Skip to content
JAOT

Health

The health endpoints provide service status information for monitoring, load balancers, and SLA tracking. All health endpoints are public -- no authentication required.

Tip: Use the basic /health endpoint for load balancer health checks and /health/status for detailed component-level monitoring.


Basic health check

GET /api/v2/health

Returns the overall service status with system metrics. Use this as your load balancer health check endpoint.

Authentication: None (public)

import requests

response = requests.get("https://api.jaot.io/api/v2/health")
health = response.json()

print(f"Status: {health['status']}")
print(f"Solver: {health['solver']}")
print(f"CPU: {health['system']['cpu_percent']}%")
print(f"Memory: {health['system']['memory_percent']}%")

Response (200)

{
  "status": "ok",
  "version": "2.0.0",
  "solver": "SCIP (universal)",
  "system": {
    "cpu_percent": 12.5,
    "memory_percent": 45.2,
    "memory_available_mb": 8192.0,
    "disk_usage_percent": 38.7
  },
  "uptime_seconds": 86400.0,
  "python_version": "3.12.4"
}

Response fields

FieldTypeDescription
statusstringService status: ok
versionstringAPI version
solverstringSolver engine identifier
system.cpu_percentfloatCurrent CPU utilization
system.memory_percentfloatCurrent memory utilization
system.memory_available_mbfloatAvailable memory in megabytes
system.disk_usage_percentfloatDisk usage percentage
uptime_secondsfloatSeconds since application start
python_versionstringPython runtime version

Detailed status

GET /api/v2/health/status

Returns detailed component-level health status for SLA monitoring. Checks database connectivity, solver availability, memory, and disk.

Authentication: None (public)

response = requests.get("https://api.jaot.io/api/v2/health/status")
status = response.json()

print(f"Overall: {status['status']}")
print(f"SLA Target: {status['sla_target']}")
print(f"Checks: {status['checks_passed']}/{status['checks_total']} passed")

for component in status["components"]:
    latency = f" ({component['latency_ms']}ms)" if component.get("latency_ms") else ""
    print(f"  {component['name']}: {component['status']}{latency}")

Response (200)

{
  "status": "healthy",
  "version": "2.0.0",
  "uptime_seconds": 86400.0,
  "components": [
    {
      "name": "database",
      "status": "healthy",
      "latency_ms": 1.23,
      "message": null
    },
    {
      "name": "solver",
      "status": "healthy",
      "latency_ms": 45.6,
      "message": null
    },
    {
      "name": "memory",
      "status": "healthy",
      "latency_ms": null,
      "message": null
    },
    {
      "name": "disk",
      "status": "healthy",
      "latency_ms": null,
      "message": null
    }
  ],
  "sla_target": "99.9%",
  "checks_passed": 4,
  "checks_total": 4
}

Overall status values

StatusMeaning
healthyAll components operational
degradedOne or more components under stress (memory above 85%, disk above 85%)
downCritical component failed (database unreachable, solver unavailable, memory above 95%)

Component checks

ComponentHealthyDegradedDown
databaseQuery succeeds--Connection failed
solverTest solve succeeds--Solver unavailable
memoryUsage below 85%Usage 85--95%Usage above 95%
diskUsage below 85%Usage 85--95%Usage above 95%

Application metrics

GET /api/v2/health/metrics

Returns application performance metrics including request counts and problem statistics.

Authentication: None (public)

response = requests.get("https://api.jaot.io/api/v2/health/metrics")
metrics = response.json()
print(f"Total requests: {metrics['total_requests']}")
print(f"Problems solved: {metrics['problem_stats']['total_solved']}")

Response (200)

{
  "uptime_seconds": 86400.0,
  "start_time": "2026-02-18T00:00:00Z",
  "total_requests": 12450,
  "total_successful": 12380,
  "total_failed": 70,
  "problem_stats": {
    "total_solved": 3200,
    "avg_solve_time_ms": 234
  }
}

Recent requests

GET /api/v2/health/metrics/recent

Returns recent request history for debugging.

Authentication: None (public)

Query parameters

ParameterTypeDefaultDescription
limitint10Number of recent requests (1--100)
response = requests.get(
    "https://api.jaot.io/api/v2/health/metrics/recent",
    params={"limit": 5},
)
recent = response.json()