Introduction
Welcome to the ion-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
meowmeowmeowwith your API key.
API of ion 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://apiion.frog.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://apiion.frog.id/network/vswitches
Get Detail Private Network
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/network/options/vswitches
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {location_id} | bigInteger | required | Id of location |
Get Free Public Network
curl "https://apiion.frog.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://apiion.frog.id/network/public/options
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {location_id} | bigInteger | required | Id of location |
Get Public Networks
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/network/public/create
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location |
Change Instance IP
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/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://apiion.frog.id/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://apiion.frog.id/systems
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {location_id} | bigInteger | optional | Id of location |
Get Locations
curl "https://apiion.frog.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://apiion.frog.id/locations
Get Tiers
curl "https://apiion.frog.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://apiion.frog.id/icon/tier/tier-1.svg"
},
{
"id": 3,
"name": "Optimized Cloud Compute",
"description": "Optimized Cloud with that create more opportunity.",
"icon": "https://apiion.frog.id/icon/tier/tier-2.svg"
}
]
}
Get Tiers
HTTP Request
GET https://apiion.frog.id/tiers
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {location_id} | bigInteger | optional | Id of location |
Get Tier Pricing
curl "https://apiion.frog.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://apiion.frog.id/tiers/{tier_id}/pricing
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {tier_id} | bigInteger | required | Id of tier |
Get Instance Size Template
curl "https://apiion.frog.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://apiion.frog.id/instance/size-template
Instances
Get All Instances
curl "https://apiion.frog.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://apiion.frog.id/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://apiion.frog.id/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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/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://apiion.frog.id/instance/{instance_uuid}/detail
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Get RRD Data
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/instance/{instance_uuid}/console-websocket
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Reinstall Instance
curl "https://apiion.frog.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://apiion.frog.id/instance/{instance_uuid}/reinstall
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Delete Instance
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/instance/{instance_uuid}/start
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Stop Instance
curl "https://apiion.frog.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://apiion.frog.id/instance/{instance_uuid}/stop
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Restart Instance
curl "https://apiion.frog.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://apiion.frog.id/instance/{instance_uuid}/restart
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {instance_uuid} | UUID | required | Defines which instance to retrieve |
Get Options
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/firewall-rule-types
Update Default Firewall Instance
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/storage/blocks/types?{location_id}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location. |
Get My Block Storages
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/storage/blocks/options?{location_id}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {location_id} | bigInteger | required | Id of location. |
Credentials
Get SSH
curl "https://apiion.frog.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://apiion.frog.id/credential/ssh
Create SSH
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/credential/ssh/{ssh_id}
Get SSH Options
curl "https://apiion.frog.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://apiion.frog.id/credential/ssh/options
Get Unassigned SSH
curl "https://apiion.frog.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://apiion.frog.id/credential/ssh/options
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vm_id | bigInteger | required | Id of vm |
Billings
Get Monthly Summary
curl "https://apiion.frog.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://apiion.frog.id/billing/summary
Get Deposit History
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/billing/postpaid/summary
Get Monthly Summary
curl "https://apiion.frog.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://apiion.frog.id/billing/postpaid/invoices
Download Invoice
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/billing/v2/payment-methods
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| amount | integer | optional | Amount of payment methods. |
Create Invoice Payment
curl "https://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.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://apiion.frog.id/billing/reports/{{summary_id}}/export
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {summary_id} | bigInteger | required | Defines which summary to export |