Health check
GET/healthNo token required
Whether the service can actually serve requests. This is the one endpoint that needs no authentication — point your uptime monitor at it.
Parameters
None.
Example
import requests
reply = requests.get("https://api.ravenhook.dev/health", timeout=5)
healthy = reply.status_code == 200const res = await fetch("https://api.ravenhook.dev/health");
const healthy = res.status === 200;curl -s https://api.ravenhook.dev/healthHealthy
{ "status": "ok", "storage": "ok" }Unhealthy
Returns 503:
{ "status": "unavailable", "storage": "unreachable" }It checks storage, not just liveness
The endpoint pings the message store rather than only confirming the process is running. That distinction is the entire point of it.
Answering ok while storage was unreachable would leave every monitor green while every other endpoint failed — the one situation where a health check actively misleads you, and worse than having no check at all, because it converts an outage into a silent one.
What it cannot see
A green /health means the API can serve and reach storage. It does not prove mail is being received: the SMTP receiver is a separate process, so a total delivery outage leaves this endpoint green.
If you need to know that end to end, send a real message to a throwaway address and read it back through GET /messages/latest. That exercises DNS, inbound SMTP, storage and the API as one signal.
Monitoring it
Treat anything other than 200 as an outage. Check every 30 to 60 seconds; the endpoint is cheap and unauthenticated, but it does count against rate limiting by IP, so do not poll it every second.