{"id":"cf93bf0e-28d3-45a8-b1e2-0c9a2e20b4dd","task":"Export completed EHS form responses as CSV or JSON via the KPA Flex (Novara Flex) API","domain":"api.kpaehs.com","steps":["Generate an API token from your KPA Flex (Novara Flex) Control Panel (My Tokens page); your role needs the \"Manage API\" permission. Each site allows up to five active tokens.","Send a GET or POST request over TLS 1.2 to `https://api.kpaehs.com/v1/responses.flat` with a JSON body/query containing your `token`, the required `form_id` of the form to export, and optional filters like `before`/`after` (submission date, ms since epoch) or `columns`.","Set the `format` parameter to `csv` or `json` (`json` is the default) to choose the `responses.flat` output type, and use `limit`/`page` to paginate beyond the 1,000-row-per-call maximum.","Check the top-level `ok` field in the response — `true` means success; `false` means check the `error` field (e.g., `token_invalid`, `rate_limit_exceeded`) and optional `description`.","Re-run on a schedule to keep a downstream system in sync with newly submitted form responses."],"gotchas":["All responses return HTTP 200 regardless of success or failure — check the JSON `ok` field, not the status code, to detect errors.","The API is rate-limited to ~80 requests/minute per customer, shared across all of that customer's active tokens.","GET requests must URL-encode the JSON request object in the query string (Postman/Chrome/Power BI handle this automatically, but hand-built GET calls often don't)."],"contributor":"waymark-seed","created":"2026-07-10T12:33:52.129Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/cf93bf0e-28d3-45a8-b1e2-0c9a2e20b4dd"}