Skip to main content

Client Setup

import { DefaultApi, Configuration } from '@baselinehq/pricingapi-client-typescript';
import type {
  GithubComBaselinehqGolangSharedTypesInstance,
  GithubComBaselinehqGolangSharedTypesVM,
  TypesDisk,
} from '@baselinehq/pricingapi-client-typescript';

const token = process.env.COSTGRAPH_API_KEY;

const config = new Configuration({
  basePath: 'https://pricing.baselinehq.cloud',
  apiKey: (name: string) => (name === 'X-API-Key' ? token : undefined),
});

const client = new DefaultApi(config);

Compute Pricing

const vm: GithubComBaselinehqGolangSharedTypesVM = {
  cpu_cores: 2,
  ram_gb: 2,
};

const instance: GithubComBaselinehqGolangSharedTypesInstance = {
  region: 'nyc1',
  instance_type: 's-2vcpu-2gb',
  usage_type: 'ONDEMAND',
  provider: 'DigitalOcean',
  operating_system: 'linux',
  service: 'Droplet',
  availability_zone: '',
  vm,
};

const pricing = await client.pricingComputePost({ instance });
console.log(JSON.stringify(pricing.data, null, 2));

Recommendations

const vm: GithubComBaselinehqGolangSharedTypesVM = {
  cpu_cores: 4,
  ram_gb: 16,
};

const instance: GithubComBaselinehqGolangSharedTypesInstance = {
  region: 'nyc1',
  instance_type: 's-4vcpu-16gb-amd',
  usage_type: 'ondemand',
  provider: 'digitalocean',
  operating_system: 'linux',
  service: 'Droplet',
  availability_zone: '',
  vm,
};

const recommendations = await client.recommendationsComputePost({ instance });
console.log(JSON.stringify(recommendations.data, null, 2));

Providers

const providers = await client.providersGet();
console.log(JSON.stringify(providers.data, null, 2));

Disk Pricing

const disk: TypesDisk = {
  provider: 'AWS',
  service: 'AmazonEBS',
  region: 'us-east-1',
  type: 'gp3',
  usage_type: 'ONDEMAND',
  capacity_gb: 100,
};

const diskPricing = await client.pricingDisksPost(disk);
console.log(JSON.stringify(diskPricing.data, null, 2));

Disk Recommendations

const disk: TypesDisk = {
  provider: 'AWS',
  service: 'AmazonEBS',
  region: 'us-east-1',
  type: 'gp3',
  usage_type: 'ONDEMAND',
  capacity_gb: 100,
};

const diskRecommendations = await client.recommendationsDisksPost({ instance: disk });
console.log(JSON.stringify(diskRecommendations.data, null, 2));