ravenhook

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 == 200
const res = await fetch("https://api.ravenhook.dev/health");
const healthy = res.status === 200;
curl -s https://api.ravenhook.dev/health

Healthy

{ "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.