REST API

Manage monitors from scripts, Zapier, Make or n8n. Machine-readable spec: /openapi.json (OpenAPI 3.0).

You do not need the API, or a key, to report runs. Call the monitor's ping URL instead (see the setup guide).

Authentication

Create a key in the app under API keys. The full key is shown once. We store only a hash of it, so a lost key can't be recovered; revoke it and create a new one. Send the key as a Bearer token:

curl https://flowhush.com/api/v1/me \
  -H "Authorization: Bearer fh_your_key"

Base URL: https://flowhush.com/api/v1. Requests and responses use JSON, and timestamps are ISO 8601 UTC.

Endpoints

MethodPathDescription
GET/meCurrent account and plan limits. Use it to test a key.
GET/monitorsList monitors.
POST/monitorsCreate a monitor. Returns 201 with the monitor, including its ping_url.
GET/monitors/{id}Get one monitor.
PATCH/monitors/{id}Update name, period, grace or output rules. Fields you leave out stay the same.
POST/monitors/{id}/pausePause a monitor. No alerts are sent while it is paused.
POST/monitors/{id}/resumeResume a paused monitor.
DELETE/monitors/{id}Delete a monitor and its history. Returns 204.
GET/monitors/{id}/pings?limit=50Recent pings, newest first.
GET/monitors/{id}/alerts?limit=20Recent alerts for one monitor, newest first.
GET/alerts?limit=50Recent alerts across all monitors, newest first. Good for polling triggers.

Create a monitor

curl -X POST https://flowhush.com/api/v1/monitors \
  -H "Authorization: Bearer fh_your_key" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nightly export","period_seconds":86400,"grace_seconds":3600,
       "rules":{"validJson":true,"requiredKeys":["data.items"]}}'

Period: 60 s to 31 days. Grace: 60 s to 7 days. rules are optional. Pro allows nonEmpty, validJson and requiredKeys; Team also allows forbiddenSubstrings. Send "rules": null to remove all checks.

Errors and limits

Every error returns {"error": "message", "code": "…"}.

StatusMeaning
400Invalid input (invalid_request)
401Missing, invalid or revoked key (unauthorized)
402Your plan doesn't allow it, for example the monitor limit or output checks (plan_limit)
404Monitor not found (not_found)
429Rate limited (rate_limited). About 120 requests per minute per key. Wait for the number of seconds in Retry-After.

Ping URLs are also rate-limited per IP address, at about 600 per minute.