Health

One endpoint your monitoring can poll to know whether Holofin can accept and process work right now.

It reports the platform, not your account. For what happened to documents you already sent, use Metrics.

Get service health

GET/api/v1.1/health

Whether Holofin can accept and process work right now. No API key, never rate limited. Answers 200 when operational or degraded, 503 on outage: alert on the status code.

Response

  • statusstring

    One of operational, degraded, outage.

  • servicesobject
  • timestring

status is the worst of the four services: api (requests and authentication), document_intake (accepting uploads), processing (classification, segmentation, extraction, analysis) and webhooks (event delivery). Each is operational, degraded (slower, or notifications late; nothing is lost) or outage (hold submissions and retry). time is when the state was measured; it refreshes at most every 10 seconds.

curl "https://app.holofin.ai/api/v1.1/health"
import requests

response = requests.get(
    "https://app.holofin.ai/api/v1.1/health",
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://app.holofin.ai/api/v1.1/health");
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
200 · Operational or degraded
{
  "status": "operational",
  "services": {
    "api": "operational",
    "document_intake": "operational",
    "processing": "operational",
    "webhooks": "operational"
  },
  "time": "2026-09-01T08:14:22.481930+00:00"
}

Monitoring

  • Poll every 30 to 60 seconds. The state refreshes at most every 10 seconds, so polling more often buys nothing.
  • Alert on the status code, not the body. 503 is unavailable, 200 is available. Read services to see which capability is affected.
  • Require three consecutive failures. One failed probe is usually a network hiccup, not an incident.
  • Do not gate submissions on it. A failed submission explains itself; see Errors and Reliability and limits.

Notes

  • Where a contract sets an availability commitment, it is computed from the share of non-503 responses on this endpoint, excluding announced maintenance.
  • /api/v1/health and /api/v1.1/health return the same payload, with or without a trailing slash.
  • degraded returns 200 on purpose, so a slow period does not wake your on-call team.