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:
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.
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?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
{
"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.
{
"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:
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. |