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.
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
401— missing or invalid API key429— rate limit exceeded (60 scans/hour per key)400— no file provided or unsupported format
Need higher limits, webhooks, or white-label PDFs over the API? Get in touch — we build consultant integrations on request.