OpenAPI 3.0

AcreSeal API Documentation

REST API for HB 144 compliance automation. Integrate AcreSeal into your existing GIS, SCADA, and work management systems.

Download OpenAPI Spec (JSON)

Base URL

https://acreseal.com/api

Authentication

Authenticated endpoints require a Supabase JWT bearer token obtained via magic link login. Include in all requests:

Authorization: Bearer <your-jwt-token>

Machine callers may instead present an issued API key (Bearer ak_…) scoped to the granted permissions — all read endpoints, plus job ingest with the jobs:write scope. Sealing a job stays session-only.

Webhook Signatures

Each webhook POST is signed so you can verify it originated from AcreSeal. Compute HMAC-SHA256(timestamp + "." + rawBody) with your webhook's signing secret and compare (constant-time) against the signature header. Reject stale timestamps to prevent replay.

X-AcreSeal-Webhook-Event: complaint.sealed X-AcreSeal-Webhook-Timestamp: 1730592000 X-AcreSeal-Webhook-Signature: <hex hmac-sha256>

Endpoints

MethodPathDescriptionAuthRate Limit
GET/api/healthPlatform health checkNone
POST/api/submit-complaintSubmit a landowner complaint with photo evidence and GPSTurnstile CAPTCHA5/hr per IP
GET/api/complaintsList complaints for your utilityBearer JWT100/hr
GET/api/verify-chainVerify SHA-256 hash chain integrity for any recordNone30/min
POST/api/resolveSubmit field inspection resolution with digital signatureBearer JWT10/min
POST/api/export/hb144Generate an HB 144 complaint summary for a reporting period (PDF/CSV)Bearer JWT
POST/api/export/nerc-fac003Generate NERC FAC-003-5 vegetation compliance reportBearer JWT
GET/api/export/geojsonExport your pole or complaint layer as GeoJSON (RFC 7946) for ArcGIS/QGIS; complaint layer is PII-freeBearer JWT3/min
POST/api/integrationWebhook for external system integration (GIS, SCADA)Bearer JWT100/hr
GET/api/v1/carrier/claims/adjudicate/{record_id}Adjudicate a sealed record for carrier claim review (integrity + provenance, RFC 7807 errors)Bearer JWT100/min
POST/api/v1/carrier/litigation/defense-packageCompile an FRE 901/902 litigation bundle for 1-50 records with a SHA-256 audit log. Carries an AcreSeal HMAC, which is an internal integrity check the recipient cannot verifyJWT / key (carrier:read)100/min
GET/api/v1/underwriting/risk-scorek-anonymized aggregate infrastructure-risk score for a location (quantized grid, sub-counts <5 suppressed, no PII)Bearer JWT100/min
GET/api/v1/gis/exportMulti-format spatial export — streaming GeoJSON/KML + buffered ESRI Shapefile; layer/status/date/bbox filters, PII-freeJWT / key (gis:export)3/min
POST/api/v1/gis/query/polygonQuery captures inside a GeoJSON polygon or corridor buffer (ST_DWithin over GIST); returns a FeatureCollection, PII-freeJWT / key (gis:export)3/min
POST/api/v1/jobsCreate a Job/Work-Order container (optional corridor linkage: work_order_number, utility_contract_id, substation_feeder_id, corridor_span_id) for batch Merkle sealingJWT / key (jobs:write)20/min
POST/api/v1/jobs/{id}/attachAttach sealed reports (UUIDv4) to a job; skips ineligible with reasonsJWT / key (jobs:write)20/min
POST/api/v1/jobs/{id}/sealSeal a job — RFC 6962 Merkle root + combined SHA-256 + Ed25519 signature; freezes member reports (immutable). Session JWT only — sealing is not key-authorizable.Bearer JWT only20/min
GET/api/v1/jobs/{id}Job detail + independent seal verification (recomputes Merkle root, verifies Ed25519 signature)Bearer JWT
GET/api/v1/evidence/{record_id}Forensic chain-of-custody report PDF (machine-generated; not an affidavit) — hashes + verification QR + photo/EXIF + Ed25519 signatureBearer JWT
GET/api/v1/evidence/{record_id}/certificationFRE 902(11)/(13)/(14) certification bundle PDF — cover + both certifications + hash manifest. UNEXECUTED unless a declarant is configured and the wording is counsel-reviewedBearer JWT
GET/api/v1/compliance/frameworksList registered compliance frameworks (HB 144, NERC FAC-003) with required + advisory requirementsBearer JWT
GET/api/v1/reports/{id}/compliance-auditEvaluate a record against ?framework= — honest pass/fail; uncaptured rules reported INDETERMINATE, not fabricatedBearer JWT / API key
POST/api/v1/keysCreate an API key with read and/or jobs:write scopes; returns the full key ONCEBearer JWT (admin)
GET/api/v1/keysList this tenant's API keys (prefixes/scopes/usage — never the secret)Bearer JWT (admin)
DELETE/api/v1/keys/{id}Revoke an API key (immediate)Bearer JWT (admin)
POST/api/v1/webhooksRegister a webhook (events: complaint.sealed, job.sealed); returns the signing secret ONCEBearer JWT (admin)
GET/api/v1/webhooksList this tenant's webhooks (URL/events/status — never the secret)Bearer JWT (admin)
DELETE/api/v1/webhooks/{id}Delete a webhook (immediate; cascades its delivery log)Bearer JWT (admin)

Every record created through the API is cryptographically sealed with SHA-256 hash chains. The /verify-chain endpoint allows any third party to independently verify record integrity without authentication.

Ready to integrate?

Schedule a technical walkthrough with our team to discuss your integration requirements.

Schedule Technical Demo