Status

Status

Public health and data-freshness endpoint. Useful for integration health pages, customer trust signals, and agent precondition checks before spending credits.

Endpoint

GET https://api.brandmappr.com/api/v1/status

No API key required. CORS open. Edge-cached for 30 seconds.

Response shape

{
  "status": "ok",            // "ok" | "degraded" (degraded if any subsystem is down)
  "elapsed_ms": 187,         // total round-trip time for this status request
  "timestamp": "2026-05-24T22:32:30.042Z",
  "api": {
    "ok": true,
    "version": "1.4.0"
  },
  "renderer": {
    "ok": true,
    "elapsed_ms": 156,       // time spent calling the renderer /health
    "detail": { ... }        // proxied from the renderer
  },
  "data": {
    "brand_summary": {
      "last_refreshed_at": "2026-05-01T06:13:42.000Z",
      "stale": false         // true if older than 40 days (monthly refresh + 10d grace)
    }
  },
  "flags": {
    "use_multi_source_import": false,
    "disabled_sources": []   // contents of BRANDMAPPR_DISABLE_SOURCES env
  }
}

The overall status is degraded if any subsystem is down. The API itself always returns 200 if it can respond — the body carries the state. We never return 5xx for monitoring purposes; that prevents you from distinguishing "the API is down" from "the API says something is degraded."

Use cases

  • Customer integration health page — embed a "BrandMappr status" badge that pings /status every 60 seconds.
  • Pre-render precondition check — before spending credits on a large render, an agent can confirm the renderer is up and the data is fresh.
  • Internal monitoring — wire a simple polling alert that pages on status === "degraded" or stale === true.

Notes

  • data.brand_summary.last_refreshed_at is null until the data-refresh workflow has run at least once after migration 037 was applied. Until then, stale is also null.
  • The 30-second edge cache means up to 30 seconds of staleness is normal. For aggressive monitoring, hit the endpoint more often anyway — Cloudflare absorbs the cost.