Monitoring
Use the detailed health endpoint for uptime monitoring:
- Production health URL:
https://api.hempdata.io/v1/health - Railway fallback URL:
https://hempdata-api-production.up.railway.app/v1/health
Recommended UptimeRobot configuration:
- Monitor type:
HTTP(s) - Friendly name:
HempData API Health - URL:
https://api.hempdata.io/v1/health - Check interval:
5 minutes - Keyword check:
"status":"healthy"
The /v1/health payload now checks:
- PostgreSQL connectivity
- Redis connectivity
- Stripe API reachability
- Scraper freshness timestamps
If the custom domain is unavailable, temporarily point the monitor at the Railway fallback URL until DNS is corrected.
/v1/health vs /v1/status
/v1/healthis the machine probe contract: raw component rollup, returns
HTTP 503 when unhealthy, and the "status":"healthy" keyword the uptime monitors key off. Its shape and semantics are frozen — do not repurpose it.
/v1/statusis the developer-facing presentation (2026-08-03 split). Its
top-level status reflects the request-serving path only (operational / degraded / unhealthy, driven by database + redis). Non-serving degradation — scrapers, freshness pipelines, the human-review backlog — stays fully visible in components and the subsystems block but no longer flips the top-level status: a first-touch developer whose requests serve perfectly should not read "degraded". Monitors that care about data freshness read data_freshness.* (freshness-alert.sh) or subsystems.degraded, not the top-level word.