Home/Offers/Agriculture & Environment/Environmental Compliance Monitoring API

Agriculture & Environment

Environmental Compliance Monitoring API

Most environmental breaches are not deliberate. They happen because a limit was approaching, the data to see it was in four systems, and the person responsible found out after the reporting deadline.

  • Industrial compliance teams
  • Environmental consultancies
  • EHS software vendors
  • Waste and water operators
  • Sustainability reporting teams

What your customers would see

example interface
Mockup of the Compliance Monitor interfaceehs.youroperator.com/site-0042PlatformOverviewConditionsHeadroomExceedancesDeadlinesSettingsCompliance MonitorASSIST ONLYAccountCONDITIONS23▲ +1AT WARNING4▲ +2DATA GAPS2▲ +2NEXT DEADLINE15 DecPermit conditions by headroomupdated 2 min agoAllWarningRolling capsMonthlyData gapsCONDITIONPARAMETERHEADROOMEXHAUSTSSTATUSDC/1189/L4Total nitrogen5.6%this monthwarningEP/4471/C2.3NOx16.1%Mar 2027warningEP/4471/C2.7Particulates44.2%beyond periodokWL/0772/T2Hazardous waste28.0%Aug 2027okDC/1189/L9Suspended solids—insufficient datadata gap

MockupIllustrative mockup of the interface we would build. Figures shown are examples, not results from a live deployment.

The problem this solves

Environmental compliance generates an unusual amount of arithmetic. A site may hold a discharge consent with monthly load limits, an emissions permit with rolling annual caps, a waste licence with tonnage thresholds, and reporting duties to two or three authorities on different calendars. The underlying numbers come from continuous monitors, laboratory results, weighbridge tickets and manual logs, each in a different system with a different latency.

The work of pulling that together usually falls to a small compliance team with a spreadsheet, and the spreadsheet is reconstructed shortly before each submission. That process produces correct returns most of the time. What it does not produce is early warning. A rolling twelve-month cap that will be breached in March is visible in January to anyone doing the arithmetic continuously, and invisible to anyone doing it quarterly.

There is a clear boundary around what software should do here. Aggregating data, computing limits against the right averaging periods, tracking permit conditions and flagging approaching thresholds is all well-defined engineering. Deciding what is reportable, signing a return and standing behind it is the operator's legal duty. A system that blurs that line creates a worse risk than the one it solves.

Who buys this

Industrial compliance teams, Environmental consultancies, EHS software vendors, Waste and water operators, Sustainability reporting teams

What the API returns

What comes back

  • Emissions and discharge aggregation across sources, parameters and sites
  • Limit calculation against the correct averaging period for each permit condition
  • Headroom tracking — how much is left against each cap and when it runs out
  • Threshold and trajectory alerts ahead of a projected exceedance
  • Permit condition register with renewal and variation deadlines
  • Exceedance records with supporting data for incident documentation
  • Reporting period summaries prepared for the operator's own review and submission
  • Data completeness and monitor availability tracking per parameter

Endpoints

MethodPathReturns
POST/v1/measurements/ingestPush monitor, laboratory or manual measurement data
GET/v1/sites/{id}/complianceCurrent compliance position across all permit conditions
GET/v1/sites/{id}/headroomRemaining headroom and projected exhaustion by cap
GET/v1/permits/{id}/conditionsPermit condition register with deadlines
GET/v1/exceedancesRecorded exceedances with supporting measurement data
WS/v1/streamPush threshold, trajectory and completeness alerts

Request and response

illustrative

Request

{
  "site_id": "site_0042",
  "period": { "from": "2026-01-01", "to": "2026-10-22" },
  "include": ["headroom", "projections", "completeness"]
}

Response

{
  "site_id": "site_0042",
  "evaluated_at": "2026-10-22T06:00:00Z",
  "conditions": [
    {
      "condition_ref": "EP/4471/C2.3",
      "parameter": "NOx",
      "limit": 480.0,
      "unit": "t",
      "averaging_period": "rolling_12_month",
      "current_value": 402.6,
      "headroom": 77.4,
      "headroom_pct": 16.1,
      "projected_exhaustion": "2027-03-11",
      "status": "warning",
      "basis": "Continuous monitor, 98.2% data availability"
    },
    {
      "condition_ref": "DC/1189/L4",
      "parameter": "total_nitrogen_load",
      "limit": 12.5,
      "unit": "t/month",
      "averaging_period": "calendar_month",
      "current_value": 11.8,
      "headroom": 0.7,
      "status": "warning",
      "basis": "Laboratory composite samples, 2 of 9 scheduled samples outstanding"
    }
  ],
  "deadlines": [
    { "type": "annual_return", "authority": "regulator", "due": "2027-01-31", "status": "not_started" },
    { "type": "permit_variation", "ref": "EP/4471", "due": "2026-12-15", "status": "in_progress" }
  ],
  "completeness": { "parameters_tracked": 23, "below_required_availability": 2 },
  "disclaimer": "Aggregation and alerting only. Reporting determinations and submissions remain the operator's legal responsibility."
}

Where the data comes from

Your continuous monitoring systemsStack monitors, flow meters and effluent analysers, usually reached through a SCADA historian or a monitor vendor's platform
Laboratory resultsAnalytical results for sampled parameters, arriving by portal, file or LIMS integration with real latency that affects the compliance position
Weighbridge and manual recordsWaste tonnages, fuel consumption and operator logs, which are frequently the least structured and most error-prone input
Permit documentsYour own permits, consents and licences. The conditions have to be captured as structured rules, which means careful reading and review rather than automated extraction alone
Published regulatory registersPublic permit and enforcement registers, useful for cross-checking the condition register against the authority's own record
Emission factor referencesPublished factors where a parameter is calculated rather than measured, cited so a calculation can be traced
On data licensing. Being allowed to read a dataset does not automatically mean you may redistribute it, resell it through an API, or train a model on it. Before any build starts we check the licence, terms and derived-data rules of every source, and we design around the ones that do not permit your intended use. Where a commercial licence is required, that cost is identified during discovery rather than discovered later.

The intelligence layer

The difference between a demo and a service is mostly in this section. These are the parts that keep the answer trustworthy once real traffic is hitting it.

  • Permit conditions encoded as explicit, reviewable rules — limit, parameter, averaging period, exclusions — with every rule signed off by the compliance team before it goes live, because a misencoded condition produces confident wrong answers
  • Correct averaging period arithmetic, which sounds trivial and is where most spreadsheet errors live: rolling windows, calendar periods, percentile limits and permitted exclusions all behave differently
  • Trajectory projection from the rate of accumulation against each cap, so a rolling annual limit that will be exhausted in March is flagged in January
  • Data completeness tracked per parameter against the availability the permit itself requires, since insufficient monitoring data is often a breach in its own right
  • Substitution rules for monitor downtime applied as the permit specifies, rather than by a generic gap-filling method that would not survive regulatory scrutiny
  • Full audit trail on every figure, from the raw reading through each transformation to the aggregate, because an aggregate a compliance officer cannot trace back is unusable in an inspection
  • Reconciliation between calculated and measured values where both exist, flagging divergence rather than silently preferring one
  • Validation of the encoded rules against historical periods with known outcomes, and alerting when a monitor's behaviour changes in a way that suggests drift or failure

What it changes for the business

Earlier warning

Trajectory alerts surface an approaching cap months before the reporting period closes.

Submission effort

Period summaries assembled continuously remove the reconstruction exercise before each return.

Audit readiness

A traceable path from raw reading to reported figure is what an inspection actually asks for.

Multi-site consistency

One encoded condition register means every site is assessed the same way.

How it fits into your product

How it embeds

  • Measurement ingestion from historians, LIMS, monitor vendor platforms and file drops
  • Condition register reviewed and approved by your compliance team, versioned when a permit varies
  • Alerts into the channels compliance teams actually watch — email, ticketing, the EHS platform
  • Period summaries exported for the operator's own review and submission, not auto-filed
  • Deployment inside your environment, which most industrial operators require for operational data
  • White-label delivery for EHS software vendors and consultancies serving multiple operators

Included in every build

  • Authentication, scoped API keys and per-customer rate limiting
  • Input validation with predictable, documented error responses
  • Versioned endpoints so your integration never breaks without notice
  • Request and response logging for audit and dispute resolution
  • Latency, error-rate and usage monitoring with alerting
  • OpenAPI specification, sandbox environment and client examples
  • Backups, failover design and a documented recovery procedure
  • An agreed support arrangement once the service is live

How we would build it

about 12 weeks
1

Discovery and data review

Weeks 1–2

We agree the exact question the API answers, review the sources you already hold, check what has to be licensed, and write down the response contract your developers will code against.

2

Architecture and prototype

Weeks 3–4

You get a written architecture plus a working endpoint on real data — narrow, but genuinely callable — so integration can be tested against something concrete rather than a document.

3

Production build

Weeks 5–10

Pipelines, models, storage, authentication, rate limiting, logging, tests and documentation. Security and observability are part of this phase, not a later one.

4

Integration and handover

Weeks 11–12

We support your engineers through their integration, run load tests at your expected volume, and agree how the service is monitored and supported once it is live.

Commercial models

There is no fixed price list, because the cost is driven by data complexity, integration count, model requirements, request volume and the support level you need. Scope is agreed in writing before development starts.

Fixed-scope prototype

A defined slice of the service, built and priced as one piece of work. The usual first step when the business case needs proving internally.

Fixed-price build

An agreed scope against a written architecture, delivered for an agreed price. Best when the requirements are already clear.

Build then retainer

We build the service, then operate and improve it under a monthly agreement covering monitoring, updates and model maintenance.

White-label product

The service runs under your brand, your domain and your pricing, with MLPivot invisible to your customers.

Questions buyers ask

Does this make us compliant?

No. It helps your compliance team see their position earlier and assemble returns with less effort. The legal obligations — determining what is reportable, deciding whether an event must be notified, signing and submitting a return — remain the operator's, and nothing in this system transfers or discharges them. We would build it to assist a compliance function, not to replace one, and the output says so explicitly.

Can you extract permit conditions automatically?

Partially, and we would not rely on it. Permits are written in prose with cross-references, exclusions and conditions that depend on operating state. Automated extraction gets a useful first pass and makes mistakes that are invisible until they matter. Every encoded condition goes to your compliance team for review and sign-off before it is used, and that review is part of the build rather than an optional step.

Will it file our returns with the regulator?

We would advise against building that, and we would say so rather than quietly implementing it. Automated submission of a regulatory return removes the human check at the point of greatest consequence. The system prepares the figures with a full audit trail; a named person reviews and submits. Where a regulator offers a machine submission interface we can prepare the payload, and the submission action stays manual.

What happens when a monitor fails?

Data availability is tracked per parameter against what the permit requires, and insufficient availability is itself flagged because in many permits it is a breach. Gaps are filled only by the substitution method the permit specifies — never by a generic interpolation, which would not survive an inspection. If the permit is silent, the gap is reported as a gap.

Can you cover permits across multiple jurisdictions?

Yes in structure, with the caveat that condition encoding is manual work per permit and regulatory reporting formats differ substantially between authorities. There is no shortcut that makes a Spanish discharge consent and an English environmental permit the same object. We would scope the encoding effort per site and per permit honestly rather than implying it scales for free.

Want this built for your platform?

Tell us what your product does today and what you want another system to be able to ask it. We will come back with an approach, a scope and a price.