Skip to main content
GET
/
health
Health Status
curl --request GET \
  --url https://api.example.com/health
{
  "200": {},
  "503": {},
  "overall_status": "<string>",
  "timestamp": "<string>",
  "response_time_ms": 123,
  "checks": {
    "database": {
      "status": "<string>",
      "message": "<string>",
      "error": "<string>"
    },
    "redis": {
      "status": "<string>",
      "message": "<string>",
      "error": "<string>"
    },
    "weaviate": {
      "status": "<string>",
      "message": "<string>",
      "error": "<string>"
    },
    "celery": {
      "status": "<string>",
      "message": "<string>",
      "warning": "<string>",
      "error": "<string>"
    },
    "chatbot_websocket": {
      "status": "<string>",
      "message": "<string>",
      "error": "<string>"
    }
  }
}

Overview

The health status endpoint performs comprehensive health checks across all Aurora services, including database, cache, vector storage, task queue, and chatbot services. It returns detailed status information for each component and an overall system health assessment.

Endpoint

GET /health

Response

Returns a JSON object with overall system status and individual service health checks.
overall_status
string
required
Overall system health status. Possible values:
  • healthy: All services are operational
  • degraded: Some non-critical services have issues
  • unhealthy: Critical services are down
timestamp
string
required
ISO 8601 timestamp when the health check was performed
response_time_ms
number
required
Time taken to complete all health checks in milliseconds
checks
object
required
Individual health check results for each service

Status Codes

200
status code
System is healthy or degraded (non-critical issues)
503
status code
System is unhealthy (critical services down)

Example Response

Healthy System

{
  "overall_status": "healthy",
  "timestamp": "2026-03-03T14:30:00.123456",
  "response_time_ms": 245.67,
  "checks": {
    "database": {
      "status": "healthy",
      "message": "Database connection successful"
    },
    "redis": {
      "status": "healthy",
      "message": "Redis connection successful"
    },
    "weaviate": {
      "status": "healthy",
      "message": "Weaviate connection successful"
    },
    "celery": {
      "status": "healthy",
      "message": "3 Celery workers active"
    },
    "chatbot_websocket": {
      "status": "healthy",
      "message": "Chatbot connection and initial response successful"
    }
  }
}

Degraded System

{
  "overall_status": "degraded",
  "timestamp": "2026-03-03T14:30:00.123456",
  "response_time_ms": 189.23,
  "checks": {
    "database": {
      "status": "healthy",
      "message": "Database connection successful"
    },
    "redis": {
      "status": "healthy",
      "message": "Redis connection successful"
    },
    "weaviate": {
      "status": "healthy",
      "message": "Weaviate connection successful"
    },
    "celery": {
      "status": "degraded",
      "warning": "No active Celery workers found"
    },
    "chatbot_websocket": {
      "status": "healthy",
      "message": "Chatbot connection and initial response successful"
    }
  }
}

Unhealthy System

{
  "overall_status": "unhealthy",
  "timestamp": "2026-03-03T14:30:00.123456",
  "response_time_ms": 156.89,
  "checks": {
    "database": {
      "status": "unhealthy",
      "error": "Database connection failed"
    },
    "redis": {
      "status": "healthy",
      "message": "Redis connection successful"
    },
    "weaviate": {
      "status": "unhealthy",
      "error": "Weaviate HTTP connection failed"
    },
    "celery": {
      "status": "healthy",
      "message": "2 Celery workers active"
    },
    "chatbot_websocket": {
      "status": "unhealthy",
      "error": "Timeout waiting for chatbot response"
    }
  }
}

Usage

cURL

curl http://localhost:5080/health

JavaScript

const response = await fetch('http://localhost:5080/health');
const health = await response.json();

if (health.overall_status === 'healthy') {
  console.log('All systems operational');
} else if (health.overall_status === 'degraded') {
  console.warn('System degraded:', health.checks);
} else {
  console.error('System unhealthy:', health.checks);
}

Python

import requests

response = requests.get('http://localhost:5080/health')
health = response.json()

print(f"Overall Status: {health['overall_status']}")
print(f"Response Time: {health['response_time_ms']}ms")

for service, status in health['checks'].items():
    print(f"{service}: {status['status']}")

Health Check Logic

The endpoint determines overall system health based on individual service statuses:
  1. Unhealthy: Any service reports unhealthy status → Returns HTTP 503
  2. Degraded: No unhealthy services, but at least one degraded service → Returns HTTP 200
  3. Healthy: All services report healthy status → Returns HTTP 200

Monitoring Integration

This endpoint is designed for use with:
  • Load balancers: Configure health checks to route traffic only to healthy instances
  • Monitoring systems: Set up alerts when overall_status is not healthy
  • Kubernetes: Use as a combined liveness and readiness probe (see dedicated endpoints for more granular control)
  • Uptime monitors: Track service availability over time

Build docs developers (and LLMs) love