EMSist API

Run ISO 14001:2026 gap analyses from your own systems — practice management tools, client portals, or internal scripts. Available on the Consultant plan.

Key-based auth
Create and revoke keys in your dashboard
60 scans / hour
Per-key rate limit, LLM-enhanced analysis
Documents discarded
Uploads are deleted immediately after analysis

Authentication

Generate an API key from Dashboard → API keys (available on the Consultant Pro plan). Pass it as a Bearer token on every request. Keys can be revoked at any time.

Run a scan

POST /api/public/scan — multipart form with a file (PDF, DOCX or TXT, max 25 MB), or up to 10 documents as repeated files fields for a consolidated suite scan. Scanned image-only PDFs are read automatically with OCR. Optional fields: organisation_name, industry_sector (27 supported sectors, e.g. manufacturing, construction, healthcare).

curl -X POST https://emsist.uk/api/public/scan \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F "organisation_name=Client Ltd" \
  -F "industry_sector=manufacturing"

Response

Full report JSON — the same clause-by-clause findings, evidence excerpts and prioritised action plan that power the EMSist PDF. Typical response time is under 90 seconds.

{
  "success": true,
  "message": "Scan complete. 39 rules checked. Readiness: 76.4%",
  "report": {
    "report_id": "2d5de231-41b",
    "summary": {
      "total_rules_checked": 39,
      "compliant": 21, "partial": 18, "gaps": 0,
      "overall_readiness_pct": 76.4
    },
    "findings": [ /* 39 clause-by-clause findings with
       status, confidence, evidence excerpts,
       explanation and recommended actions */ ],
    "action_plan": [ /* prioritised actions */ ]
  }
}

Async mode

For large documents or multi-document suites, add ?async=true to the scan request. You get a scan_id back immediately (HTTP 202) instead of waiting on the connection — then poll GET /api/public/scan/{scan_id} with the same API key until status is complete. Results are kept for 24 hours.

# 1. Start the scan — returns immediately
curl -X POST "https://emsist.uk/api/public/scan?async=true" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]"
# → 202 { "scan_id": "3e13bceb...", "status": "processing",
#         "poll_url": "https://emsist.uk/api/public/scan/3e13bceb..." }

# 2. Poll until complete (typically 30-90s)
curl https://emsist.uk/api/public/scan/3e13bceb... \
  -H "Authorization: Bearer YOUR_API_KEY"
# → { "scan_id": "...", "status": "complete", "result": { ...full report... } }

Errors

Need higher limits, webhooks, or white-label PDFs over the API? Get in touch — we build consultant integrations on request.