Public Price API
Use these endpoints to show Hippius prices in your own app, a cost calculator or a comparison page, without an account or a token. They return the prices in force now, the same ones the console and hippius.com/pricing show. Nothing in them depends on who asks.
Endpoints
All are GET on https://api.hippius.com, with no authentication.
| Endpoint | What it returns | Amounts in |
|---|---|---|
/api/compute/public-prices/ | Everything compute sells: VM sizes per disk tier, dedicated disks, public IPv4, backups, managed database and Kubernetes fees, runners, bandwidth | Credits, decimal strings |
/api/compute/flavors/ | VM sizes with their monthly price on NVMe | Credits, numbers |
/api/cdn/prices/ | CDN egress per region, requests, custom domains | Base units, strings |
/api/s3/plans/ | S3 plans and the pay-as-you-go rate | Credits, numbers |
/api/drive/plans/ | Drive plans, monthly and annual | Credits, numbers |
/api/registry/plans/ | Hub plans, with the id that subscribing needs | Credits, numbers |
One credit is one US dollar. The CDN list is in base units: divide by 1018 to get credits.
Get the Compute Price List
curl -s https://api.hippius.com/api/compute/public-prices/
A trimmed response (one tier, one size per list):
{
"currency": "credits",
"hours_per_month": 730,
"os_disk_tiers": [
{
"tier": "nvme",
"name": "NVMe",
"disk_gb": { "hourly": "0.000136986301369863", "monthly": "0.10" },
"max_flavor": null,
"flavors": [
{ "code": "small", "name": "Small", "vcpus": 1, "memory_mb": 4096, "disk_gb": 40,
"available": true, "hourly": "0.043835616438356164", "monthly": "32.00" }
]
}
],
"dedicated_disks": [
{ "tier": "hdd", "name": "HDD", "gib_hourly": "0.000003344392123287",
"tib_monthly": "2.50", "min_size_gb": 1000, "max_per_vm": 8 }
],
"public_ip": { "price": { "hourly": "0.005", "monthly": "3.65" },
"free": false, "free_until": null, "after_free": null },
"backup_storage": { "free": false, "gb_hourly": "0.000008219178082191",
"tb_monthly": "6.00", "max_disk_gb": 0 },
"managed_database": { "fee_percent": "25", "fee_in_force": true, "ha_instances": 3,
"sizes": { "s": "small", "m": "medium", "l": "large", "xl": "xlarge" } },
"managed_kubernetes": { "cluster_fee": { "hourly": "0.020547945205479452", "monthly": "15.00" },
"cluster_fee_in_force": true, "control_plane_nodes": 3,
"control_plane_sizes": { "s": "medium", "m": "large", "l": "xlarge" } },
"runners": [
{ "size": "small", "label": "hippius-small", "vcpus": 1, "memory_mb": 4096, "disk_gb": 20,
"hourly": "0.041095890410958904", "monthly": "30.00" }
],
"bandwidth_per_gb": "0",
"bandwidth_by_region": {
"FR": { "unlimited": true, "included_bytes_per_month": null, "overage_per_gb": "0", "cap_mbps": {} },
"AU": { "unlimited": false, "included_bytes_per_month": "1000000000000", "overage_per_gb": "0", "cap_mbps": {} }
}
}
Reading the Fields
- Amounts are decimal strings in credits. Parse them with a decimal type, not a float.
hourlyis exact;monthlyishourly×hours_per_month(730), rounded to the cent. os_disk_tierslists the boot-disk tiers you can launch on now (nvme,ssd,hdd), each with its sizes priced on that tier and the disk's own rate per GB (disk_gb).max_flavoris the largest size the tier allows, set onhddonly.dedicated_disksare extra whole disks attached to a VM, priced per TiB-month, frommin_size_gband up tomax_per_vmper VM.managed_databasecosts its VMs plusfee_percent; an HA database runsha_instancesVMs.managed_kubernetescosts its VMs pluscluster_fee, withcontrol_plane_nodescontrol-plane VMs.sizesmap each size to the VM size it runs on.bandwidth_by_regionis outbound traffic per region.included_bytes_per_monthis a byte count as a string, null whenunlimited. Inbound traffic is free.backup_storage.max_disk_gbis the largest VM disk backups are sold for;0means no limit.
A price the catalogue does not have yet is null, never 0. dedicated_disks is null while none are sold. In public_ip, free_until and after_free are null outside a free period. Show "not available", not "$0".
Caching and Rate Limits
The anonymous responses carry Cache-Control: public and Vary: Authorization. max-age is 60 seconds, 300 on /api/compute/flavors/. The server rebuilds each list at most once a minute (the Hub plans every five minutes), so polling faster gets you nothing new.
/api/compute/public-prices/, /api/compute/flavors/ and /api/cdn/prices/ allow 300 anonymous requests per minute per client address. Past that they answer 429 with a Retry-After header. /api/cdn/prices/ answers 503 while the CDN is switched off.
The compute price list, the CDN prices, the S3 plans and the Hub plans ignore any Authorization header: everyone gets the same body. /api/compute/flavors/ and /api/drive/plans/ answer a signed-in caller for that account, without the cache headers: the flavors add default_image, and the Free Drive plan shows available: false for an account made with an access key.
Related
- Hippius Management API: tokens, billing and compute with an access token
- Compute: quotas, the balance requirement and how VMs are billed
- CDN: zones, custom domains and CDN billing