Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.1.0
info:
title: Helipod VPS API
version: '2026-11-11'
description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-11: 15 operation(s) read from 11 public documentation page(s) (each
operation names its page in x-source). This is not the provider''s published contract; Helipod has published no machine-readable contract
that the pipeline could find. Engine: anthropic.'
x-evidence-tiers:
code-example: 37
documentation: 0
pages-with-code: 38
pages-read: 40
x-generated-from: documentation
x-provenance: generated
x-authored-by: API Evangelist
x-generated: '2026-11-11'
x-generator: generate-contract-from-docs.py
x-engine: anthropic
x-sources:
- https://docs.helipod.io/docs/vps-api/actions
- https://docs.helipod.io/docs/vps-api/backups
- https://docs.helipod.io/docs/vps-api/billing
- https://docs.helipod.io/docs/vps-api/errors
- https://docs.helipod.io/docs/vps-api/firewall
- https://docs.helipod.io/docs/vps-api/instances
- https://docs.helipod.io/docs/vps-api/migrate
- https://docs.helipod.io/docs/vps-api/plans
- https://docs.helipod.io/docs/vps-api/port-forwarding
- https://docs.helipod.io/docs/vps-api/snapshots
- https://docs.helipod.io/docs/vps-api/ssh
x-docs-section: vps-api
servers:
- url: https://api.helipod.io
paths:
/api${path}:
get:
operationId: get_api_path
tags:
- Api Path
summary: GET /api${path}
x-source: https://docs.helipod.io/docs/vps-api/errors
parameters:
- name: path
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: code-example
language: javascript
snippet: "fetch ( `https://api.helipod.io/api${path}` , { \n method, \n headers: { \n Authorization: `Bearer ${key}` , \n ... (body ?\
\ { 'Content-Type' : 'application/json' } : {})"
/api/backup/plans:
post:
operationId: post_api_backup_plans
tags:
- Api
summary: POST /api/backup/plans
x-source: https://docs.helipod.io/docs/vps-api/backups
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiBackupPlansRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/backup/plans -H \"Authorization: Bearer hel_your_key\" \n Copy Text { \n \"success\" : true\
\ , \n \"data\" : [ \n { \n \"code\" : \"BACKUP_30\" , \n \"name\" : \"Backup 30 GB\" , \n \"quotaBytes\" : 32212254720 , \n \"priceMonthly\"\
\ : 19900 , \n \"priceYearly\" : 199000 , \n \"keepDaily\" : 7 , \n \"keepWeekly\" : 4 , \n \"keepMonthly\" : 3 \n }, \n { \n \"code\"\
\ : \"BACKUP_60\" , \n \"name\" : \"Backup 60 GB\" , \n"
/api/vps:
patch:
operationId: patch_api_vps
tags:
- Api
summary: PATCH /api/vps
x-source: https://docs.helipod.io/docs/vps-api/instances
parameters:
- name: status
in: query
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchApiVpsRequest'
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl JavaScript Copy Text curl \"https://api.helipod.io/api/vps?status=running\" -H \"Authorization: Bearer hel_your_key\"\
\ \n Copy Text { \n \"success\" : true , \n \"data\" : [ \n { \n \"id\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\" , \n \"projectId\"\
\ : \"7c9e6679-7425-40de-944b-e07fc1f90ae7\" , \n \"name\" : \"web-1\" , \n \"status\" : \"running\" , \n \"publicIp\" : \"203.0.113.24\"\
\ , \n \"cpuCores\" : 2 , \n \"ramMb\" : 2048 , \n \"di"
post:
operationId: post_api_vps
tags:
- Api
summary: POST /api/vps
x-source: https://docs.helipod.io/docs/vps-api/instances
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVpsRequest'
responses:
'201':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVpsResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl JavaScript Copy Text curl -X POST https://api.helipod.io/api/vps -H \"Authorization: Bearer hel_your_key\" -H \"Content-Type:\
\ application/json\" -d '{ \n \"planId\": \"4db565ff-782f-46c8-9324-e4670517233f\", \n \"projectId\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\
, \n \"name\": \"web-1\", \n \"osType\": \"ubuntu\", \n \"osVersion\": \"24.04\", \n \"rootPassword\": \"Str0ng!Passw0rd\", \n \"billingPeriod\"\
: \"monthly\" \n }' \n "
/api/vps/${id}:
get:
operationId: get_api_vps_id
tags:
- Api
summary: GET /api/vps/${id}
x-source: https://docs.helipod.io/docs/vps-api/instances
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: code-example
language: javascript
snippet: "fetch ( `https://api.helipod.io/api/vps/${id}` , { \n headers: { Authorization: `Bearer ${key}` }, \n })"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/firewall:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_firewall
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/firewall
x-source: https://docs.helipod.io/docs/vps-api/firewall
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815FirewallRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/firewall -H \"Authorization: Bearer hel_your_key\"\
\ \n Copy Text { \n \"success\" : true , \n \"data\" : [ \n { \n \"id\" : \"9a2e7f10-3c4d-4e5f-8a9b-0c1d2e3f4a5b\" , \n \"Protocol\"\
\ : \"TCP\" , \n \"Port\" : \"22\" , \n \"CidrBlock\" : \"0.0.0.0/0\" , \n \"Action\" : \"ACCEPT\" , \n \"FirewallRuleDescription\"\
\ : \"SSH\" , \n \"isDefault\" : true , \n \"status\" : \"synce"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ports:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_ports
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ports
x-source: https://docs.helipod.io/docs/vps-api/port-forwarding
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815PortsRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ports -H \"Authorization: Bearer hel_your_key\" \n\
\ Copy Text { \n \"success\" : true , \n \"data\" : { \n \"portRange\" : { \"start\" : 20141 , \"end\" : 20159 }, \n \"ports\" : [ \n\
\ { \"id\" : \"2b7c1e94-5d3a-4f8e-9a61-0c4d2e7f8b13\" , \"port\" : 20145 , \"protocol\" : \"tcp\" , \"internalPort\" : 5432 , \"domain\"\
\ : null , \"description\" : \"Postgres\" , \"act"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renewal-options:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_renewal_options
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renewal-options
x-source: https://docs.helipod.io/docs/vps-api/billing
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815RenewalOptionsRequ'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renewal-options -H \"Authorization: Bearer hel_your_key\"\
\ \n Copy Text { \n \"success\" : true , \n \"data\" : { \n \"instanceId\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\" , \n \"planName\"\
\ : \"VPS S - Jakarta\" , \n \"currentBillingMonths\" : 1 , \n \"currentExpiresAt\" : \"2026-11-15T08:22:12.000Z\" , \n \"priceMonthly\"\
\ : 64900 , \n \"options\" : [ \n {"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/restart:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_restart
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/restart
x-source: https://docs.helipod.io/docs/vps-api/actions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815RestartRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl JavaScript Copy Text curl -X POST https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/restart -H \"Authorization:\
\ Bearer hel_your_key\" \n Copy Text { \n \"success\" : true , \n \"data\" : { \n \"id\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\"\
\ , \n \"status\" : \"restarting\" , \n \"lastJobType\" : \"vps:restart\" , \n \"lastJobStatus\" : \"pending\" \n } \n } \n Reinstall\
\ the operating system Copy Anchor L"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/snapshots:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_snapshots
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/snapshots
x-source: https://docs.helipod.io/docs/vps-api/snapshots
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815SnapshotsRequest'
responses:
'201':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815SnapshotsResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/snapshots -H \"Authorization: Bearer hel_your_key\"\
\ \n Copy Text { \n \"success\" : true , \n \"data\" : { \n \"snapshots\" : [ \n { \n \"id\" : \"0e8b5c1d-6f3a-4b2e-9c7d-1a2b3c4d5e6f\"\
\ , \n \"instanceId\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\" , \n \"name\" : \"before-upgrade\" , \n \"state\" : \"NORMAL\" , \n\
\ \"percent\" : 100 , \n \"diskSize\" : 40 , \n \"cr"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ssh-keys:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_ssh_keys
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ssh-keys
x-source: https://docs.helipod.io/docs/vps-api/ssh
responses:
'201':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815SshKeysResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/ssh-keys -H \"Authorization: Bearer hel_your_key\"\
\ \n The response is an array of key objects. fingerprint is null for a stored line that is not a valid public key. \n Add a key Copy\
\ Anchor Link \n POST /vps/:id/ssh-keys Add one public key. Returns 201 . \n Prop Type publicKey string \n Copy Text curl -X POST https://api.helipod.io"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/start:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_start
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/start
x-source: https://docs.helipod.io/docs/vps-api/actions
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl JavaScript Copy Text curl -X POST https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/start -H \"Authorization:\
\ Bearer hel_your_key\" \n Copy Text { \n \"success\" : true , \n \"data\" : { \n \"id\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\"\
\ , \n \"name\" : \"web-1\" , \n \"status\" : \"provisioning\" , \n \"lastJobType\" : \"vps:start\" , \n \"lastJobStatus\" : \"pending\"\
\ \n } \n } \n waitForVps is the polling"
/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/stop:
post:
operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_stop
tags:
- Api
summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/stop
x-source: https://docs.helipod.io/docs/vps-api/actions
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl JavaScript Copy Text curl -X POST https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/stop -H \"Authorization:\
\ Bearer hel_your_key\" \n Copy Text { \n \"success\" : true , \n \"data\" : { \n \"id\" : \"1f757fd5-98d1-490a-81a0-58b5798a5815\"\
\ , \n \"status\" : \"stopping\" , \n \"lastJobType\" : \"vps:stop\" , \n \"lastJobStatus\" : \"pending\" \n } \n } \n A stopped server\
\ is still billed: the paid period ke"
/api/vps/plans:
get:
operationId: get_api_vps_plans
tags:
- Api
summary: GET /api/vps/plans
x-source: https://docs.helipod.io/docs/vps-api/plans
responses:
'200':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiVpsPlansResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl \"https://api.helipod.io/api/vps/plans\" -H \"Authorization: Bearer hel_your_key\" \n Response Copy Anchor Link \n Copy\
\ Text { \n \"success\" : true , \n \"data\" : [ \n { \n \"id\" : \"4db565ff-782f-46c8-9324-e4670517233f\" , \n \"name\" : \"VPS S -\
\ Jakarta\" , \n \"slug\" : \"vps-s-jkt\" , \n \"description\" : \"2 vCPU, 2 GB RAM for small apps\" , \n \"cpuCores\" : 2 , \n \"ramMb\"\
\ : 2048 , \n \"diskGb\" : 40 , \n \"bandwidthGb\" : 5"
/migrate/…:
post:
operationId: post_migrate
tags:
- Migrate
summary: POST /migrate/…
x-source: https://docs.helipod.io/docs/vps-api/migrate
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostMigrateRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl -fsSL https://api.helipod.io/migrate/… | sudo bash . \n Run it as root on the old server . It works once and expires in\
\ 1 hour . With sourceIp it only works from that IP. It uploads in the background, so the terminal can be closed. \n Follow the status\
\ : waiting → uploading → inspecting → uploaded . While it uploads you can pause, resume or stop it. \n Check fetchedIp (who ran the\
\ command), then"
security:
- bearer: []
components:
schemas:
PostApiBackupPlansRequest:
type: object
properties:
planCode:
type: string
months:
type: integer
scheduleHour:
type: integer
PatchApiVpsRequest:
type: object
properties:
name:
type: string
PostApiVpsRequest:
type: object
properties:
planId:
type: string
projectId:
type: string
name:
type: string
osType:
type: string
osVersion:
type: string
rootPassword:
type: string
billingPeriod:
type: string
PostApiVpsResponse:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
instance:
type: object
properties:
id:
type: string
projectId:
type: string
planId:
type: string
name:
type: string
hostname:
type: string
status:
type: string
osType:
type: string
osVersion:
type: string
publicIp:
type: string
cpuCores:
type: integer
ramMb:
type: integer
diskGb:
type: integer
billingPeriod:
type: integer
priceSnapshot:
type: string
autoRenew:
type: boolean
expiresAt:
type: string
format: date-time
lastJobType:
type: string
lastJobStatus:
type: string
createdAt:
type: string
format: date-time
password:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815FirewallRequest:
type: object
properties:
rules:
type: array
items:
type: object
properties:
Protocol:
type: string
Port:
type: string
CidrBlock:
type: string
Action:
type: string
FirewallRuleDescription:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815PortsRequest:
type: object
properties:
port:
type: integer
protocol:
type: string
internalPort:
type: integer
description:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815RenewalOptionsRequ:
type: object
properties:
billingPeriod:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815RestartRequest:
type: object
properties:
osType:
type: string
osVersion:
type: string
rootPassword:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815SnapshotsRequest:
type: object
properties:
name:
type: string
PostApiVps1F757Fd598D1490A81A058B5798A5815SnapshotsResponse:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
id:
type: string
instanceId:
type: string
name:
type: string
state:
type: string
percent:
type: integer
createdAt:
type: string
format: date-time
PostApiVps1F757Fd598D1490A81A058B5798A5815SshKeysResponse:
type: object
properties:
fingerprint:
type: string
deleted:
type: boolean
keys:
type: array
items: {}
GetApiVpsPlansResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
slug:
type: string
description:
type: string
cpuCores:
type: integer
ramMb:
type: integer
diskGb:
type: integer
bandwidthGb:
type: integer
networkType:
type: string
type:
type: string
osTemplates:
type: array
items:
type: string
features:
type: array
items:
type: string
maxSnapshots:
type: integer
stock:
type:
- string
- 'null'
isPopular:
type: boolean
sortOrder:
type: integer
regionId:
type: string
priceMonthly:
type: string
priceHourly:
type:
- string
- 'null'
discount3month:
type: integer
discount6month:
type: integer
yearlyDiscount:
type: integer
effectiveMonthly:
type: integer
pricingSource:
type: string
pricingDiscountPercent:
type: integer
providerCode:
type: integer
region:
type: object
properties:
id:
type: string
name:
type: string
description:
type: string
code:
type: string
sortOrder:
type: integer
isActive:
type: boolean
PostMigrateRequest:
type: object
properties:
sourceIp:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer
tags:
- name: Api
- name: Api Path
- name: Migrate