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/plansList 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
| Field | Type | Description |
|---|---|---|
id | string | Plan id. Use it as planId. |
name, slug, description | string | Display name, short identifier, description. |
cpuCores | number | vCPU cores. |
ramMb | number | Memory in MB. |
diskGb | number | Disk in GB. |
bandwidthGb | number | null | Monthly traffic allowance in GB. |
networkType | string | shared or dedicated. |
type | string | Plan family, for example linux or windows. An upgrade must stay in the same family. |
osTemplates | string[] | Operating systems for this plan, as <osType>-<osVersion>. |
features | string[] | null | Feature tags. |
maxSnapshots | number | Snapshots a server on this plan may keep. 0 means snapshots are not available. |
stock | number | null | Units left, or null for no limit. |
isPopular | boolean | Highlighted in the dashboard. |
regionId, region | string, object | Where servers on this plan run. |
priceMonthly | string | Public list price for one month, in Rupiah (decimal string). |
priceHourly | string | null | Hourly list price, when the plan has one. |
discount3month, discount6month, yearlyDiscount | number | Percent off the list price when you pay 3, 6 or 12 months at once. |
effectiveMonthly | number | What your account pays per month, in Rupiah. |
pricingSource | string | list for the public price, reseller-account or reseller-default for a negotiated reseller price. |
pricingDiscountPercent | number | Reseller discount applied to effectiveMonthly, or 0. |
providerCode | number | Opaque 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,discount6monthoryearlyDiscount). One month never has a discount through the API. - Reseller accounts see their negotiated monthly price in
effectiveMonthly, whilepriceMonthlystays 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 entry | osType | osVersion |
|---|---|---|
ubuntu-24.04 | ubuntu | 24.04 |
debian-12 | debian | 12 |
An unknown combination is refused with 400 REQUEST_ERROR before anything is charged.