Health Check

Monitor API health, system status, and service availability

GET /healthGET
GET /health/publicPUBLIC

Overview

The health check endpoint provides real-time information about the API's operational status, service health, performance metrics, and any ongoing issues. Use this endpoint to monitor system health and implement automated health checks in your applications.

📊 Real-time Status

Get current health status of all critical services and components.

âš¡ Performance Metrics

Monitor response times, throughput, and system performance indicators.

🚨 Alert Information

Receive notifications about service degradations and critical issues.

Health Status Levels

Healthy

All systems operational

  • • All services responding normally
  • • Performance within acceptable ranges
  • • No critical or warning alerts

Degraded

Reduced performance

  • • Some services experiencing issues
  • • Higher than normal response times
  • • Warning alerts present

Unhealthy

Service disruption

  • • Critical services down or failing
  • • Significant performance degradation
  • • Critical alerts active

Request Examples

Authenticated Health Check

Detailed Health Information
curl -X GET https://api.markdownconverters.com/health \
 -H "X-API-Key: your_api_key_here"

Requires API key. Returns detailed service health and performance metrics.

Public Health Check

Basic Status Information
# Public health check (no API key required)
curl -X GET https://api.markdownconverters.com/health/public

No authentication required. Returns basic status information suitable for load balancers.

Response Examples

Healthy System Response

All Systems Operational (200 OK)
{
 "status": "healthy",
 "timestamp": "2024-01-01T12:00:00Z",
 "version": "1.2.3",
 "uptime_seconds": 2592000,
 "services": {
 "api_gateway": {
 "status": "healthy",
 "response_time_ms": 12,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "conversion_engine": {
 "status": "healthy",
 "active_workers": 25,
 "queue_size": 0,
 "avg_processing_time_ms": 2347,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "storage": {
 "status": "healthy",
 "available_space_gb": 5000,
 "read_latency_ms": 8,
 "write_latency_ms": 15,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "database": {
 "status": "healthy",
 "connection_pool_active": 15,
 "connection_pool_idle": 5,
 "query_latency_ms": 3,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "authentication": {
 "status": "healthy",
 "response_time_ms": 25,
 "last_check": "2024-01-01T12:00:00Z"
 }
 },
 "performance": {
 "requests_per_minute": 1234,
 "avg_response_time_ms": 234,
 "success_rate": 0.998,
 "active_connections": 156
 },
 "regions": {
 "us-east-1": {
 "status": "healthy",
 "load": 0.45,
 "latency_ms": 12
 },
 "us-west-2": {
 "status": "healthy", 
 "load": 0.38,
 "latency_ms": 15
 },
 "eu-west-1": {
 "status": "healthy",
 "load": 0.52,
 "latency_ms": 18
 }
 },
 "maintenance": {
 "scheduled": false,
 "next_window": "2024-01-15T02:00:00Z"
 }
}

Degraded Performance Response

Performance Issues Detected (200 OK)
{
 "status": "degraded",
 "timestamp": "2024-01-01T12:00:00Z",
 "version": "1.2.3",
 "uptime_seconds": 2592000,
 "services": {
 "api_gateway": {
 "status": "healthy",
 "response_time_ms": 12,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "conversion_engine": {
 "status": "degraded",
 "active_workers": 8,
 "queue_size": 45,
 "avg_processing_time_ms": 4567,
 "last_check": "2024-01-01T12:00:00Z",
 "issues": [
 "High queue size detected",
 "Processing time above normal threshold"
 ]
 },
 "storage": {
 "status": "healthy",
 "available_space_gb": 5000,
 "read_latency_ms": 8,
 "write_latency_ms": 15,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "database": {
 "status": "healthy",
 "connection_pool_active": 15,
 "connection_pool_idle": 5,
 "query_latency_ms": 3,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "authentication": {
 "status": "healthy",
 "response_time_ms": 25,
 "last_check": "2024-01-01T12:00:00Z"
 }
 },
 "performance": {
 "requests_per_minute": 1234,
 "avg_response_time_ms": 456,
 "success_rate": 0.985,
 "active_connections": 156
 },
 "alerts": [
 {
 "severity": "warning",
 "message": "Conversion queue size above threshold",
 "timestamp": "2024-01-01T11:55:00Z"
 }
 ]
}

System Issues Response

Critical Services Down (503 Service Unavailable)
{
 "status": "unhealthy",
 "timestamp": "2024-01-01T12:00:00Z",
 "version": "1.2.3",
 "uptime_seconds": 2592000,
 "services": {
 "api_gateway": {
 "status": "healthy",
 "response_time_ms": 12,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "conversion_engine": {
 "status": "unhealthy",
 "active_workers": 0,
 "queue_size": 150,
 "avg_processing_time_ms": null,
 "last_check": "2024-01-01T12:00:00Z",
 "error": "All conversion workers are down"
 },
 "storage": {
 "status": "degraded",
 "available_space_gb": 50,
 "read_latency_ms": 45,
 "write_latency_ms": 89,
 "last_check": "2024-01-01T12:00:00Z",
 "issues": [
 "Low available storage space",
 "High I/O latency"
 ]
 },
 "database": {
 "status": "healthy",
 "connection_pool_active": 15,
 "connection_pool_idle": 5,
 "query_latency_ms": 3,
 "last_check": "2024-01-01T12:00:00Z"
 },
 "authentication": {
 "status": "unhealthy",
 "response_time_ms": null,
 "last_check": "2024-01-01T11:58:00Z",
 "error": "Service unreachable"
 }
 },
 "performance": {
 "requests_per_minute": 234,
 "avg_response_time_ms": 2345,
 "success_rate": 0.654,
 "active_connections": 89
 },
 "alerts": [
 {
 "severity": "critical",
 "message": "Conversion engine completely down",
 "timestamp": "2024-01-01T11:45:00Z"
 },
 {
 "severity": "critical",
 "message": "Authentication service unreachable",
 "timestamp": "2024-01-01T11:50:00Z"
 }
 ]
}

Response Fields

System Information

FieldTypeDescription
statusstringOverall system health (healthy, degraded, unhealthy)
timestampstringCurrent server time (ISO 8601)
versionstringCurrent API version
uptime_secondsnumberSystem uptime in seconds

Service Health

ServiceHealth FieldsDescription
api_gatewaystatus, response_time_msAPI gateway health and response times
conversion_enginestatus, active_workers, queue_sizeFile conversion service health and capacity
storagestatus, available_space_gb, latency_msFile storage system health and performance
databasestatus, connection_pool, query_latencyDatabase health and connection status
authenticationstatus, response_time_msAuthentication service health

Performance Metrics

MetricTypeDescription
requests_per_minutenumberCurrent API request rate
avg_response_time_msnumberAverage API response time
success_ratenumberRequest success rate (0.0-1.0)
active_connectionsnumberCurrent active API connections

HTTP Status Codes

Success Responses

  • • 200 OK: System is healthy or degraded but functional
  • • Returns detailed health information in response body
  • • Status field indicates specific health level

Error Responses

  • • 503 Service Unavailable: Critical services are down
  • • 401 Unauthorized: Invalid API key (authenticated endpoint)
  • • 500 Internal Server Error: Health check system failure

Monitoring Best Practices

Health Check Strategy

  • • Check health every 30-60 seconds for monitoring
  • • Use the public endpoint for load balancer health checks
  • • Implement exponential backoff for failed checks
  • • Monitor both HTTP status codes and response status field

Alert Configuration

  • • Alert on "degraded" status for performance issues
  • • Alert immediately on "unhealthy" status
  • • Monitor service-specific metrics for early detection
  • • Set up alerts for queue sizes and response times

Integration Examples

Load Balancer Health Check

Configure your load balancer to use the public health endpoint:

Health Check URL: https://api.markdownconverters.com/health/public
Interval: 30 seconds
Timeout: 5 seconds
Healthy threshold: 2 consecutive successes
Unhealthy threshold: 3 consecutive failures

Application Health Monitoring

Use the authenticated endpoint for detailed monitoring in your application:

// Monitor specific service health if (healthResponse.services.conversion_engine.status === 'unhealthy') { // Disable conversion features temporarily showMaintenanceMessage(); } // Check queue size for capacity planning if (healthResponse.services.conversion_engine.queue_size > 50) { // Implement request throttling enableRateLimiting(); }