Docs

Carbon Tracking API

The Env Carbon Tracking API allows you to measure, monitor, and analyze your organization's greenhouse gas emissions in real-time. It supports Scope 1, 2, and 3 emissions tracking with automated data ingestion and AI-powered insights.

Overview

All API requests should be made to the base endpoint:

Base URL
https://api.env.io/v2

The API uses standard HTTP methods, JSON payloads, and returns status codes following REST conventions. All dates are in ISO 8601 format, and emission values are returned in kilograms of CO₂ equivalent (kgCO₂e).

Authentication

Authenticate your requests using Bearer tokens in the Authorization header. You can generate API keys from your Env Dashboard.

Example Request
curl -X GET https://api.env.io/v2/emissions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"

Endpoints

Retrieve Emissions Data

GET /emissions
GET /emissions?start_date=2024-01-01&end_date=2024-12-31&scope=1,2,3

Returns a paginated list of emission records within the specified timeframe. Filter by scope, facility ID, or emission category.

Submit Emission Records

POST /emissions
{
"facility_id": "fac_8x92m1", "scope": 2, "category": "electricity", "value": 1450.5, "unit": "kgCO2e", "timestamp": "2024-11-15T14:30:00Z", "metadata": { "meter_id": "MTR-0042", "source": "iot_sensor" } }

Parameters

Parameter Type Required Description
facility_id string Required Unique identifier for the facility or asset.
scope integer Required Emission scope: 1, 2, or 3.
category string Optional Source category: electricity, natural_gas, fuel, waste, etc.
value number Required Emission amount in kgCO₂e.
start_date string (date) Optional Filter results from this ISO date.

Response Format

Successful requests return a 200 OK status with a JSON payload containing the requested data. Pagination is handled via cursor tokens.

Success Response (200)
{
"data": [
{
"id": "em_9x72k1", "facility_id": "fac_8x92m1", "scope": 2, "category": "electricity", "value": 1450.5, "unit": "kgCO2e", "timestamp": "2024-11-15T14:30:00Z" }
], "pagination": { "next_cursor": "eyJpZCI6ImVtXzlxNzJrMSJ9", "has_more": true } }

Rate Limits

The API enforces the following rate limits to ensure platform stability:

  • Standard Tier: 100 requests/minute
  • Enterprise Tier: 1,000 requests/minute
  • Webhook Callbacks: 50/minute per endpoint

Rate limit headers are included in every response:

Response Headers
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 942
X-RateLimit-Reset: 1700000000

Error Handling

The API uses conventional HTTP status codes to indicate success or failure. Errors return a structured JSON body with a machine-readable code and human-readable message.

Status Code Description
400 INVALID_PAYLOAD Malformed request body or missing required fields.
401 UNAUTHORIZED Missing or invalid API key.
403 FORBIDDEN Insufficient permissions for the requested resource.
429 RATE_LIMITED Too many requests. Retry after X-RateLimit-Reset.