User / getBillingStats
TypeScript
Retrieve stats for used resources in the specified billing cycle. All costs are specified in USD.
Request parameters
{
/** Month to fetch. Defaults to the current billing cycle. */
billingCycle?: {
year: number,
month: 'JAN' | 'FEB' | 'MAR' | 'APR' | 'MAY' | 'JUN' | 'JUL' | 'AUG' | 'SEP' | 'OCT' | 'NOV' | 'DEC'
},
/**
* Identifiers of models, datasets or persistent launchers. Will only include data from these resources. If
* unspecified, all data will be included.
*/
resources?: string[]
}
Response
{
/** If successful. One of "result" and "error" will be present. */
result?: {
year: number,
month: 'JAN' | 'FEB' | 'MAR' | 'APR' | 'MAY' | 'JUN' | 'JUL' | 'AUG' | 'SEP' | 'OCT' | 'NOV' | 'DEC',
totalCost: number,
perDay: {
day: number,
models: {
statesMebibyteMinutes: number,
statesCost: number,
filesystemsMebibyteMinutes: number,
filesystemsCost: number,
evaluations: {
amount: number,
baseCost: number,
inputData: {
bytes: number,
cost: number
},
outputData: {
bytes: number,
cost: number
},
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
},
createStates: {
amount: number,
baseCost: number,
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
},
trainingSessions: {
amount: number,
baseCost: number,
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
},
terminals: {
amount: number,
baseCost: number,
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
},
spawnedCommands: {
amount: number,
baseCost: number,
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
},
debugSessions: {
amount: number,
baseCost: number,
launchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
},
operations: {
amount: number,
baseCost: number,
evaluateInputData: {
bytes: number,
cost: number
},
evaluateOutputData: {
bytes: number,
cost: number
}
}
}
},
datasets: {
dataMebibyteMinutes: number,
dataCost: number
},
persistentLaunchers: {
duringWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
},
afterWarmup: {
cpuCoreMinutes: number,
cpuCost: number,
memoryMebibyteMinutes: number,
memoryCost: number,
diskMebibyteMinutes: number,
diskCost: number
}
}
}[]
},
/** If failed */
error?: {
code: 'bad_credentials' | 'too_many_requests' | 'payment_required' | 'unknown'
} | {
code: 'invalid_parameter',
parameterName: string,
reason: string
}
}
Example
Following the installation guide to setup the Decthings API for TypeScript. Add your parameters to the following code and run it in Node.js, or in a browser by using a bundler.
The code reads your API key from file. Create an API key and save it to the file "auth.txt". Keep your key safe!
import * as fs from 'fs'
import { DecthingsClient } from '@decthings/api-client'
let apiKey = fs.readFileSync('./auth.txt').toString().trim()
let client = new DecthingsClient({ apiKey })
async function main() {
try {
let response = await client.user.getBillingStats()
if (result.error) {
// Decthings sent us an error
console.log(response.error)
} else {
// Success!
console.log(response.result)
}
}
catch (e) {
// Client throws an error on connection issues. The function may or may not have succeded
console.log(e)
}
}
main()