HelipodDocs

Plans

List VPS plans with their specs, operating systems and the price your account pays.

A plan fixes the size of a server (CPU, RAM, disk, traffic), its region and its price. You need a plan id to create a server and to upgrade one.

List plans

GET/vps/plans
List the plans on sale, priced for the key owner.

Query parameters

Prop

Type

curl "https://api.helipod.io/api/vps/plans" \
  -H "Authorization: Bearer hel_your_key"

Response

{
  "success": true,
  "data": [
    {
      "id": "4db565ff-782f-46c8-9324-e4670517233f",
      "name": "VPS S - Jakarta",
      "slug": "vps-s-jkt",
      "description": "2 vCPU, 2 GB RAM for small apps",
      "cpuCores": 2,
      "ramMb": 2048,
      "diskGb": 40,
      "bandwidthGb": 512,
      "networkType": "shared",
      "type": "linux",
      "osTemplates": ["ubuntu-24.04", "ubuntu-22.04", "debian-12"],
      "features": ["root_access"],
      "maxSnapshots": 2,
      "stock": null,
      "isPopular": true,
      "sortOrder": 1,
      "regionId": "2b1e4c7a-5d3f-4e8a-9b6c-1d2e3f4a5b6c",
      "priceMonthly": "64900.00",
      "priceHourly": null,
      "discount3month": 5,
      "discount6month": 10,
      "yearlyDiscount": 15,
      "effectiveMonthly": 64900,
      "pricingSource": "list",
      "pricingDiscountPercent": 0,
      "providerCode": 2,
      "region": {
        "id": "2b1e4c7a-5d3f-4e8a-9b6c-1d2e3f4a5b6c",
        "name": "Jakarta",
        "description": "Indonesia",
        "code": "jakarta",
        "sortOrder": 1,
        "isActive": true
      }
    }
  ]
}

Plans are sorted by sortOrder.

Plan fields

FieldTypeDescription
idstringPlan id. Use it as planId.
name, slug, descriptionstringDisplay name, short identifier, description.
cpuCoresnumbervCPU cores.
ramMbnumberMemory in MB.
diskGbnumberDisk in GB.
bandwidthGbnumber | nullMonthly traffic allowance in GB.
networkTypestringshared or dedicated.
typestringPlan family, for example linux or windows. An upgrade must stay in the same family.
osTemplatesstring[]Operating systems for this plan, as <osType>-<osVersion>.
featuresstring[] | nullFeature tags.
maxSnapshotsnumberSnapshots a server on this plan may keep. 0 means snapshots are not available.
stocknumber | nullUnits left, or null for no limit.
isPopularbooleanHighlighted in the dashboard.
regionId, regionstring, objectWhere servers on this plan run.
priceMonthlystringPublic list price for one month, in Rupiah (decimal string).
priceHourlystring | nullHourly list price, when the plan has one.
discount3month, discount6month, yearlyDiscountnumberPercent off the list price when you pay 3, 6 or 12 months at once.
effectiveMonthlynumberWhat your account pays per month, in Rupiah.
pricingSourcestringlist for the public price, reseller-account or reseller-default for a negotiated reseller price.
pricingDiscountPercentnumberReseller discount applied to effectiveMonthly, or 0.
providerCodenumberOpaque infrastructure code. Treat it as an identifier only; it carries no meaning you need to act on.

How prices work

  • Regular accounts pay the list price. A period of several months costs priceMonthly × months, minus the plan's discount for that period (discount3month, discount6month or yearlyDiscount). One month never has a discount through the API.
  • Reseller accounts see their negotiated monthly price in effectiveMonthly, while priceMonthly stays the public list price, so the difference is your margin. A reseller price is not combined with the plan's period discount.

For an exact quote on an existing server, use GET /vps/:id/renewal-options: it uses the same calculation as the charge.

Choosing the operating system

Every entry in osTemplates is <osType>-<osVersion>. When you create or reinstall a server, send the two halves separately; they are joined with a hyphen and must match an available image:

osTemplates entryosTypeosVersion
ubuntu-24.04ubuntu24.04
debian-12debian12

An unknown combination is refused with 400 REQUEST_ERROR before anything is charged.

On this page