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
| Method | Path | Description |
|---|---|---|
GET | /me | Current account and plan limits. Use it to test a key. |
GET | /monitors | List monitors. |
POST | /monitors | Create 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}/pause | Pause a monitor. No alerts are sent while it is paused. |
POST | /monitors/{id}/resume | Resume a paused monitor. |
DELETE | /monitors/{id} | Delete a monitor and its history. Returns 204. |
GET | /monitors/{id}/pings?limit=50 | Recent pings, newest first. |
GET | /monitors/{id}/alerts?limit=20 | Recent alerts for one monitor, newest first. |
GET | /alerts?limit=50 | Recent 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": "…"}.
| Status | Meaning |
|---|---|
400 | Invalid input (invalid_request) |
401 | Missing, invalid or revoked key (unauthorized) |
402 | Your plan doesn't allow it, for example the monitor limit or output checks (plan_limit) |
404 | Monitor not found (not_found) |
429 | Rate 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.