Node.js client library for the VoltTime Cloud API.
npm install
npm run buildimport { VoltTimeClient } from './dist/index.js';
const client = new VoltTimeClient({
apiKey: 'your-api-key-here'
});const user = await client.getCurrentUser();
console.log(user);const user = await client.getUserDetails('user-id');
console.log(user);const sites = await client.getSites({
page: 1,
per_page: 20
});
console.log(sites.data);
console.log(`Total: ${sites.meta.per_page}`);const site = await client.getSite('site-uuid');
console.log(site);const chargers = await client.getChargers({
page: 1,
per_page: 20
});
console.log(chargers.data);const charger = await client.getCharger('charger-uuid');
console.log(charger);const transactions = await client.getTransactionsBySite(
'site-uuid',
{
page: 1,
per_page: 50
}
);
console.log(transactions.data);// Automatically fetch all pages
const allTransactions = await client.getAllTransactionsBySite('site-uuid');
console.log(`Total transactions: ${allTransactions.length}`);
const totalKwh = allTransactions.reduce(
(sum, tx) => sum + parseFloat(tx.total_kwh),
0
);
console.log(`Total energy: ${totalKwh.toFixed(2)} kWh`);const tariffs = await client.getTariffs('BE'); // Location code
console.log(`Found ${tariffs.length} tariffs`);
tariffs.forEach((tariff) => {
console.log(`${tariff.timestamp}: €${tariff.price} (${tariff.type})`);
});const providers = await client.getProviders();
console.log(`Found ${providers.length} providers`);
providers.forEach((provider) => {
console.log(`${provider.name}: ${provider.websocket_url}`);
});const products = await client.getProducts();
console.log(`Found ${products.length} products`);
products.forEach((product) => {
console.log(`${product.name} (${product.sku}): €${product.price}`);
});const powerUsage = await client.getConnectorPowerUsage(
'charger-uuid',
1 // connector ID
);
console.log(`Power: ${powerUsage.kW} kW`);
console.log(`L1: ${powerUsage.L1} A`);
console.log(`L2: ${powerUsage.L2} A`);
console.log(`L3: ${powerUsage.L3} A`);const meterValue = await client.getConnectorLatestMeterValue(
'charger-uuid',
1 // connector ID
);
console.log(`Connector ID: ${meterValue.connectorId}`);
const latest = meterValue.meterValue[0];
console.log(`Timestamp: ${latest.timestamp}`);
latest.sampledValue.forEach((sv) => {
console.log(`${sv.measurand}: ${sv.value} ${sv.unit || ''}`);
});For backward compatibility, these aliases are available:
// Same as getChargers()
const chargePoints = await client.getChargePoints();
// Same as getCharger()
const chargePoint = await client.getChargePoint('charger-uuid');import { VoltTimeAPIError } from './dist/index.js';
try {
const user = await client.getCurrentUser();
} catch (error) {
if (error instanceof VoltTimeAPIError) {
console.error(`API Error: ${error.message}`);
console.error(`Status Code: ${error.statusCode}`);
console.error(`Response:`, error.responseData);
} else {
console.error('Unexpected error:', error);
}
}Create a .env file for your API key:
VOLTTIME_API_KEY=your-api-key-hereThen run:
node dist/example.jsnew VoltTimeClient(config: VoltTimeConfig)config.apiKey(required): Your VoltTime API keyconfig.baseUrl(optional): Custom API base URL (defaults tohttps://app.plugchoice.com/api/v3)
User
getCurrentUser(): Promise<User>getUserDetails(userId: string): Promise<User>
Sites
getSites(params?: PaginationParams): Promise<PaginatedResponse<Site>>getSite(siteUuid: string): Promise<Site>
Chargers
getChargers(params?: PaginationParams): Promise<PaginatedResponse<Charger>>getCharger(chargerUuid: string): Promise<Charger>
Transactions
getTransactionsBySite(siteUuid: string, params?: TransactionParams): Promise<PaginatedResponse<Transaction>>getAllTransactionsBySite(siteUuid: string, params?: TransactionParams): Promise<Transaction[]>
Tariffs
getTariffs(location: string): Promise<Tariff[]>
Providers
getProviders(): Promise<Provider[]>
Products
getProducts(): Promise<Product[]>
Connectors
getConnectorPowerUsage(chargerUuid: string, connectorId: number): Promise<ConnectorPowerUsage>getConnectorLatestMeterValue(chargerUuid: string, connectorId: number): Promise<ConnectorMeterValue>
Legacy Aliases
getChargePoints(params?: PaginationParams): Promise<PaginatedResponse<ChargePoint>>getChargePoint(chargePointId: string): Promise<ChargePoint>
See src/types.ts for full type definitions including:
User,Site,Charger,TransactionTariff,Provider,ProductConnectorPowerUsage,ConnectorMeterValue,SampledValue,MeterValuePaginatedResponse<T>,PaginationParams,TransactionParams
See example.ts for a complete working example demonstrating all endpoints.
MIT