Overview
The health check endpoint allows you to monitor the API’s availability and status. It’s designed for uptime monitoring services like Instatus, UptimeRobot, Pingdom, etc. Endpoint:GET /api/health
Authentication: None required (public endpoint)
Rate Limit: 60 requests per minute per IP address
Response Codes
| Status Code | Meaning |
|---|---|
200 | API is healthy and operational |
429 | Rate limit exceeded (too many requests) |
503 | API is unhealthy (backend unavailable) |
Response Format
Healthy (200 OK)
Unhealthy (503 Service Unavailable)
Rate Limited (429 Too Many Requests)
Usage
Basic Check
cURL
JavaScript
Python
With Rate Limit Headers
cURL
Monitoring Setup
Instatus
- Go to your Instatus dashboard
- Add a new monitor
- URL:
https://lupitor.acrely.ai/api/health - Method: GET
- Check interval: 1-5 minutes
- Expected status: 200
- Alert on: Non-200 responses or timeout
UptimeRobot
- Add new monitor
- Monitor Type: HTTP(s)
- Friendly Name: AI CSR API
- URL:
https://lupitor.acrely.ai/api/health - Monitoring Interval: 5 minutes
Pingdom
- Add new uptime check
- Name: AI CSR API Health
- URL:
https://lupitor.acrely.ai/api/health - Check interval: 1 minute
- Alert when down
What It Checks
The health endpoint verifies: ✅ API Server - Next.js server is responding ✅ Backend Connection - Convex database is reachable ✅ Query Execution - Can execute simple queries Does NOT check:- ❌ LiveKit voice service status
- ❌ External integrations (OpenAI, etc.)
- ❌ Specific feature availability
Best Practices
For Monitoring Services
- ✅ Set check interval to 1-5 minutes - Frequent enough to catch issues, infrequent enough to stay under rate limit
- ✅ Alert on 3+ consecutive failures - Avoid false alarms from transient issues
- ✅ Monitor from multiple regions - Detect regional outages
- ✅ Set reasonable timeout - 30 seconds is plenty
For Internal Health Checks
JavaScript
Rate Limiting
The health endpoint is rate limited to 60 requests per minute per IP address. This is intentionally generous to accommodate:- ✅ Multiple monitoring services
- ✅ Internal health checks
- ✅ Testing and development
429 response. Simply wait until the reset time indicated in the response.
Status Page
Our public status page uses this endpoint: lupitor-x-acrely.instatus.com You can subscribe for:- Email notifications
- Slack/Discord webhooks
- SMS alerts (enterprise only)
- RSS feed
Troubleshooting
Getting 429 (Rate Limited)
Cause: More than 60 requests per minute from your IP Solution:- Reduce check frequency
- Wait for rate limit reset time
- Use multiple IP addresses if necessary
Getting 503 (Service Unavailable)
Cause: Backend database (Convex) is unreachable Solution:- Check status page
- Wait a few minutes and retry
- Contact support if persists: info@acrely.ai
Timing Out
Cause: Network issues or server overload Solution:- Check your network connection
- Verify DNS resolution
- Try from different network/region
- Check status page
Questions?
- Status Page: lupitor-x-acrely.instatus.com
- Support: info@acrely.ai
- Documentation: API Reference