NAV
shell

Introduction

Welcome to the maxcloud-api! You can use our API to create and manage instances, billing, network and others.

Authentication

To authorize, use this code:

# With shell, you can just pass the correct header with each request
curl "api_endpoint_here" \
  -H "x-apikey: meowmeowmeow"

Make sure to replace meowmeowmeow with your API key.

API of Maxcloud uses tokens to allow access to the API. You can register a new API token at our user dashboard.

API token must be included in all API requests to the server in a header that looks like the following:

x-apikey: meowmeowmeow

Networks

Get Private Networkes

curl "https://api.maxstage.id/network/vswitches" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Your Private Network",
    "data": [
        {
            "uuid": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
            "name": "Khususon Network App",
            "tag": 1000,
            "location": "Jakarta 1",
            "network_ip": "10.252.12.0/24",
            "gateway": {
                "uuid": null,
                "hostname": null,
                "private_ip": null
            },
            "status": "Active",
            "created_at": "25 January 2024 14:37"
        }
    ]
}

Get List Private Networkes

HTTP Request

GET https://api.maxstage.id/network/vswitches

Get Detail Private Network

curl "https://api.maxstage.id/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/details" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Private Network details",
    "data": {
        "uuid": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
        "name": "Local Ysf 1",
        "tag": 1000,
        "vid": "vloc1000",
        "location": {
            "id": 1,
            "name": "Jakarta 1"
        },
        "total_active_instance": 2,
        "status": "Active",
        "gateway": {
            "uuid": null,
            "hostname": null,
            "private_ip": null
        },
        "created_at": "25 January 2024 14:37",
        "last_update_at": "25 January 2024 14:38"
    }
}

Get Detail Private Network

HTTP Request

GET https://api.maxstage.id/network/vswitch/{vswitch_uuid}/details

Query Parameters

Parameter Type Description
{vswitch_uuid} UUID required Defines which vswitch to retrieve

Get Private Network IPs

curl "https://api.maxstage.id/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/ips" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Private Network ips",
    "data": {
        "data": [
            {
                "ip_address": "10.252.12.1",
                "vm_uuid": "fbc28e05-8ba3-4291-ab38-0021e2ae1a2b",
                "hostname": "local-999-1"
            },
            {
                "ip_address": "10.252.12.2",
                "vm_uuid": "9eee234a-41ad-4590-827b-ad9ac71a62ce",
                "hostname": "local-999-2"
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Private Network IPs

HTTP Request

GET https://api.maxstage.id/network/vswitch/{vswitch_id}/ips

Query Parameters

Parameter Type Description
{vswitch_uuid} UUID required Defines which IP vswitch to retrieve

Create Private Network

curl "https://api.maxstage.id/network/vswitch/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "name: Local switch 1" \
  -d "location_id: 1" \

The above command returns JSON structured like this:

{
    "message": "Private Network will be created in a moment",
    "data": {
        "hv_net": "vid6",
        "network_ip": "10.66.245.0/24"
    }
}

Create Private Network

HTTP Request

POST https://api.maxstage.id/network/vswitch/create

Form Parameters

Parameter Type Description
name string required Name of Private Network
location_id bigInteger required Id of location

Update Private Network Gateway

curl "https://api.maxstage.id/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/gateway" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "public_gateway: 0f0415fa-ed50-49c5-ab7a-b9df1a091c05" \

The above command returns JSON structured like this:


Update Private Network Gateway

HTTP Request

PATCH https://api.maxstage.id/network/vswitch/{vswitch_uuid}/gateway

Form Parameters

Parameter Type Description
{vswitch_uuid} UUID required Defines which vswitch to update
public_gateway string required Public gateway of Private Network

Get Private Network Graph

curl "https://api.maxstage.id/network/vswitch/1/graph" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Private Network graph data",
    "data": {
        "nodes": [
            {
                "id": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
                "type": "network",
                "position": {
                    "x": 0,
                    "y": 0
                },
                "data": {
                    "vswitch_id": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
                    "type": "Network",
                    "label": "Khususon Network App",
                    "ip": "10.252.12.0/24"
                },
                "style": [],
                "parent": null,
                "draggable": false
            },
            {
                "id": "10.252.12.1",
                "type": "instance",
                "position": {
                    "x": 0,
                    "y": 400
                },
                "data": {
                    "private_ip_id": 1,
                    "vm_uuid": "fbc28e05-8ba3-4291-ab38-0021e2ae1a2b",
                    "type": "Instance",
                    "os": {
                        "name": "Ubuntu",
                        "image": "https://api.maxcloud.dev/icon/os/ubuntu.png"
                    },
                    "label": "local-999-1",
                    "public_ip": "192.168.1.199",
                    "private_ip": "10.252.12.1"
                },
                "style": [],
                "parent": null,
                "draggable": true
            },
            {
                "id": "free",
                "type": "free",
                "position": {
                    "x": 600,
                    "y": 0
                },
                "data": {
                    "label": "Free Instances"
                },
                "style": {
                    "textAlign": "center",
                    "backgroundColor": "rgba(50, 67, 158, 0.2)",
                    "height": 150,
                    "width": 400
                },
                "parent": null,
                "draggable": false
            }
        ],
        "edges": [
            {
                "id": "0d805649-9a66-4e0e-8cac-69659b40c2b9->10.252.12.1",
                "source": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
                "target": "10.252.12.1",
                "label": null
            },
            {
                "id": "0d805649-9a66-4e0e-8cac-69659b40c2b9->10.252.12.2",
                "source": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
                "target": "10.252.12.2",
                "label": null
            }
        ]
    }
}

Get Private Network Graph

HTTP Request

GET https://api.maxstage.id/network/vswitch/{vswitch_id}/graph

Query Parameters

Parameter Type Description
{vswitch_id} bigInteger required Defines which Graph vswitch to retrieve

Update Private Network Gateway

curl "https://api.maxstage.id/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/graph/update-pos" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "private_ip: 1" \
  -d "pos_x: 100" \
  -d "pos_y: 400" \

The above command returns JSON structured like this:

{
    "message": "Pos updated",
    "data": null
}

Update Private Network Gateway

HTTP Request

PATCH https://api.maxstage.id/network/vswitch/{vswitch_uuid}/graph/update-pos

Form Parameters

Parameter Type Description
{vswitch_uuid} UUID required Defines which vswitch to update
public_gateway string required Public gateway of Private Network

Get Private Network Gateway

curl "https://api.maxstage.id/network/options/gateways?location_id=1&vswitch=30994a7c-0523-4432-97f7-1ae577ffa2e6" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Your Private Networkes",
    "data": [
        {
            "uuid": "30994a7c-0523-4432-97f7-1ae577ffa2e6",
            "name": "Network App",
            "hv_tag": 1,
            "location": "Jakarta 1",
            "created_at": "19 June 2023 15:51",
            "last_update_at": "19 June 2023 15:51"
        },
        {
            "uuid": "b15ee92e-7ab4-4e9b-8b61-20b8d3c1d673",
            "name": "Network App",
            "hv_tag": 2,
            "location": "Jakarta 1",
            "created_at": "19 June 2023 16:15",
            "last_update_at": "19 June 2023 16:15"
        },
        {
            "uuid": "bddf51fd-3398-469b-adde-f2c0acdef607",
            "name": "Network App",
            "hv_tag": 3,
            "location": "Jakarta 1",
            "created_at": "19 June 2023 16:15",
            "last_update_at": "19 June 2023 16:16"
        },
    ]
}

Get Private Network Gateway

HTTP Request

GET https://api.maxstage.id/network/options/gateways

Query Parameters

Parameter Type Description
{location_id} bigInteger required Id of location
{vswitch_uuid} UUID required UUID of Private Network

Get Private Network Options

curl "https://api.maxstage.id/network/options/vswitches?location_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Your Private Networks",
    "data": [
        {
            "uuid": "0d805649-9a66-4e0e-8cac-69659b40c2b9",
            "name": "Local Ysf 1",
            "tag": 1000,
            "location": "Jakarta 1",
            "network_ip": "10.252.12.0/24",
            "gateway": {
                "uuid": null,
                "hostname": null,
                "private_ip": null
            },
            "status": "Active",
            "created_at": "25 January 2024 14:37"
        }
    ]
}

Get Private Network Options

HTTP Request

GET https://api.maxstage.id/network/options/vswitches

Query Parameters

Parameter Type Description
{location_id} bigInteger required Id of location

Get Free Public Network

curl "https://api.maxstage.id/network/public/options?location_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Public Network Options",
    "data": [
        {
            "id": "003bbc1a-59cf-4657-8714-4fa0a68ec8d4",
            "ip_address": "192.168.1.200"
        },
        {
            "id": "27b68091-7131-4d7d-b524-83ad6ac77731",
            "ip_address": "192.168.1.202"
        },
    ]
}

Get Free Public Network Options

HTTP Request

GET https://api.maxstage.id/network/public/options

Query Parameters

Parameter Type Description
{location_id} bigInteger required Id of location

Get Public Networks

curl "https://api.maxstage.id/network/public/reserved?limit=10&page=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Public Network",
    "data": {
        "data": [
            {
                "id": "003bbc1a-59cf-4657-8714-4fa0a68ec8d4",
                "ip_address": "192.168.1.200",
                "instance": {
                    "id": "0f0415fa-ed50-49c5-ab7a-b9df1a091c05",
                    "hostname": "local-666-1"
                },
                "location": {
                    "id": 1,
                    "name": "Jakarta 1"
                },
                "price_per_hour": "34.72222",
                "est_this_month_price": 25000,
                "cost": 10443.28718,
                "created_at": "09-11-2023 13:48:06"
            },
            {
                "id": "27b68091-7131-4d7d-b524-83ad6ac77731",
                "ip_address": "192.168.1.202",
                "instance": {
                    "id": null,
                    "hostname": null
                },
                "location": {
                    "id": 1,
                    "name": "Jakarta 1"
                },
                "price_per_hour": "34.72222",
                "est_this_month_price": 25000,
                "cost": 10448.49503,
                "created_at": "09-11-2023 13:48:06"
            },
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Public Network

HTTP Request

GET https://api.maxstage.id/network/public/reserved

Query Parameters

Parameter Type Description
limit integer optional Limit response data instance.
page integer optional Number of page.

Create Public Network

curl "https://api.maxstage.id/network/public/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "location_id: 1" \

The above command returns JSON structured like this:

{
    "message": "Public Network successfully created",
    "data": {
        "ip_address": "192.168.1.243"
    }
}

Create Public Network

HTTP Request

POST https://api.maxstage.id/network/public/create

Form Parameters

Parameter Type Description
location_id bigInteger required Id of location

Change Instance IP

curl "https://api.maxstage.id/network/public/27ed6b76-ee01-4ae4-8173-c4372c080764/change-instance" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "instance_id: 4c657c65-1696-487e-9154-6992fab3818d" \

The above command returns JSON structured like this:

{
    "message": "Public network instance successfully removed.",
    "data": [
        "ip_id": "27ed6b76-ee01-4ae4-8173-c4372c080764",
        "instance_id": "4c657c65-1696-487e-9154-6992fab3818d"
    ]
}

Change Instance IP

HTTP Request

PATCH https://api.maxstage.id/network/public/{ip_uuid}/change-instance

Path Parameters

Parameter Type Description
{ip_uuid} UUID required Defines which ip to retrieve

Form Parameters

Parameter Type Description
instance_id UUID required UUID of instance that want to update IP

Update RDNS IP

curl "https://api.maxstage.id/network/public/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/rdns" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "rdns: testajabro.id" \

The above command returns JSON structured like this:

{
    "message": "RDNS successfully updated",
    "data": "testajabro.id"
}

Update RDNS IP

HTTP Request

PATCH https://api.maxstage.id/network/public/{ip_uuid}/rdns

Path Parameters

Parameter Type Description
{ip_uuid} UUID required Defines which ip to retrieve

Form Parameters

Parameter Type Description
rdns string required RDNS of ip

Delete Public Network

curl "https://api.maxstage.id/network/public/27ed6b76-ee01-4ae4-8173-c4372c080764/delete" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Public Network successfully removed",
    "data": {
        "ip_id": "33f9cec7-f9c8-4103-a232-1b586116e8bc"
    }
}

Delete Public Network

HTTP Request

DELETE https://api.maxstage.id/network/public/{ip_uuid}/delete

Query Parameters

Parameter Type Description
{ip_uuid} UUID required Defines which ip to delete

Pricings

Get Available Systems

curl "https://api.maxstage.id/systems?location=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Available Systems",
    "data": [
        {
            "id": 6,
            "os_name": "Ubuntu",
            "image": "https://api.maxcloud.dev/icon/os/ubuntu.png",
            "os_version": [
                {
                    "id": 22,
                    "version": "18.04",
                    "description": "Ubuntu version 18.04",
                    "min_cpu": 1,
                    "min_memory": 1,
                    "min_storage": 20
                }
            ]
        },
        {
            "id": 7,
            "os_name": "Windows",
            "image": "https://api.maxcloud.dev/icon/os/windows.png",
            "os_version": [
                {
                    "id": 29,
                    "version": "Server 2016 BYOL",
                    "description": "Windows Server 2016 BYOL",
                    "min_cpu": 1,
                    "min_memory": 1,
                    "min_storage": 20
                }
            ]
        }
    ]
}

Get Available Systems

HTTP Request

GET https://api.maxstage.id/systems

Path Parameters

Parameter Type Description
{location_id} bigInteger optional Id of location

Get Locations

curl "https://api.maxstage.id/locations" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Daftar lokasi data center",
    "data": [
        {
            "id": 1,
            "name": "Lokasi 1 Jakarta Utara",
            "hostname": "utara-1"
        }
    ]
}

Get Locations

HTTP Request

GET https://api.maxstage.id/locations

Get Tiers

curl "https://api.maxstage.id/tiers?location=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Node tiers",
    "data": [
        {
            "id": 1,
            "name": "Cloud Compute",
            "description": "Cloud with great flexibility.",
            "icon": "https://api-maxcloud.dev/icon/tier/tier-1.svg"
        },
        {
            "id": 3,
            "name": "Optimized Cloud Compute",
            "description": "Optimized Cloud with that create more opportunity.",
            "icon": "https://api-maxcloud.dev/icon/tier/tier-2.svg"
        }
    ]
}

Get Tiers

HTTP Request

GET https://api.maxstage.id/tiers

Path Parameters

Parameter Type Description
{location_id} bigInteger optional Id of location

Get Tier Pricing

curl "https://api.maxstage.id/tiers/1/pricing" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Pricing list",
    "data": [
        {
            "id": 1,
            "name": "CPU",
            "price_per_hour": 77.77778,
            "price_per_day": 1866.66662,
            "price_per_month": 56000
        },
        {
            "id": 2,
            "name": "RAM",
            "price_per_hour": 33.33334,
            "price_per_day": 800.00006,
            "price_per_month": 24000
        }
    ]
}

Get Tier Pricing

HTTP Request

GET https://api.maxstage.id/tiers/{tier_id}/pricing

Path Parameters

Parameter Type Description
{tier_id} bigInteger required Id of tier

Get Instance Size Template

curl "https://api.maxstage.id/instance/size-template" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "VM size templates",
    "data": [
        {
            "id": 1,
            "title": "Starter",
            "total_cpu": 1,
            "total_ram": 1,
            "total_disk": 30,
            "created_at": "2023-01-27T02:42:31.000000Z",
            "updated_at": "2023-01-27T02:42:31.000000Z"
        },
        {
            "id": 2,
            "title": "Exploring",
            "total_cpu": 1,
            "total_ram": 2,
            "total_disk": 50,
            "created_at": "2023-01-27T02:42:31.000000Z",
            "updated_at": "2023-01-27T02:42:31.000000Z"
        },
    ]
}

This endpoint retrieves a RRD data.

HTTP Request

GET https://api.maxstage.id/instance/size-template

Instances

Get All Instances

curl "https://api.maxstage.id/instance?limit=3&page=1&search=My Hostname&sort=created_at,desc&statuses=Running,Stopped" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Virtual machines list",
    "data": {
        "data": [
            {
                "uuid": "7995e990-c3bf-4e27-8ce2-89fd5783f9ea",
                "hostname": "test-bagas",
                "ip_address": null,
                "cpu": 2,
                "memory": "2 GB",
                "storage": "30GB",
                "status": "Running",
                "os": {
                    "name": "Ubuntu",
                    "image": "https://api.maxcloud.dev/icon/os/ubuntu.png"
                },
                "location": "Jakarta 1",
                "tier": "Cloud Compute AMD Epyc",
                "price_per_hour": 327,
                "estimated_monthly_cost": 235440,
                "cost": null,
                "operation_flag": 0,
                "created_at": "25 January 2024, 14:43"
            },
            {
                "uuid": "9eee234a-41ad-4590-827b-ad9ac71a62ce",
                "hostname": "local-999-2",
                "ip_address": "192.168.1.200",
                "cpu": 2,
                "memory": "2 GB",
                "storage": "30GB",
                "status": "Running",
                "os": {
                    "name": "Ubuntu",
                    "image": "https://api.maxcloud.dev/icon/os/ubuntu.png"
                },
                "location": "Jakarta 1",
                "tier": "Cloud Compute AMD Epyc",
                "price_per_hour": 327,
                "estimated_monthly_cost": 235440,
                "cost": null,
                "operation_flag": 0,
                "created_at": "25 January 2024, 14:41"
            }
        ],
        "active_operation": 0,
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

This endpoint retrieves all instances.

HTTP Request

GET https://api.maxstage.id/instance

Query Parameters

Parameter Type Description
limit integer optional Limit response data instance.
page integer optional Number of page.
search string optional Search by hostname.
sort string optional Sort by created_at or cost.
statuses string optional Filter by instance status.

Create Instance

curl "https://api.maxstage.id/instance/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "template_id: 1" \
  -d "hostname: test-vm-1" \
  -d "cpu: 1" \
  -d "memory: 12" \
  -d "storage: 10" \
  -d "username: root" \
  -d "password: root" \
  -d "use_public_ip: true" \
  -d "use_shared_cpu: false" \
  -d "vswitch: null" \
  -d "ssh_keys: []" \
  -d "use_dedicated_cpu: true" \
  -d "include_backup: false" \
  -d "use_public_ip: true" \
  -d "public_network: 27b68091-7131-4d7d-b524-83ad6ac77731" \

The above command returns JSON structured like this:

{
    "message": "Vm berhasil dibuat",
    "data": {
        "uuid": "5bacdb5e-175e-4199-b255-b1c7e595610d",
        "hostname": "not-so-seriues-test-local-4",
        "node_id": 2,
        "cpu": 1,
        "memory": 2,
        "storage": 10,
        "status": "Creating",
        "username": "root",
        "active_price_per_min": 7.00823,
        "inactive_price_per_min": 4.91832,
        "template_id": 1,
        "billing_id": 70,
        "customer_id": 2,
        "updated_at": "2022-01-05T03:39:56.000000Z",
        "created_at": "2022-01-05T03:39:56.000000Z",
        "id": 67
    }
}

This endpoint create virtual machine.

HTTP Request

POST https://api.maxstage.id/instance/create

Form Parameters

Parameter Type Description
location_id bigInteger Id of location.
tier_id bigInteger Id of tier.
template_id bigInteger Id of template.
hostname string Hostname of instance.
cpu integer Cpu of instance
memory integer Memory of instance
storage integer Storage of instance
username string Username of instance
password string Password of instance
use_public_ip boolean Public Network of instance
use_shared_cpu boolean optional Shared cpu of instance
vswitch string Vswitch of instance
ssh_keys array optional SSH Keys of instance
use_dedicated_cpu boolean optional Dedictated cpu of instance
include_backup boolean optional Backup of instance
use_public_ip boolean optional Option Public Network of instance
public_network UUID optional UUID Public Network of instance

Get Detail Instance

curl "https://api.maxstage.id/instance/c5a43e67-2ecf-4938-82d4-43106f640ff5/detail" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Virtual machine details",
    "data": {
        "uuid": "7995e990-c3bf-4e27-8ce2-89fd5783f9ea",
        "hostname": "test-bagas",
        "username": "root",
        "cpu": "2 CPU",
        "is_cpu_dedicated": true,
        "memory": "2048 MB",
        "storage": "30 GB",
        "status": "Running",
        "os_name": "Ubuntu 18.04",
        "public_ip": {
            "ip_id": "-",
            "ip_address": "-"
        },
        "rdns": "-",
        "private_network": "-",
        "location_id": 1,
        "location": "Jakarta 1",
        "tier_id": 4,
        "tier": "Cloud Compute AMD Epyc",
        "os": {
            "template_id": 22,
            "version": "18.04",
            "os_id": 6,
            "name": "Ubuntu",
            "image": "https://api.maxcloud.dev/icon/os/ubuntu.png",
            "min_cpu": 1,
            "min_memory": 1,
            "min_storage": 20
        },
        "price_per_hour": 327,
        "estimated_monthly_price": 235440,
        "cost": null,
        "operation_flag": 0,
        "created_at": "25-01-2024 14:43:18",
        "updated_at": "27-08-2024 11:28:13",
        "last_started_at": "27-08-2024 11:26:37",
        "last_backup_at": null
    }
}

This endpoint retrieves a detail instance.

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/detail

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Get RRD Data

curl "https://api.maxstage.id/instance/c5a43e67-2ecf-4938-82d4-43106f640ff5/rrd?periode=hour" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "RRD data",
    "data": {
        "cpu": [
            {
                "time": "2023-01-24 15:31",
                "cpu": 0.0139689919472582
            },
            {
                "time": "2023-01-24 15:32",
                "cpu": 0.0140080751490295
            },
        ],
        "memory": [
            {
                "time": "2023-01-24 15:31",
                "raw_max_memory": 4294967296,
                "max_memory": "4.29 GB",
                "raw_usage_memory": 561891601.066667,
                "usage_memory": "561.89 MB"
            },
            {
                "time": "2023-01-24 15:32",
                "raw_max_memory": 4294967296,
                "max_memory": "4.29 GB",
                "raw_usage_memory": 562061038.933333,
                "usage_memory": "562.06 MB"
            },
        ],
        "network": [
            {
                "time": "2023-01-24 15:31",
                "raw_netin": 82.2,
                "netin": "82 B",
                "raw_netout": 13,
                "netout": "13 B"
            },
            {
                "time": "2023-01-24 15:32",
                "raw_netin": 74.2,
                "netin": "74 B",
                "raw_netout": 3.16666666666667,
                "netout": "3 B"
            },
        ],
        "disk": [
            {
                "time": "2023-01-24 15:31",
                "raw_diskwrite": 16725.3333333333,
                "diskwrite": "16.73 KB",
                "raw_diskread": 0,
                "diskread": "0 B"
            },
            {
                "time": "2023-01-24 15:32",
                "raw_diskwrite": 8738.13333333333,
                "diskwrite": "8.74 KB",
                "raw_diskread": 0,
                "diskread": "0 B"
            },
        ]
    }
}

This endpoint retrieves a RRD data.

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/rrd

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Query Parameters

Parameter Type Description
periode string required Defines interval RRD data

Clone Instance

curl "https://api.maxstage.id/instance/c5a43e67-2ecf-4938-82d4-43106f640ff5/clone" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "hostname: local-666-1" \
  -d "location_id: 1" \
  -d "tier_id: 1" \

The above command returns JSON structured like this:

{
    "message": "Instance is on cloning progress",
    "data": {
        "uuid": "43bdc333-877b-4bcd-bc91-45da2104499f"
    }
}

Clone instances

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/clone

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
hostname string required Hostname of instance.
location_id bigInteger required Id of location.
tier_id bigInteger required Id of tier.

Virtual Console Websocket

curl "https://api.maxstage.id/instance/c5a43e67-2ecf-4938-82d4-43106f640ff5/console-websocket" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "VNC connection",
    "data": {
        "url": "wss://dc1-wss.maxstage.id?t=66CD82FE%3A%3AN4AhOoRFsq9tqLE1NWeoaA%2FwUe27WmKgO5zKhnil%2BDKVxI08ARaMvPXJD%2FMYEKw8J6QwTk96JOcxaGzYVWoWUJJyTqVtcTe%2B4bFQXzNzg5qvKrzL%2B42rpz%2F5rT9%2FVynJKq8uQ0wvY1%2FYCSFcCnG0P1nUw7s9Q8LkOwG6CB3H1YCIVXHh32c%2FTgZnT7HVsooF1dEDOVCqcqjtv%2Fs2u5pEMtY53DbdCIVKGtBbk53lUzUWOWkodtlobM8Y3PhUwvOACpAGmXLiLW%2B%2B6WJW3ICyV7iZCrUGRZ2X%2BQRPa86gOZlthoFv957LtlF%2BVXt1EXURuc%2BquJDWo36bg1OcQuF%2B1A%3D%3D&ae=dc1-scalable-hv1&n=dc1-epyc-hv1&i=1014&p=5900",
        "password": "U#0^;@,0"
    }
}

Virtual Console Websocket

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/console-websocket

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Reinstall Instance

curl "https://api.maxstage.id/instance/19c881bb-c1a6-4ec7-b303-8b08c1abe5d0/reinstall" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Reinstall process on VM instance #19c881bb-c1a6-4ec7-b303-8b08c1abe5d0 will be executed.",
    "data": {
        "uuid": "19c881bb-c1a6-4ec7-b303-8b08c1abe5d0",
        "hostname": "loc-11111"
    }
}

Reinstall instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/reinstall

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Delete Instance

curl "https://api.maxstage.id/instance/e688866c-deeb-4e55-85cc-1c24fb2f1a71/delete" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Virtual machine is on terminating process",
    "data": [
        "uuid": "e688866c-deeb-4e55-85cc-1c24fb2f1a71",
        "hostname": "local-666-2"
    ]
}

Delete instance

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
remove_ip boolean required Specifies whether to remove the Public Network or not.
remove_block_storage boolean required Specifies whether to remove the block storage or not.
_method string required Define delete http method.

Start Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/start" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Start process on instance #630d7152-1595-4014-a052-a49b647e58c1 will be executed.",
    "data": {
        "uuid": "630d7152-1595-4014-a052-a49b647e58c1",
        "hostname": "local-321"
    }
}

Start instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/start

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Stop Instance

curl "https://api.maxstage.id/instance/19c881bb-c1a6-4ec7-b303-8b08c1abe5d0/stop" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Stop process on VM instance #19c881bb-c1a6-4ec7-b303-8b08c1abe5d0 will be executed.",
    "data": {
        "uuid": "19c881bb-c1a6-4ec7-b303-8b08c1abe5d0",
        "hostname": "loc-11111"
    }
}

Stop instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/stop

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Restart Instance

curl "https://api.maxstage.id/instance/19c881bb-c1a6-4ec7-b303-8b08c1abe5d0/restart" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Restart process on VM instance #19c881bb-c1a6-4ec7-b303-8b08c1abe5d0 will be executed.",
    "data": {
        "uuid": "19c881bb-c1a6-4ec7-b303-8b08c1abe5d0",
        "hostname": "loc-11111"
    }
}

Restart instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/restart

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Get Options

curl "https://api.maxstage.id/instance/options/no-ip?location_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance options with no public network",
    "data": [
        {
            "id": "4c657c65-1696-487e-9154-6992fab3818d",
            "hostname": "local-666-6"
        }
    ]
}

This endpoint retrieves options.

HTTP Request

GET https://api.maxstage.id/instance/options/no-ip

Path Parameters

Parameter Type Description
location_id integer required Defines which location id to retrieve

Update RDNS IP Instance

curl "https://api.maxstage.id/network/public/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/rdns" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "rdns: testajabro.id" \

The above command returns JSON structured like this:

{
    "message": "RDNS successfully updated",
    "data": "testajabro.id"
}

Update RDNS IP of Instance

HTTP Request

PATCH https://api.maxstage.id/network/public/{ip_uuid}/rdns

Path Parameters

Parameter Type Description
{ip_uuid} UUID required Defines which ip to retrieve

Form Parameters

Parameter Type Description
rdns string required RDNS of ip

Update Private Network Instance

curl "https://api.maxstage.id/instance/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/vswitch" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "vswitch: 761ae18f-3f1b-4ec6-9104-50669f4401b5" \

The above command returns JSON structured like this:

{
    "message": "Instance successfully detached from Private Network",
    "data": {
        "vm_uuid": "7cf4a61d-ec47-4f87-a5af-fcab076f4fab"
    }
}

Update Private Network Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/vswitch

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
vswitch UUID required UUID of vswitch

Add Public Network Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/ip/add" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Public Network Address successfully added to the instance",
    "data": {
        "vm_uuid": "a5d1836a-96b1-4144-bf4f-108ecd6f5abe",
        "ip_address": "192.168.1.221"
    }
}

Add Public Network Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/ip/add

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Change Public Network Instance

curl "https://api.maxstage.id/instance/8c8e8723-625b-4b33-b279-6ae155dace95/ip/change" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "public_network: 361a1158-d0df-4658-b65f-1954549aa6e9" \

The above command returns JSON structured like this:

{
    "message": "Instance's Public Network successfully changed.",
    "data": {
        "instance": "8c8e8723-625b-4b33-b279-6ae155dace95",
        "public_ip": "192.168.1.203"
    }
}

Change Public Network instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/ip/change

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
public_network UUID optional Specifies the Public Network to be modified; leave blank if removal is desired.

Resize Instance

curl "https://api.maxstage.id/instance/44e9de1f-576b-4e35-9c78-3d0535a549a8/resize" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "cpu: 4" \
  -d "memory: 4" \
  -d "storage: 40" \
  -d "use_dedicated_cpu: false" \

The above command returns JSON structured like this:

{
    "message": "Virtual machine is resized successfully",
    "data": {
        "uuid": "44e9de1f-576b-4e35-9c78-3d0535a549a8",
        "hostname": "updated-hostname-666"
    }
}

Resize Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/resize

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
cpu integer required Cpu of instance
memory integer required Memory of instance
storage integer required Storage of instance
use_dedictated_cpu boolean optional Dedictated Cpu of instance

Set Password Instance

curl "https://api.maxstage.id/instance/44e9de1f-576b-4e35-9c78-3d0535a549a8/set-password" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "password: meowmeow" \
  -d "password_confirmation: meowmeow" \

The above command returns JSON structured like this:

{
    "message": "Virtual machine password successfully updated",
    "data": null
}

Set Password Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/set-password

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
password string required Password of instance
password_confirmation string required Password confirmation of instance

Change Tier Instance

curl "https://api.maxcloud.id/v1/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/change-tier" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "tier_id: 1" \

The above command returns JSON structured like this:

{
    "message": "Your instance will be migrated in a moment...",
    "data": {
        "vm_uuid": "a5d1836a-96b1-4144-bf4f-108ecd6f5abe"
    }
}

Change Tier Instance

HTTP Request

PATCH https://api.maxcloud.id/v1/instance/{instance_uuid}/change-tier

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
tier_id bigInteger required Id of tier

Get Change Tier Cost Instance

curl "https://api.maxstage.id/instance/44e9de1f-576b-4e35-9c78-3d0535a549a8/change-tier/price?tier_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Estimated change tier cost",
    "data": {
        "current_monthly_cost": 315000.0432,
        "estimated_new_monthly_cost": 285000.048
    }
}

Get Change Tier Cost Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/change-tier/price

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
tier_id bigInteger required Id of tier

Update Hostname

curl "https://api.maxstage.id/instance/44e9de1f-576b-4e35-9c78-3d0535a549a8/update-hostname" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "hostname: updated-hostname-666" \

The above command returns JSON structured like this:

{
    "message": "Hostname successfully updated",
    "data": {
        "uuid": "44e9de1f-576b-4e35-9c78-3d0535a549a8",
        "hostname": "updated-hostname-666"
    }
}

Update hostname

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/update-hostname

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
hostname string required Hostname of instance.

Get Snapshots Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/snapshot/snapshots" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance #7995e990-c3bf-4e27-8ce2-89fd5783f9ea snapshots",
    "data": [
        {
            "id": "4a940301-d309-4866-8d84-1a38775df3fa",
            "name": "test_2712231035",
            "description": "Lupa buat apa",
            "status": "Error",
            "current_hourly_price": null,
            "current_cost": null,
            "estimated_monthly": null,
            "is_current_state": false,
            "attached_storage": [],
            "created_at": "15 August 2024 10:31"
        }
    ]
}

Get Snapshots Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/snapshot/snapshots

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Get Price Snapshots Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/snapshot/price?tier_id=2" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Estimated snapshot price per month",
    "data": {
        "price_per_month": 33600
    }
}

Get Price Snapshots Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/snapshot/price

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
tier_id bigInteger required Id of tier

Create Snapshot Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/snapshot/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "name: test_snapshot_99" \
  -d "description: This is a description" \

The above command returns JSON structured like this:

{
    "message": "Creating snapshot...",
    "data": {
        "snap_uuid": "799f17dc-d1b2-4ca8-b733-c113d2db1fba"
    }
}

Create Snapshot Instance

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/snapshot/create

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
name string required Name of snapshsots
description string required Description of snapshsots

Rollback Snapshot Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/snapshot{snapshot_uuid}/rollback" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Rollback successfully executed. You can start your instance up.",
    "data": {
        "uuid": "e48cbbdd-4428-4302-ac7b-183ad9d73a6d"
    }
}

Rollback Snapshot Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/snapshot{snapshot_uuid}/rollback

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{snapshot_uuid} UUID required Defines which snapshot to rollback

Delete Snapshot Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/snapshot{snapshot_uuid}/delete" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Removing snapshot...",
    "data": {
        "vm_uuid": "630d7152-1595-4014-a052-a49b647e58c1",
        "snap_uuid": "630d7152-1595-4014-a052-a49b647e58c1"
    }
}

Delete Snapshot Instance

HTTP Request

DELETE https://api.maxstage.id/instance/{instance_uuid}/snapshot{snapshot_uuid}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{snapshot_uuid} UUID required Defines which snapshot to delete

Get Backup Histories Instance

curl "https://api.maxstage.id/instance/{instance_uuid}/backup/history?limit=10&page=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance backup schedules",
    "data": {
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        },
        "data": [
            {
                "id": "d975203d-9006-4f67-9084-bfd55c80d15f",
                "schedule": "daily",
                "current_cost": 16.2036,
                "est_this_month": 633.56076,
                "size": 70,
                "created_at": "31 May 2024 10:57",
                "attached_storage": [
                    {
                        "id": "fefc66f4-38d5-4d84-b1b3-a9311d104548",
                        "name": "locpgsql-2",
                        "size": 30
                    }
                ]
            },
            {
                "id": "0b48c87f-4af1-4944-a45f-7a6e1f0a7288",
                "schedule": "daily",
                "current_cost": 16.2036,
                "est_this_month": 635.18112,
                "size": 70,
                "created_at": "31 May 2024 10:55",
                "attached_storage": [
                    {
                        "id": "fefc66f4-38d5-4d84-b1b3-a9311d104548",
                        "name": "locpgsql-2",
                        "size": 30
                    }
                ]
            }
        ]
    }
}

Get Backup Histories Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/history?limit=10&page=1

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Restore Backup File Instance

curl "https://api.maxstage.id/instance/{instance_uuid}/backup/restore/32fc48bf-840e-47ab-98fc-371a12303266" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Starting backup restore process",
    "data": {
        "vm_uuid": "4bbbd2b1-572c-4acf-a298-4d8938206d8b",
        "backup_uuid": "32fc48bf-840e-47ab-98fc-371a12303266"
    }
}

Restore Backup File Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/history?limit=10&page=1

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Delete Backup File Instance

curl "https://api.maxstage.id/instance/{instance_uuid}/backup/{instance_uuid}/delete" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Backup file successfully removed.",
    "data": {
        "backup": "4fade578-f8a0-4ad1-bc2c-63ffa23554e0"
    }
}

Delete Backup File Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/{instance_uuid}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Get Backup Price Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/price?tier_id=2" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Estimated per backup price",
    "data": {
        "storage_size": 30,
        "block_storage_size": 0,
        "price_per_hour": 20.833199999999998,
        "price_per_month": 15000
    }
}

Get Backup Price Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/price

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
tier_id bigInteger required Id of tier

Get Backup Schedules Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance backup schedules",
    "data": [
        {
            "id": "576807e3-6f65-440d-aae1-66dd43bc5929",
            "schedule": {
                "type": "weekly",
                "time": 5,
                "day": 7,
                "description": "Weekly at Saturday 05:00"
            },
            "retention": 2,
            "next_backup_at": "18-05-2024 05:00:00",
            "created_at": "16 May 2024 13:05",
            "updated_at": "16 May 2024 13:05"
        }
    ]
}

Get Backup Schedules Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/schedules

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Create Backup Schedules Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules/create" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Backup schedule successfully created",
    "data": {
        "schedule": "weekly"
    }
}

Create Backup Schedules Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/schedules/create

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
retention integer required Retention of schedule
schedule_type string required Type of schedule
schedule_at integer required When shedule
schedule_on integer optional Schedule on

Update Backup Schedule

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/update-schedule" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "schedule_type: daily" \
  -d "schedule_at: 4" \

The above command returns JSON structured like this:

{
    "message": "Backup schedule successfully updated",
    "data": {
        "next_run": "14-09-2023 04:00:00"
    }
}

Update Backup Schedule Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/backup/update-schedule

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
retention integer required Retention of schedule
schedule_on integer optional Schedule on
schedule_at integer required When shedule

Delete Backup Schedules Instance

curl "https://api.maxstage.id/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules/{backup_id}/delete" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Backup schedule successfully removed",
    "data": {
        "backup": "4d852d9a-5f34-422f-8b96-f92a014c32d1",
        "remove_file": true
    }
}

Delete Backup Schedules Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/backup/schedules/{backup_id}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{backup_id} integer required Defines which backup to delete

Add Public Network Instance

curl "https://api.maxstage.id/instance/{instance_uuid}/firewall/default" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Default network firewall policy",
    "data": {
        "policy_key": "A",
        "policy": "ACCEPT"
    }
}

Add Public Network Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/firewall/default

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Delete Firewall Rules Type Instance

curl "https://api.maxstage.id/firewall-rule-types" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Firewall rule types",
    "data": [
        {
            "name": "SSH",
            "protocol": "tcp",
            "dest_port": 22,
            "dest_port_editable": 0
        },
        {
            "name": "HTTP",
            "protocol": "tcp",
            "dest_port": 80,
            "dest_port_editable": 0
        },
        {
            "name": "HTTPS",
            "protocol": "tcp",
            "dest_port": 443,
            "dest_port_editable": 0
        }
    ]
}

Delete Firewall Rules Type Instance

HTTP Request

GET https://api.maxstage.id/firewall-rule-types

Update Default Firewall Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/default/update" \
  -X PATCH \w
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "action: A" \

The above command returns JSON structured like this:

{
    "message": "Default firewall policy successfully updated",
    "data": {
        "action": "ACCEPT"
    }
}

Update Default Firewall Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/firewall/default/update

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
action string required Action of firewall

Get Firewall Rules Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/rules?page=1&limit=10" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance firewall ruels",
    "data": {
        "data": [
            {
                "id": "RmlsQm5WWGZXanRKYkk4aUIzR01Ndz09",
                "source": "0.0.0.0/0",
                "source_ipset": {
                    "name": null,
                    "cidr": null
                },
                "destination_port": 24,
                "action": "A",
                "action_desc": "ACCEPT",
                "protocol": "tcp",
                "is_enable": 1,
                "description": "test",
                "created_at": "10-10-2023 09:56:23"
            },
            {
                "id": "d0VoZmkrcUNzRDlQeW9rclh1ZzVqdz09",
                "source": null,
                "source_ipset": {
                    "name": "test_ipset",
                    "cidr": [
                        "1.1.1.1",
                        "1.1.1.2",
                        "1.1.1.3"
                    ]
                },
                "destination_port": 24,
                "action": "A",
                "action_desc": "ACCEPT",
                "protocol": "tcp",
                "is_enable": 1,
                "description": "test",
                "created_at": "10-10-2023 09:58:58"
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Firewall Rules Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/firewall/rules

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
limit integer optional Limit response data firewall.
page integer optional Number of page.

Create Firewall Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "source_ipset: 4" \
  -d "destination_port: 24" \
  -d "action: A" \
  -d "protocol: tcp" \
  -d "description: test" \
  -d "use_ipset: true" \

The above command returns JSON structured like this:

{
    "message": "Firewal rule successfully created.",
    "data": {
        "description": "test"
    }
}

Create Firewall Instance

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/firewall/create

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
source_ipset integer required Source ipset of firewall
destination_port integer required Destination port of firewall
action string required Action of firewall
protocol string required Protocol of firewall
description string required Description of firewall
use_ipset boolean required Is using ipset of firewall

Update Firewall Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/bVVJKzduR292RG9lZThaTExwZG9TZz09/update" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "destination_port: 24" \
  -d "action: A" \
  -d "protocol: tcp" \
  -d "description: test" \

The above command returns JSON structured like this:

{
    "message": "Firewall rule successfully updated",
    "data": {
        "id": "bVVJKzduR292RG9lZThaTExwZG9TZz09"
    }
}

Update Firewall Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/firewall/{firewall_rule_id}/update

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{firewall_uuid} UUID required Defines which firewall to update

Form Parameters

Parameter Type Description
destination_port integer required Destination port of firewall
action string required Action of firewall
protocol string required Protocol of firewall
description string required Description of firewall

Update Status Firewall Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/bVVJKzduR292RG9lZThaTExwZG9TZz09/update-status" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Rule successfully enabled",
    "data": {
        "id": "bVVJKzduR292RG9lZThaTExwZG9TZz09"
    }
}

Update Status Firewall Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/firewall/{firewall_uuid}/update-status

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{firewall_uuid} UUID required Defines which firewall to update

Delete Firewall Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/bVVJKzduR292RG9lZThaTExwZG9TZz09/delete" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Firewall rule successfully deleted",
    "data": null
}

Delete Firewall Instance

HTTP Request

DELETE https://api.maxstage.id/instance/{instance_uuid}/firewall/{firewall_uuid}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{firewall_uuid} UUID required Defines which firewall to delete

Get IPSet Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/firewall/ipset/ipsets?limit=3&page=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Instance IPSets",
    "data": {
        "data": [
            {
                "id": 2,
                "name": "test_ipset",
                "description": "test",
                "iplist": [
                    {
                        "id": 3,
                        "cidr": "1.1.1.1",
                        "description": "Test IP for IPSet"
                    }
                ]
            }
        ],
        "page": {
            "total": 1,
            "count": 1,
            "per_page": 3,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get IPSet Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/firewall/ipset/ipsets

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
limit integer optional Limit response data ipset.
page integer optional Number of page.

Create IPSet Instance

curl "https://api.maxstage.id/instance/05c792b3-5abb-4fdf-8448-042a5c3868de/firewall/ipset/create" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "name: test_ipset_1" \
  -d "description: test" \

The above command returns JSON structured like this:

{
    "message": "IPSet successfully created",
    "data": {
        "vm_uuid": "05c792b3-5abb-4fdf-8448-042a5c3868de",
        "ipset": "test_ipset"
    }
}

Create IPSet Instance

HTTP Request

PATCH https://api.maxstage.id/instance/{instance_uuid}/firewall/ipset/create

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Form Parameters

Parameter Type Description
name string required Name of ipset
description string required Description of ipset

Delete IPSet Instance

curl "https://api.maxstage.id/instance/05c792b3-5abb-4fdf-8448-042a5c3868de/firewall/ipset/{ipset_id}/delete" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "IPSet successfully deleted",
    "data": null
}

Delete IPSet Instance

HTTP Request

DELETE https://api.maxstage.id/instance/{instance_uuid}/firewall/ipset/{ipset_id}/delete

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{ipset_id} bigInteger required Defines which ipset to delete

Create CIDR IPSet Instance

curl "https://api.maxstage.id/instance/05c792b3-5abb-4fdf-8448-042a5c3868de/firewall/ipset/1/cidr" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "cidr: 1.1.1.3/27" \
  -d "description: Test IP for IPSet" \

The above command returns JSON structured like this:

{
    "message": "IP/CIDR for IPSet successfully created",
    "data": {
        "cidr": "1.1.1.1"
    }
}

Create CIDR IPSet Instance

HTTP Request

POST https://api.maxstage.id/instance/{instance_uuid}/firewall/ipset/{ipset_id}/cidr

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{ipset_id} bigInteger required Defines which ipset to create cidr

Form Parameters

Parameter Type Description
cidr IP required CIDR of IPSet
description string required Description of CIDR

Delete CIDR IPSet Instance

curl "https://api.maxstage.id/instance/05c792b3-5abb-4fdf-8448-042a5c3868de/firewall/ipset/1/cidr/1" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "IP/CIDR of IPSet successfully deleted",
    "data": null
}

Delete CIDR IPSet Instance

HTTP Request

DELETE https://api.maxstage.id/instance/{instance_uuid}/firewall/ipset/{ipset_id}/cidr/{iplist_id}

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve
{ipset} bigInteger required Defines which ipset to delete
{iplist_id} UUID required Defines which iplist to delete

Get SSH Keys Instance

curl "https://api.maxstage.id/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/ssh/keys" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "VM #c4390e82-f39f-42a2-a4b5-2f244cbb33c7 ssh keys",
    "data": [
        {
            "id": 2,
            "title": "Macbook Mamah",
            "added_at": "29 June 2023 11:21"
        }
    ]
}

Get SSH Keys Instance

HTTP Request

GET https://api.maxstage.id/instance/{instance_uuid}/ssh/keys

Path Parameters

Parameter Type Description
{instance_uuid} UUID required Defines which instance to retrieve

Block Storage

Get Blocks Types

curl "https://api.maxstage.id/storage/blocks/types?location_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Block storage types",
    "data": [
        {
            "id": 3,
            "type": "HDD",
            "description": "Affordable, scalable persistent hard disk storage.",
            "price_per_hour": 2.77778,
            "price_per_month": 2000.0016
        },
        {
            "id": 4,
            "type": "SSD",
            "description": "High performance storage for workloads requiring rapid I/O.",
            "price_per_hour": 2.77778,
            "price_per_month": 2000.0016
        }
    ]
}

This endpoint retrieves block storage type.

HTTP Request

GET https://api.maxstage.id/storage/blocks/types?{location_id}

Path Parameters

Parameter Type Description
location_id bigInteger required Id of location.

Get My Block Storages

curl "https://api.maxstage.id/storage/blocks?location_id=1&instance_id=c5a43e67-2ecf-4938-82d4-43106f640ff5" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "My block storages",
    "data": {
        "data": [
            {
                "id": "41f26dc9-1d11-4ad7-b195-796bcf6ba52d",
                "name": "test-storage-aja",
                "type": "HDD",
                "attached_to": {
                    "id": null,
                    "hostname": null
                },
                "size": 50,
                "size_description": "50GB",
                "status": "ACTIVE",
                "price_per_hour": "138.88900",
                "est_this_month_price": 44650,
                "cost": 8981.48874,
                "created_at": "17-11-2023 14:30:39"
            },
            {
                "id": "64e8625a-cc60-45a9-af4b-9e185a5b433e",
                "name": "test-storage-aja-2",
                "type": "HDD",
                "attached_to": {
                    "id": null,
                    "hostname": null
                },
                "size": 50,
                "size_description": "50GB",
                "status": "ACTIVE",
                "price_per_hour": "138.88900",
                "est_this_month_price": 44644,
                "cost": 8976.85911,
                "created_at": "17-11-2023 14:32:57"
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

This endpoint retrieves my block storages.

HTTP Request

GET https://api.maxstage.id/storage/blocks?location_id={location_id}&instance_id={instance_uuid}

Path Parameters

Parameter Type Description
{location_id} bigInteger required Id of location.
{instance_uuid} UUID required Defines which instance to retrieve

Create Block Storage

curl "https://api.maxstage.id/instance/create" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "name: test-storage-aja" \
  -d "location_id: 1" \
  -d "storage_type: 1" \
  -d "size: 50" \

The above command returns JSON structured like this:

{
    "message": "Block storage will be created in a moment.",
    "data": {
        "block_storage_id": "1bae7db6-da35-4d64-a0e7-49f2956ac630"
    }
}

This endpoint create block storage.

HTTP Request

POST https://api.maxstage.id/instance/create

Form Parameters

Parameter Type Description
name integer required Cpu of instance
location_id bigInteger required Id of location.
storage_type integer required Id of type storage
size integer required Size of storage

Attach Block Storage

curl "https://api.maxstage.id/storage/blocks/1/attach" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "instance_id: 09f0b36a-cfdb-43ef-b529-5a0ec9eb8f5b" \

The above command returns JSON structured like this:

{
    "type": "INVALID_OPERATION",
    "message": "Block storage already attached to an instance"
}

This endpoint attach block storage.

HTTP Request

PATCH https://api.maxstage.id/storage/blocks/{block_storage_id}/attach

Form Parameters

Parameter Type Description
instance_id UUID required Defines which instance to attach block storage

Path Parameters

Parameter Type Description
block_storage_id bigInteger required Id of block storage

Detach Block Storage

curl "https://api.maxstage.id/storage/blocks/1/detach" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "type": "INVALID_OPERATION",
    "message": "Block storage is not attached to any instance"
}

This endpoint detach block storage.

HTTP Request

PATCH https://api.maxstage.id/storage/blocks/{block_storage_id}/detach

Path Parameters

Parameter Type Description
block_storage_id bigInteger required Id of block storage

Resize Block Storage

curl "https://api.maxstage.id/storage/blocks/1/resize" \
  -X PATCH \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "size: 50" \

The above command returns JSON structured like this:

{
    "message": "Block storage successfully resized",
    "data": {
        "storage_id": "41f26dc9-1d11-4ad7-b195-796bcf6ba52d",
        "new_size": "60GB"
    }
}

This endpoint resize block storage.

HTTP Request

PATCH https://api.maxstage.id/storage/blocks/{block_storage_id}/resize

Form Parameters

Parameter Type Description
size integer Size of storage

Path Parameters

Parameter Type Description
block_storage_id bigInteger required Id of block storage

Delete Block Storage

curl "https://api.maxstage.id/storage/blocks/1/delete" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Block storage successfully removed",
    "data": {
        "storage_id": "41f26dc9-1d11-4ad7-b195-796bcf6ba52d"
    }
}

This endpoint delete block storage.

HTTP Request

DELETE https://api.maxstage.id/storage/blocks/{block_storage_id}/delete

Path Parameters

Parameter Type Description
block_storage_id bigInteger required Id of block storage

Get Available Blocks

curl "https://api.maxstage.id/storage/blocks/options?location_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Available non-attached block storage",
    "data": [
        {
            "id": "41f26dc9-1d11-4ad7-b195-796bcf6ba52d",
            "name": "test-storage-aja",
            "size": "50GB"
        },
        {
            "id": "64e8625a-cc60-45a9-af4b-9e185a5b433e",
            "name": "test-storage-aja-2",
            "size": "50GB"
        },
    ]
}

This endpoint Get available non attached block storages.

HTTP Request

GET https://api.maxstage.id/storage/blocks/options?{location_id}

Path Parameters

Parameter Type Description
{location_id} bigInteger required Id of location.

Credentials

Get SSH

curl "https://api.maxstage.id/credential/ssh" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "My SSH Key",
    "data": [
        {
            "id": 1,
            "title": "Macbook Mamah",
            "number_of_instance": 0,
            "created_at": "28 June 2023 14:46",
            "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZ36wRF0fUwvM1KnUi+92LvnrktA3mvuEpkhGEzpMnqF5F2PdTxT0Jr6uI0SloQiJP/U0Gsu1sWYrYo75Y3hzZjmfuiEK3PwRIbGGYGEhlaZV5ZEGxbAJk0/bLaC1yPuCm4NTLFC2T5ZUMyknHVbz/ctjI19s+fRF3pNFh3lPDhLxD4IpIIsXhqNJQd4jf8r0U6XlMbjoZlpaQkCUB9yRp25kO7cpzAxaqqpDlPrwTN4ZPxSBU9OnoUfdFY1Viwy6yBiDn7dhiFSx8mzYo3Z/b1DyP26x9kg1cfu4WSRNFfabC6Ma22sZ4sOcIeWZ4oMnwrJ8PF8zq8nfYtZtTQyPPxa7grdjEVedIo1ck9Pe2f3he+KsfXddXDFcPfuUp9BM8OqWRDlTj1mEp4UNeYTsUIT4xJCjb7L9Z+dODEx3SLX3O8FLEbqK0rnmkqsV8GPcZEP1rtSl8qTRsbbYaaDklTnA/oo+zHHij/j6H5DaS2w9v/VOcMjMZrnSAOb4bBlztLRzi0/MmvjI/P30XkfPeGagdxE66nisf0/5q/FByM9GptksC40VOX+YqHJlPnMynK2aoRJYN8J7fCXyJPof+CE4BSUzSSDEnXzFobk+sHFuOoaft/SbCDFmeVfC4Tiz54Gf/2d0WOAZHDiyvtAzorx793pix46eXr/Ig71cApQ== paslangjaya@192.168.1.4"
        }
    ]
}

Get SSH

HTTP Request

GET https://api.maxstage.id/credential/ssh

Create SSH

curl "https://api.maxstage.id/credential/ssh" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \
  -d "title: Macbook Ayahh" \
  -d "key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZ36wRF0fUwvM1KnUi+92LvnrktA3mvuEpkhGEzpMnqF5F2PdTxT0Jr6uI0SloQiJP" \

The above command returns JSON structured like this:

{
    "message": "SSH Key successfully created",
    "data": {
        "credential_id": 1
    }
}

Create SSH

HTTP Request

POST https://api.maxstage.id/credential/ssh

Form Parameters

Parameter Type Description
title string required Title of ssh
key string required Public key of ssh

Delete SSH

curl "https://api.maxstage.id/credential/ssh/2" \
  -X DELETE \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "SSH key successfully deleted",
    "data": {
        "credential_id": 2
    }
}

Delete SSH

HTTP Request

DELETE https://api.maxstage.id/credential/ssh/{ssh_id}

Get SSH Options

curl "https://api.maxstage.id/credential/ssh/options" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "SSH key options",
    "data": [
        {
            "id": 2,
            "title": "Macbook Mamah"
        }
    ]
}

Get SSH Options

HTTP Request

GET https://api.maxstage.id/credential/ssh/options

Get Unassigned SSH

curl "https://api.maxstage.id/credential/ssh/options?vm_id=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "SSH key options",
    "data": [
        {
            "id": 2,
            "title": "Macbook Mamah"
        }
    ]
}

Get Unassigned SSH

HTTP Request

GET https://api.maxstage.id/credential/ssh/options

Query Parameters

Parameter Type Description
vm_id bigInteger required Id of vm

Billings

Get Monthly Summary

curl "https://api.maxstage.id/billing/summary" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "This month summary",
    "data": {
        "current_balance": 377295.71126,
        "last_topup": [
            {
                "amount": 100000,
                "date": "26/08/2024"
            },
            {
                "amount": 15000,
                "date": "20/04/2024"
            }
        ],
        "current_cost": 0,
        "actual_balance": 377295.71126,
        "estimated_monthly_total": 766320
    }
}

Get Monthly Summary

HTTP Request

GET https://api.maxstage.id/billing/summary

Get Deposit History

curl "https://api.maxstage.id/billing/deposit/history?page=1&limit=10" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Deposit histories",
    "data": {
        "data": [
            {
                "id": "a5defc97-1918-4101-ac9e-2594943bfa0c",
                "invoice_number": "MXIPR08202400001",
                "description": "Top-up Rp100.000,00",
                "detail": {
                    "amount": 100000,
                    "vat": 11000,
                    "payment_fee": 5000
                },
                "method": "BCA VA",
                "status": "SUCCESS",
                "created_at": "26 August 2024 14:00:05",
                "expired_at": null
            },
            {
                "id": "b4e19643-9e19-4cb1-bf35-06754c9664eb",
                "invoice_number": null,
                "description": "Top-up Rp130.000,00",
                "detail": {
                    "amount": 130000,
                    "vat": 14300,
                    "payment_fee": 5000
                },
                "method": "BCA VA",
                "status": "PENDING",
                "created_at": "20 April 2024 09:16:18",
                "expired_at": "20 April 2024 09:46:17"
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Deposit History

HTTP Request

GET https://api.maxstage.id/billing/deposit/history

Query Parameters

Parameter Type Description
limit integer optional Limit response data deposit history.
page integer optional Number of page.

Export Deposit History

curl "https://api.maxstage.id/billing/deposit/history/export?start=2023-05-01&end=2023-05-31" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:


Get Deposit History

HTTP Request

GET https://api.maxstage.id/billing/deposit/history/export

Query Parameters

Parameter Type Description
start date optional Start of data.
end date optional End of date.

Get Detail Deposit History

curl "https://api.maxstage.id/billing/deposit/01978dd8-bcae-4e7a-8041-bcf909092974/details" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Invoice detail",
    "data": {
        "code": "BC",
        "method": "BCA VA",
        "method_img": "https://images.duitku.com/hotlink-ok/BCA.SVG",
        "detail": {
            "amount": 100000,
            "vat": 11000,
            "payment_fee": 5000
        },
        "va_number": "7007014007544410",
        "qr_string": null,
        "payment_url": "https://sandbox.duitku.com/topup/topupdirectv2.aspx?ref=BC24C0KD3MMSIWF4SAJ",
        "status": "SUCCESS",
        "expired_at": "26 August 2024 14:30:04",
        "expired_seconds": null
    }
}

Get Detail Deposit History

HTTP Request

GET https://api.maxstage.id/billing/deposit/{invoice_id}/details

Query Parameters

Parameter Type Description
{invoice_id} bigInteger required Defines which invoice to retrieve

Get Credit History

curl "https://api.maxcloud.id/v1/billing/credit/history?page=1&limit=10&start=2023-05-01&end=2023-05-31&type=A" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Credit history",
    "data": {
        "data": [
            {
                "id": 4,
                "type": "Add",
                "description": "Reward First Topup Reward of Rp10.000,00 for ykurniawan3@local.id",
                "amount": "Rp10.000,00",
                "balance_after": "Rp110.000,00",
                "created_at": "2023-07-10 13:06:10"
            },
            {
                "id": 3,
                "type": "Add",
                "description": "Top-up Rp100.000,00",
                "amount": "Rp100.000,00",
                "balance_after": "Rp100.000,00",
                "created_at": "2023-07-10 13:05:10"
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Credit History

HTTP Request

GET https://api.maxcloud.id/v1/billing/credit/history

Query Parameters

Parameter Type Description
limit integer optional Limit response data deposit history.
page integer optional Number of page.
start date optional Start of data.
end date optional End of date.
type string optional A (add) or D (deduct).

Get Postpaid Monthly Summary

curl "https://api.maxstage.id/billing/postpaid/summary" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Postpaid customer billing summary",
    "data": {
        "total_paid": 0,
        "total_paid_amount": 0,
        "total_unpaid": 1,
        "total_unpaid_amount": 547201.75256,
        "est_month_cost": 392257.20665
    }
}

Get Postpaid Monthly Summary

HTTP Request

GET https://api.maxstage.id/billing/postpaid/summary

Get Monthly Summary

curl "https://api.maxstage.id/billing/postpaid/invoices" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Your invoices",
    "data": {
        "page": {
            "total": 1,
            "count": 1,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        },
        "data": [
            {
                "invoice_number": "MXIPOST02202400001",
                "description": "Resource usage PT. Mencari Cinta Sejati on January 2024",
                "detail": {
                    "amount": 492974.55186,
                    "vat": 54227.2007,
                    "total": 547201.75256
                },
                "status": "Not Paid",
                "method": null,
                "created_at": "26 February 2024 10:07:08"
            }
        ]
    }
}

Get Monthly Summary

HTTP Request

GET https://api.maxstage.id/billing/postpaid/invoices

Download Invoice

curl "https://api.maxstage.id/billing/invoice/1/download" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:


Download Invoice

HTTP Request

GET https://api.maxstage.id/billing/invoice/{invoice_id}/download

Query Parameters

Parameter Type Description
{invoice_id} bigInteger required Defines which invoice to retrieve

Get Payment Methods

curl "https://api.maxstage.id/billing/v2/payment-methods?amount=100000" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Available payment methods",
    "data": {
        "bank": [
            {
                "name": "PERMATA VA",
                "code": "BT",
                "image": "https://images.duitku.com/hotlink-ok/PERMATA.PNG",
                "fee": 0,
                "vat": 1100
            },
            {
                "name": "CIMB NIAGA VA",
                "code": "B1",
                "image": "https://images.duitku.com/hotlink-ok/B1.PNG",
                "fee": 3000,
                "vat": 1100
            },
            {
                "name": "ATM BERSAMA VA",
                "code": "A1",
                "image": "https://images.duitku.com/hotlink-ok/A1.PNG",
                "fee": 0,
                "vat": 1100
            },
            {
                "name": "BNI VA",
                "code": "I1",
                "image": "https://images.duitku.com/hotlink-ok/I1.PNG",
                "fee": 3000,
                "vat": 1100
            },
            {
                "name": "MANDIRI VA H2H",
                "code": "M2",
                "image": "https://images.duitku.com/hotlink-ok/MV.PNG",
                "fee": 3000,
                "vat": 1100
            },
            {
                "name": "BCA VA",
                "code": "BC",
                "image": "https://images.duitku.com/hotlink-ok/BCA.SVG",
                "fee": 5000,
                "vat": 1100
            },
            {
                "name": "BRI VA",
                "code": "BR",
                "image": "https://images.duitku.com/hotlink-ok/BR.PNG",
                "fee": 4000,
                "vat": 1100
            },
            {
                "name": "BNC VA",
                "code": "NC",
                "image": "https://images.duitku.com/hotlink-ok/NC.PNG",
                "fee": 4000,
                "vat": 1100
            }
        ],
        "card": [
            {
                "name": "CREDIT CARD",
                "code": "VC",
                "image": "https://images.duitku.com/hotlink-ok/VC.PNG",
                "fee": 2822,
                "vat": 1100
            }
        ],
        "ritel": [
            {
                "name": "RETAIL",
                "code": "FT",
                "image": "https://images.duitku.com/hotlink-ok/retail.PNG",
                "fee": 7500,
                "vat": 1100
            },
            {
                "name": "INDOMARET",
                "code": "IR",
                "image": "https://images.duitku.com/hotlink-ok/IR.PNG",
                "fee": 7500,
                "vat": 1100
            }
        ],
        "ewallet": [
            {
                "name": "OVO",
                "code": "OV",
                "image": "https://images.duitku.com/hotlink-ok/OV.PNG",
                "fee": 166,
                "vat": 1100
            },
            {
                "name": "SHOPEEPAY APP",
                "code": "SA",
                "image": "https://images.duitku.com/hotlink-ok/SHOPEEPAY.PNG",
                "fee": 0,
                "vat": 1100
            },
            {
                "name": "DANA",
                "code": "DA",
                "image": "https://images.duitku.com/hotlink-ok/DA.PNG",
                "fee": 0,
                "vat": 1100
            }
        ],
        "qris": [
            {
                "name": "SHOPEEPAY QRIS",
                "code": "SP",
                "image": "https://images.duitku.com/hotlink-ok/SHOPEEPAY.PNG",
                "fee": 0,
                "vat": 1100
            },
            {
                "name": "LINKAJA QRIS",
                "code": "LQ",
                "image": "https://images.duitku.com/hotlink-ok/LINKAJA.PNG",
                "fee": 0,
                "vat": 1100
            },
            {
                "name": "NOBU QRIS",
                "code": "NQ",
                "image": "https://images.duitku.com/hotlink-ok/NQ.PNG",
                "fee": 0,
                "vat": 1100
            }
        ]
    }
}

Get Payment Methods

HTTP Request

GET https://api.maxstage.id/billing/v2/payment-methods

Query Parameters

Parameter Type Description
amount integer optional Amount of payment methods.

Create Invoice Payment

curl "https://api.maxstage.id/billing/v2/topup" \
  -X POST \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Invoice created",
    "data": {
        "merchant_code": "DS13539",
        "reference_number": "DS1353924PO24JJJNT45SC25",
        "payment_url": "https://sandbox.duitku.com/topup/topupdirectv2.aspx?ref=BC24C0KD3MMSIWF4SAJ",
        "amount": 116000,
        "details": {
            "amount": 100000,
            "payment_fee": 5000,
            "vat": 11000
        },
        "va_number": "7007014007544410",
        "qr_string": null,
        "invoice_id": "a5defc97-1918-4101-ac9e-2594943bfa0c"
    }
}

Create Invoice Payment

HTTP Request

POST https://api.maxstage.id/billing/v2/topup

Form Parameters

Parameter Type Description
amount integer required Amount of payment.
payment_method string required Payment method of payment.

Get Report Summary

curl "https://api.maxstage.id/billing/report/summary?limit=10&page=1" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Summary billing report",
    "data": {
        "data": [
            {
                "id": null,
                "billing periode": "March 2024",
                "billing_date": "2024-03-30T17:00:00.000000Z",
                "status": "Not Settled",
                "fully_settle": false,
                "total": 13195.00188,
                "can_download": false
            },
            {
                "id": null,
                "billing periode": "February 2024",
                "billing_date": "2024-02-28T17:00:00.000000Z",
                "status": "Settled",
                "fully_settle": true,
                "total": 728280.1034,
                "can_download": true
            }
        ],
        "page": {
            "total": 2,
            "count": 2,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1
        }
    }
}

Get Report Summary

HTTP Request

GET https://api.maxstage.id/billing/report/summary

Query Parameters

Parameter Type Description
limit integer optional Limit response data deposit history.
page integer optional Number of page.

Get Summary Detail

curl "https://api.maxstage.id/billing/report/summary/2023-11-30/details" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:

{
    "message": "Billing report for 337fc06d-d85f-4cd0-acc8-4b497831e1dd",
    "data": {
        "id": "337fc06d-d85f-4cd0-acc8-4b497831e1dd",
        "billing periode": "January 2024",
        "billing_date": "2024-01-31",
        "status": "Settled",
        "fully_settle": true,
        "total": 492974.55186,
        "can_download": true,
        "services": [
            {
                "service": "Instance",
                "total": 349119.87828,
                "reports": [
                    {
                        "id": 85,
                        "service_name": "vm hostname",
                        "service_type": "Instance",
                        "tier_name": "AMD Epyc",
                        "tier_icon": null,
                        "total_cost": 18597.68693,
                        "details": [
                            {
                                "name": "SSD: 30 GB",
                                "base_price": 83.3334,
                                "total_uptime_hour": 58.37,
                                "total_cost": 4863.89278
                            },
                            {
                                "name": "CPU: 1 core",
                                "base_price": 118.05555,
                                "total_uptime_hour": 58.28,
                                "total_cost": 6880.67135
                            },
                            {
                                "name": "RAM: 2 GB",
                                "base_price": 83.33334,
                                "total_uptime_hour": 58.28,
                                "total_cost": 4856.94539
                            },
                            {
                                "name": "SNAPSHOT: snp-2 - 50 GB",
                                "base_price": 104.1665,
                                "total_uptime_hour": 18.87,
                                "total_cost": 1965.27463
                            },
                            {
                                "name": "BACKUP: 30 GB",
                                "base_price": 41.6667,
                                "total_uptime_hour": 0.53,
                                "total_cost": 22.22224
                            },
                            {
                                "name": "SNAPSHOT: snp-1 - 50 GB",
                                "base_price": 104.1665,
                                "total_uptime_hour": 0.08,
                                "total_cost": 8.68054
                            }
                        ]
                    },
                    {
                        "id": 87,
                        "service_name": "vm hostname",
                        "service_type": "Instance",
                        "tier_name": "AMD Epyc",
                        "tier_icon": null,
                        "total_cost": 38923.74424,
                        "details": [
                            {
                                "name": "CPU: 1 core",
                                "base_price": 118.05555,
                                "total_uptime_hour": 124.63,
                                "total_cost": 14713.65796
                            },
                            {
                                "name": "RAM: 1 GB",
                                "base_price": 41.66667,
                                "total_uptime_hour": 124.63,
                                "total_cost": 5193.05721
                            },
                            {
                                "name": "SSD: 30 GB",
                                "base_price": 83.3334,
                                "total_uptime_hour": 124.63,
                                "total_cost": 10386.11942
                            },
                            {
                                "name": "BACKUP: 50 GB",
                                "base_price": 69.4445,
                                "total_uptime_hour": 123,
                                "total_cost": 8541.6735
                            },
                            {
                                "name": "BACKUP: 30 GB",
                                "base_price": 41.6667,
                                "total_uptime_hour": 1.52,
                                "total_cost": 63.19452
                            },
                            {
                                "name": "SNAPSHOT: snp-1 - 50 GB",
                                "base_price": 104.1665,
                                "total_uptime_hour": 0.25,
                                "total_cost": 26.04163
                            }
                        ]
                    }
                ]
            },
            {
                "service": "Public Network",
                "total": 97027.78427,
                "reports": [
                    {
                        "id": 56,
                        "service_name": "192.168.1.183",
                        "service_type": "Public Network",
                        "total_cost": 24999.9984,
                        "details": [
                            {
                                "name": "IP: 1 IP address",
                                "base_price": 34.72222,
                                "total_uptime_hour": 720,
                                "total_cost": 24999.9984
                            }
                        ]
                    },
                    {
                        "id": 82,
                        "service_name": "100.100.100.100",
                        "service_type": "Public Network",
                        "total_cost": 24999.9984,
                        "details": [
                            {
                                "name": "IP: 1 IP address",
                                "base_price": 34.72222,
                                "total_uptime_hour": 720,
                                "total_cost": 24999.9984
                            }
                        ]
                    }
                ]
            },
            {
                "service": "Block Storage",
                "total": 46826.88931,
                "reports": [
                    {
                        "id": 84,
                        "service_name": "block storage",
                        "service_type": "Block Storage",
                        "total_cost": 40000.032,
                        "details": [
                            {
                                "name": "BLOCK STORAGE HDD: 20 GB",
                                "base_price": 55.5556,
                                "total_uptime_hour": 720,
                                "total_cost": 40000.032
                            }
                        ]
                    },
                    {
                        "id": 89,
                        "service_name": "block storage",
                        "service_type": "Block Storage",
                        "total_cost": 6826.85731,
                        "details": [
                            {
                                "name": "BLOCK STORAGE HDD: 20 GB",
                                "base_price": 55.5556,
                                "total_uptime_hour": 122.88,
                                "total_cost": 6826.85731
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

Get Summary Detail

HTTP Request

GET https://api.maxstage.id/billing/deposit/{summary_date}/details

Query Parameters

Parameter Type Description
{summary_date} date required Defines which invoice to retrieve

Export Service Usage

curl "https://api.maxstage.id/billing/reports/1/export" \
  -X GET \
  -H "x-apikey: meowmeowmeow" \
  -H "Accept: application/json" \

The above command returns JSON structured like this:


Export Service Usage

HTTP Request

GET https://api.maxstage.id/billing/reports/{{summary_id}}/export

Query Parameters

Parameter Type Description
{summary_id} bigInteger required Defines which summary to export