JavaScript SDK
Official JavaScript/TypeScript client for the emissions.dev API.
Installation
npm install @emissions-dev-api/sdk
Quick Start
import { EmissionsClient } from '@emissions-dev-api/sdk';
const client = new EmissionsClient({
apiKey: process.env.EMISSIONS_API_KEY
});
const result = await client.freight.calculate({
origin_country: 'GB',
destination_country: 'FR',
weight: 1000
});
console.log(result.data.attributes.emissions.co2e);
Configuration
const client = new EmissionsClient({
apiKey: 'em_live_xxxx',
baseUrl: 'https://api.emissions.dev/v1', // Default
timeout: 30000, // Request timeout in ms
retries: 3, // Number of retries
});
Freight API
const result = await client.freight.calculate({
origin_country: 'GB',
destination_country: 'DE',
origin_location: 'London',
destination_location: 'Berlin',
weight: 5000,
transport_mode: 'road',
equivalents: true
});
Travel API
const result = await client.travel.calculate({
origin_country: 'GB',
destination_country: 'FR',
origin_location: 'London',
destination_location: 'Paris',
transport_mode: 'flight',
cabin_class: 'business',
passengers: 2,
return_trip: true
});
Hotel API
// Calculate emissions
const result = await client.hotel.calculate({
country: 'GB',
nights: 3,
rooms: 1
});
// Get all factors
const factors = await client.hotel.factors();
// Compare countries
const comparison = await client.hotel.compare({
countries: ['GB', 'FR', 'DE', 'ES'],
nights: 5
});
Error Handling
import {
EmissionsClient,
UnauthorizedError,
ValidationError,
RateLimitError
} from '@emissions-dev/sdk';
try {
const result = await client.freight.calculate({ ... });
} catch (error) {
if (error instanceof UnauthorizedError) {
console.error('Invalid API key');
} else if (error instanceof ValidationError) {
console.error('Validation error:', error.field, error.message);
} else if (error instanceof RateLimitError) {
console.error('Rate limited. Retry after:', error.retryAfter);
}
}
TypeScript Support
Full type definitions are included:
import {
EmissionsClient,
FreightCalculationParams,
FreightEmissionResponse
} from '@emissions-dev/sdk';
const params: FreightCalculationParams = {
origin_country: 'GB',
destination_country: 'FR',
weight: 1000
};
const result: FreightEmissionResponse = await client.freight.calculate(params);