Official SDK
Node.js SDK
Official Node.js SDK for ZeroCarbon API. Build powerful carbon tracking applications with TypeScript support.
npm install @zerocarbon/sdk
View on GitHubInstallation
Install via npm, yarn, or pnpm
npm
npm i zerocarbon-nodejs-sdkyarn
yarn add @zerocarbon/sdkpnpm
pnpm add @zerocarbon/sdkQuick Start
Initialize the SDK and start tracking emissions
Initialize the Client
import { ZeroCarbon } from '@zerocarbon/sdk';
// Initialize with your API key
const client = new ZeroCarbon({
apiKey: process.env.ZEROCARBON_API_KEY
});Submit Emissions Data
// Submit electricity usage
const emission = await client.emissions.submit({
scope: 1,
source: 'electricity',
value: 1500,
unit: 'kWh',
activity_date: '2026-01-07',
location: 'Mumbai, India'
});
console.log(`Emission recorded: ${emission.value_tco2e} tCO2e`);API Reference
Complete list of available methods
Emissions
client.emissions.submit(data)
Submit new emissions data
Parameters:
scope- Emission scope (1, 2, or 3)source- Emission source (electricity, gas, etc.)value- Activity valueunit- Unit of measurementactivity_date- Date of activity (YYYY-MM-DD)location- Location (optional)
client.emissions.list(options)
Retrieve emissions data
Options:
start_date- Start date filterend_date- End date filterscope- Filter by scope
client.emissions.get(id)
Get a specific emission by ID
Analytics
client.analytics.get()
Get comprehensive emissions analytics
client.analytics.byScope()
Get emissions breakdown by scope
client.analytics.trend(period)
Get emissions trend over time
More Examples
Common use cases and patterns
Bulk Submit
const emissions = await Promise.all([
client.emissions.submit({
scope: 1,
source: 'electricity',
value: 1500,
unit: 'kWh'
}),
client.emissions.submit({
scope: 2,
source: 'travel',
value: 250,
unit: 'km'
})
]);Error Handling
try {
const emission = await client
.emissions.submit(data);
console.log('Success:', emission);
} catch (error) {
if (error.code === 'RATE_LIMIT') {
console.log('Rate limit exceeded');
}
console.error(error);
}Get Analytics
const analytics = await client
.analytics.get();
console.log(`Total: ${
analytics.total_emissions
} tCO2e`);
console.log(`By Scope:`,
analytics.by_scope
);Filter by Date Range
const emissions = await client
.emissions.list({
start_date: '2026-01-01',
end_date: '2026-01-31',
scope: 1
});
console.log(`Found ${
emissions.length
} emissions`);TypeScript Support
Fully typed with IntelliSense support
import {
ZeroCarbon,
EmissionData,
EmissionResponse
} from '@zerocarbon/sdk';
const client = new ZeroCarbon({
apiKey: process.env.ZEROCARBON_API_KEY
});
const data: EmissionData = {
scope: 1,
source: 'electricity',
value: 1500,
unit: 'kWh',
activity_date: '2026-01-07'
};
const response: EmissionResponse =
await client.emissions.submit(data);Need Help?
Check out our full API documentation or reach out to our support team
