Introduction
Welcome to the Frog-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 Frog 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 Networks
This endpoint retrieves a list of all private networks (vSwitches) associated with the user's account. It provides key details for each network, including its name, location, CIDR (network IP), and status.
curl "https://api.frog.id/v1/network/vswitches" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "location_id=1" \
-d "search=private network"
Get List Private Networks
HTTP Request
GET https://api.frog.id/v1/network/vswitches
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | optional | Filter private networks by location ID. |
| search | string | optional | Search private networks by name. |
Response Example
The above command returns JSON structured like this:
{
"message": "Your Private Network",
"data": [
{
"uuid": "5b75aeb3-eb8e-4ccc-97fc-b617beb25886",
"name": "private network test",
"tag": 7999,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"network_ip": "10.47.231.0/24",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"status": "Active",
"created_at": "17 March 2026 16:15"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | UUID | The unique identifier of the private network. |
| name | string | The display name of the private network. |
| tag | integer | The VLAN tag associated with the network. |
| location | string | The data center location name. |
| location_flag | string | URL pointing to the SVG icon of the country flag. |
| network_ip | string | The CIDR block of the private network (e.g., "10.47.231.0/24"). |
| gateway.uuid | UUID | The identifier of the assigned gateway (if any). |
| gateway.hostname | string | The hostname of the assigned gateway (if any). |
| gateway.private_ip | string | The internal IP address of the gateway (if any). |
| status | string | The current status of the network (e.g., "Active"). |
| created_at | string | The date and time when the private network was created. |
Get Detail Private Network
This endpoint retrieves full details of a specific private network, including its resource utilization (active instances) and configuration (VLAN details and gateway status).
curl "https://api.frog.id/v1/network/vswitch/5b75aeb3-eb8e-4ccc-97fc-b617beb25886/details" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Detail Private Network
HTTP Request
GET https://api.frog.id/v1/network/vswitch/{vswitch_uuid}/details
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch_uuid | UUID | required | Defines which vswitch to retrieve |
Response Example
The above command returns JSON structured like this:
{
"message": "Private Network details",
"data": {
"uuid": "5b75aeb3-eb8e-4ccc-97fc-b617beb25886",
"name": "private network test",
"tag": 7999,
"vid": "vloc7999",
"network_ip": "10.47.231.0/24",
"location": {
"id": 1,
"name": "Jakarta 1"
},
"total_active_instance": 0,
"status": "Active",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"created_at": "17 March 2026 16:15",
"last_update_at": "17 March 2026 16:16"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | UUID | The unique identifier of the private network. |
| name | string | The display name of the private network. |
| tag | integer | The VLAN tag. |
| vid | string | The virtual network identifier string. |
| location.id | integer | The unique identifier of the location. |
| location.name | string | The name of the data center location. |
| total_active_instance | integer | The number of active Virtual Machine instances currently connected to this network. |
| status | string | The current status of the network. |
| gateway.uuid | UUID | The identifier of the assigned gateway. |
| gateway.hostname | string | The gateway hostname. |
| gateway.private_ip | string | The gateway internal IP. |
| created_at | string | The creation date of the network. |
| last_update_at | string | The date when the network configuration was last updated. |
Get Private Network IPs
This endpoint lists all IP addresses that have been allocated to instances within a specific private network. It includes details about the instance associated with each IP and supports pagination.
curl "https://api.frog.id/v1/network/vswitch/5b75aeb3-eb8e-4ccc-97fc-b617beb25886/ips" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Private Network IPs
HTTP Request
GET https://api.frog.id/v1/network/vswitch/{vswitch_id}/ips
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch_uuid | UUID | required | Defines which vswitch to retrieve |
Response Example
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
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| data | array | List of allocated IP addresses and their associated metadata. |
| data[].ip_address | string | The specific private IP address. |
| data[].vm_uuid | UUID | The unique identifier of the Virtual Machine using this IP. |
| data[].hostname | string | The hostname of the associated Virtual Machine. |
| page.total | integer | Total number of IP records found. |
| page.count | integer | Number of records in the current page. |
| page.per_page | integer | Records per page limit. |
| page.current_page | integer | The current page number. |
| page.total_pages | integer | Total available pages. |
Create Private Network
This endpoint initiates the creation of a new private network (vSwitch) in a specified location. The private network will be provisioned with a unique VLAN tag and a dedicated private IP range.
curl "https://api.frog.id/v1/network/vswitch/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "Local switch 1", "location_id": 1}'
Create Private Network
HTTP Request
POST https://api.frog.id/v1/network/vswitch/create
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| name | string | required | Name of Private Network |
| location_id | bigInteger | required | Id of location |
Response Example
The above command returns JSON structured like this:
{
"message": "Private Network will be created in a moment",
"data": {
"hv_net": "vloc7999",
"network_ip": "10.47.231.0/24"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| hv_net | string | The internal hypervisor network identifier (e.g., "vloc7999"). |
| network_ip | string | The allocated CIDR block for the new private network. |
Update Private Network Gateway
This endpoint updates the public gateway associated with a private network. This allows instances within the private network to access external networks through the specified gateway.
curl "https://api.frog.id/v1/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/gateway" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"public_gateway": "0f0415fa-ed50-49c5-ab7a-b9df1a091c05"}'
Update Private Network Gateway
HTTP Request
PATCH https://api.frog.id/v1/network/vswitch/{vswitch_uuid}/gateway
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch_uuid | UUID | required | Defines which vswitch to update |
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| public_gateway | string | required | Public gateway of Private Network |
Response Example
The above command returns a success message indicating the gateway has been updated.
Get Private Network Graph
This endpoint retrieves the topological structure of a private network in a graph format (nodes and edges). It's used to visualize the connections between the network, its gateway, and the connected VM instances.
curl "https://api.frog.id/v1/network/vswitch/1/graph" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Private Network Graph
HTTP Request
GET https://api.frog.id/v1/network/vswitch/{vswitch_id}/graph
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch_id | UUID | required | Defines which vswitch to retrieve graph data for |
Response Example
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.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
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| nodes | array | A list of graph nodes representing networks, instances, or groups. |
| nodes[].id | string | Unique identifier for the node. |
| nodes[].type | string | The type of node (e.g., "network", "instance", "free"). |
| nodes[].position | object | Coordinate positions (x, y) for UI rendering. |
| nodes[].data | object | Additional metadata for the node (labels, IPs, OS details). |
| edges | array | A list of connections (edges) between the nodes. |
| edges[].id | string | Unique identifier for the edge. |
| edges[].source | string | The ID of the source node. |
| edges[].target | string | The ID of the target node. |
Update Position of Private Network Gateway Graph
This endpoint updates the visual position (X and Y coordinates) of a specific node within the network graph. This is used to persist user-defined layouts in the network visualization tool.
curl "https://api.frog.id/v1/network/vswitch/30994a7c-0523-4432-97f7-1ae577ffa2e6/graph/update-pos" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"private_ip": 1, "pos_x": 100, "pos_y": 400}'
Update Position of Private Network Gateway Graph
HTTP Request
PATCH https://api.frog.id/v1/network/vswitch/{vswitch_uuid}/graph/update-pos
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch_uuid | UUID | required | Defines which vswitch graph to update |
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| private_ip | integer | required | The ID of the private IP/node to move. |
| pos_x | integer | required | The new X coordinate. |
| pos_y | integer | required | The new Y coordinate. |
Response Example
The above command returns JSON structured like this:
{
"message": "Pos updated",
"data": null
}
Response Parameters
The response returns a success message indicating the position has been updated.
Get Private Network Gateway Options
This endpoint retrieves a list of private networks that are available to be used as a gateway for another specific private network within a given location.
curl "https://api.frog.id/v1/network/options/gateways?location_id=1&vswitch=30994a7c-0523-4432-97f7-1ae577ffa2e6" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Private Network Gateway
HTTP Request
GET https://api.frog.id/v1/network/options/gateways
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | required | Id of location |
| vswitch | UUID | required | UUID of Private Network |
Response Example
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"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | UUID | The unique identifier of the available private network. |
| name | string | The name of the private network. |
| hv_tag | integer | The internal hypervisor tag assigned to the network. |
| location | string | The data center location name. |
| created_at | string | The creation date of the network. |
| last_update_at | string | The date when the network was last updated. |
Get Private Network Options
This endpoint retrieves a list of all available private networks (vSwitches) for a specific location. It's used for populating selection options in provisioning or configuration workflows.
curl "https://api.frog.id/v1/network/options/vswitches?location_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Private Network Options
HTTP Request
GET https://api.frog.id/v1/network/options/vswitches
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location |
Response Example
The above command returns JSON structured like this:
{
"message": "Your Private Networks",
"data": [
{
"uuid": "8c00d83a-56e7-4571-b1e0-1c35a8f83c78",
"name": "balancers",
"tag": 6,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"network_ip": "10.39.251.0/24",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"status": "Active",
"created_at": "20 January 2026 20:41"
},
{
"uuid": "cbb1efe2-d787-4d12-b80c-db53be1e69c1",
"name": "test",
"tag": 7,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"network_ip": "10.236.39.0/24",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"status": "Active",
"created_at": "30 January 2026 11:37"
},
{
"uuid": "84291d33-c43d-4db9-825a-5610e259388a",
"name": "asas",
"tag": 8,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"network_ip": "10.139.234.0/24",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"status": "Active",
"created_at": "10 March 2026 10:21"
},
{
"uuid": "06cdf5ae-8ddc-4cca-95cc-b5402ea0ccd6",
"name": "private network test",
"tag": 7999,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"network_ip": "10.249.116.0/24",
"gateway": {
"uuid": null,
"hostname": null,
"private_ip": null
},
"status": "Active",
"created_at": "18 March 2026 12:56"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | UUID | The unique identifier of the private network. |
| name | string | The display name of the private network. |
| tag | integer | The VLAN tag. |
| location | string | The data center location name. |
| network_ip | string | The CIDR block of the private network. |
| gateway.uuid | UUID | The identifier of the assigned gateway (if any). |
| gateway.hostname | string | The hostname of the assigned gateway (if any). |
| gateway.private_ip | string | The internal IP address of the gateway (if any). |
| status | string | The current status of the network. |
| created_at | string | The date and time when the network was created. |
Get Free Public Network Options
This endpoint retrieves a list of available (unassigned) reserved public IP addresses for a specific location. These IPs can be used when assigning a public IP to a Virtual Machine or network gateway.
curl "https://api.frog.id/v1/network/public/options?location_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Free Public Network Options
HTTP Request
GET https://api.frog.id/v1/network/public/options
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location |
Response Example
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"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | The unique identifier of the reserved public IP. |
| ip_address | string | The available public IP address. |
Get Reserved Public IPs
This endpoint retrieves a list of all public IP addresses that have been reserved by the user. It provides details for each IP, including the instance it is currently assigned to, its location, and usage costs.
curl "https://api.frog.id/v1/network/public/reserved?limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get List Reserved Public IPs
HTTP Request
GET https://api.frog.id/v1/network/public/reserved
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit response data instance. |
| page | integer | optional | Number of page. |
Response Example
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
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| data | array | List of reserved public IP addresses. |
| data[].id | UUID | The unique identifier of the reserved IP. |
| data[].ip_address | string | The reserved public IP address. |
| data[].instance | object | Details of the instance utilizing this IP. |
| data[].instance.id | UUID | The unique identifier of the associated instance. |
| data[].instance.hostname | string | The hostname of the associated instance. |
| data[].location | object | The data center location of the reserved IP. |
| data[].location.id | integer | The location identifier. |
| data[].location.name | string | The name of the data center location. |
| data[].price_per_hour | double | The cost per hour for reserving the IP. |
| data[].est_this_month_price | long | The estimated total cost for this month. |
| data[].cost | double | The total accumulated cost for this IP. |
| data[].created_at | string | The date when the IP was reserved. |
| page.total | integer | Total number of reserved IP records. |
| page.count | integer | Number of records in the current page. |
| page.per_page | integer | Records per page limit. |
| page.current_page | integer | The current page number. |
| page.total_pages | integer | Total available pages. |
Create Public Network
This endpoint allows users to reserve a new public IP address in a specified location. The newly created IP will be added to the user's list of reserved IPs and can be assigned to an instance.
curl "https://api.frog.id/v1/network/public/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"location_id": 1}'
Create Public Network
HTTP Request
POST https://api.frog.id/v1/network/public/create
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location |
Response Example
The above command returns JSON structured like this:
{
"message": "Public Network successfully created",
"data": {
"ip_address": "192.168.1.243"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| ip_address | string | The newly allocated public IP address. |
Change Instance IP
This endpoint updates the Virtual Machine instance associated with a specific reserved public IP address. It effectively reassigns the public IP from one instance to another or attaches it to a new one.
curl "https://api.frog.id/v1/network/public/27ed6b76-ee01-4ae4-8173-c4372c080764/change-instance" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"instance_id": "4c657c65-1696-487e-9154-6992fab3818d"}'
Update Instance IP Assignment
HTTP Request
PATCH https://api.frog.id/v1/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 |
Response Example
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"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| ip_id | UUID | The identifier of the reserved public IP. |
| instance_id | UUID | The identifier of the newly assigned Virtual Machine instance. |
Update RDNS IP
This endpoint allows users to set or update the Reverse DNS (RDNS) record for a specific public IP address. This is typically used for branding or email server reputation.
curl "https://api.frog.id/v1/network/public/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/rdns" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"rdns": "testajabro.id"}'
Update Reverse DNS Record
HTTP Request
PATCH https://api.frog.id/v1/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 |
Response Example
The above command returns JSON structured like this:
{
"message": "RDNS successfully updated",
"data": "testajabro.id"
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| data | string | The updated domain name assigned to the Reverse DNS record. |
Delete Reserved IP
This endpoint releases a reserved public IP address. Once deleted, the IP is returned to the provider's pool and will no longer be available to the user.
curl "https://api.frog.id/v1/network/public/4228c1ad-4943-43ed-9e30-9701e12b0607/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Delete Reserved IP
HTTP Request
DELETE https://api.frog.id/v1/network/public/{ip_uuid}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| ip_uuid | UUID | required | Defines which ip to delete |
Response Example
The above command returns JSON structured like this:
{
"message": "Reserved IP successfully removed",
"data": {
"ip_id": "4228c1ad-4943-43ed-9e30-9701e12b0607"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| ip_id | UUID | The identifier of the public IP that was successfully deleted. |
Pricings
Get Available Systems
This endpoint retrieves a list of available Operating Systems (OS) and their corresponding versions that can be installed on Virtual Machines. This includes detailed requirements such as minimum CPU, memory, storage, and default login credentials for each OS version.
curl "https://api.frog.id/v1/systems?location=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Available Systems
HTTP Request
GET https://api.frog.id/v1/systems
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location | integer | optional | Id of location |
Response Example
The above command returns JSON structured like this:
{
"message": "Available Systems",
"data": [
{
"id": 3,
"os_name": "Debian",
"image": "https://dev.gerrykribo.com/icon/os/debian.png",
"os_version": [
{
"id": 33,
"version": "1.2.0",
"description": "oke",
"min_cpu": 1,
"min_memory": 4,
"min_storage": 26,
"no_root_login": 1,
"default_username": {
"username": "Administrator",
"fixed": true
}
},
{
"id": 34,
"version": "1.2.1",
"description": "tes",
"min_cpu": 1,
"min_memory": 2,
"min_storage": 10,
"no_root_login": 1,
"default_username": {
"username": "Administrator",
"fixed": true
}
}
]
},
{
"id": 8,
"os_name": "Mikrotik",
"image": "https://dev.gerrykribo.com/icon/os/mikrotik.png",
"os_version": [
{
"id": 50,
"version": "6",
"description": "ros 6",
"min_cpu": 1,
"min_memory": 1,
"min_storage": 10,
"no_root_login": 0,
"default_username": {
"username": "root",
"fixed": false
}
}
]
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the OS family. |
| os_name | string | The name of the Operating System (e.g., "Debian", "Mikrotik"). |
| image | string | URL pointing to the OS logo or icon. |
| os_version | array | A list of available versions for this Operating System. |
| os_version[].id | integer | The unique identifier of the specific OS version. |
| os_version[].version | string | The version number or string (e.g., "1.2.0", "6"). |
| os_version[].description | string | A short description or note about this version. |
| os_version[].min_cpu | integer | The minimum CPU cores required to run this OS version. |
| os_version[].min_memory | integer | The minimum RAM (in GB) required. |
| os_version[].min_storage | integer | The minimum storage (in GB) required. |
| os_version[].no_root_login | integer | Indicates if root login is disabled (1) or allowed (0). |
| os_version[].default_username | object | The default login credentials configuration. |
| os_version[].default_username.username | string | The default username used for initial SSH access (e.g., "Administrator", "root"). |
| os_version[].default_username.fixed | boolean | Indicates if the default username is fixed (true) or can be changed (false). |
Get Locations
This endpoint retrieves a list of all available data center locations where Virtual Machines and other cloud resources can be provisioned. It provides the location name, country code, and the URL for the country flag.
curl "https://api.frog.id/v1/locations" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Locations
HTTP Request
GET https://api.frog.id/v1/locations
Response Example
The above command returns JSON structured like this:
{
"message": "Data center locations",
"data": [
{
"id": 1,
"name": "Jakarta 1",
"country": "ID",
"country_flag": "https://dev.gerrykribo.com/flags/id.svg"
},
{
"id": 15,
"name": "SIngapore 1",
"country": "SG",
"country_flag": "https://dev.gerrykribo.com/flags/sg.svg"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the data center location. |
| name | string | The display name of the data center (e.g., "Jakarta 1"). |
| country | string | The two-letter ISO country code (e.g., "ID", "SG"). |
| country_flag | string | URL pointing to the SVG icon of the country flag. |
Get Tiers
This endpoint returns a list of available service tiers (such as "Cloud Compute Scalable" or "Cloud Compute Epyc") for Virtual Machines. Each tier represents a specific performance class or generation of hardware.
curl "https://api.frog.id/v1/tiers?location=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Tiers
HTTP Request
GET https://api.frog.id/v1/tiers
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | optional | Id of location |
Response Example
The above command returns JSON structured like this:
{
"message": "Node tiers",
"data": [
{
"id": 1,
"name": "Cloud Compute Scalable",
"description": "Scalable",
"icon": "https://dev.gerrykribo.com/storage/tier/EStvyqQIRlRuXonjPUNu08Gsvuq3jrx2xPTafgkn.svg"
},
{
"id": 4,
"name": "Cloud Compute Epyc",
"description": "Epyc",
"icon": "https://dev.gerrykribo.com/icon/tier/tier-2.svg"
},
{
"id": 5,
"name": "Cloud Compute e5",
"description": "e5",
"icon": "https://dev.gerrykribo.com/icon/tier/tier-3.svg"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the node tier. |
| name | string | The display name of the tier (e.g., "Cloud Compute Scalable"). |
| description | string | A short description explaining the tier's performance or use case. |
| icon | string | URL pointing to an SVG icon representing the tier. |
Get Tier Pricing
This endpoint retrieves the specific pricing breakdown for a selected tier. It returns itemized costs (per hour, per day, and per month) for various resource components, including CPU, RAM, storage, snapshots, and backups.
curl "https://api.frog.id/v1/tiers/1/pricing" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Tier Pricing
HTTP Request
GET https://api.frog.id/v1/tiers/{tier_id}/pricing
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| tier_id | integer | required | Id of tier |
Response Example
The above command returns JSON structured like this:
{
"message": "Pricing list",
"data": [
{
"id": 1,
"name": "CPU",
"price_per_hour": 83.33472,
"price_per_day": 2000.03328,
"price_per_month": 60001
},
{
"id": 2,
"name": "RAM",
"price_per_hour": 41.66806,
"price_per_day": 1000.03344,
"price_per_month": 30001
},
{
"id": 4,
"name": "HDD",
"price_per_hour": 2.77917,
"price_per_day": 66.70008,
"price_per_month": 2001
},
{
"id": 5,
"name": "SSD",
"price_per_hour": 4.16806,
"price_per_day": 100.03344,
"price_per_month": 3001
},
{
"id": 7,
"name": "SNAPSHOT",
"price_per_hour": 2.08333,
"price_per_day": 49.99992,
"price_per_month": 1500
},
{
"id": 8,
"name": "BACKUP",
"price_per_hour": 1.3875,
"price_per_day": 33.3,
"price_per_month": 999
},
{
"id": 9,
"name": "CPU_SHARED",
"price_per_hour": 41.66667,
"price_per_day": 1000.00008,
"price_per_month": 30000
},
{
"id": 12,
"name": "BACKUP_RETENTION",
"price_per_hour": 0.69444,
"price_per_day": 16.66656,
"price_per_month": 500
},
{
"id": 6,
"name": "IP",
"price_per_hour": 34.72222,
"price_per_day": 833.33328,
"price_per_month": 25000
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the pricing component. |
| name | string | The name of the resource component (e.g., "CPU", "RAM", "SSD"). |
| price_per_hour | double | The cost of the component per hour of usage. |
| price_per_day | double | The calculated cost of the component per day. |
| price_per_month | double | The calculated cost of the component per month. |
Get Instance Size Template
This endpoint provides pre-defined Virtual Machine size templates (e.g., "Starter", "Exploring", "Advance"). These templates offer convenient, bundled configurations of CPU, RAM, and disk space for quick provisioning.
curl "https://api.frog.id/v1/instance/size-template" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Instance Size Template
HTTP Request
GET https://api.frog.id/v1/instance/size-template
Response Example
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,
"order": 1
},
{
"id": 2,
"title": "Exploring",
"total_cpu": 1,
"total_ram": 2,
"total_disk": 50,
"order": 1
},
{
"id": 3,
"title": "Nerdy",
"total_cpu": 2,
"total_ram": 2,
"total_disk": 60,
"order": 1
},
{
"id": 4,
"title": "Advance",
"total_cpu": 4,
"total_ram": 4,
"total_disk": 100,
"order": 1
},
{
"id": 7,
"title": "Mid",
"total_cpu": 2,
"total_ram": 2,
"total_disk": 40,
"order": 5
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the VM size template. |
| title | string | The display name or title of the template (e.g., "Starter"). |
| total_cpu | integer | The total number of CPU cores included in the template. |
| total_ram | integer | The total amount of RAM (in GB) included in the template. |
| total_disk | integer | The total amount of disk storage (in GB) included in the template. |
| order | integer | The sequence number for sorting the templates in UIs. |
Instances
Get All Instances
This endpoint retrieves a paginated list of all Virtual Machine instances associated with the user's account. It allows for filtering by hostname and status, as well as sorting by creation date or cost.
curl "https://api.frog.id/v1/instance?limit=3&page=1&search=hayo&sort=created_at,desc&statuses=Running,Error" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Get All Instances
HTTP Request
GET https://api.frog.id/v1/instance
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit the number of instances returned per page. |
| page | integer | optional | The page number to retrieve. |
| search | string | optional | Filter instances by hostname. |
| sort | string | optional | Sort results by created_at or cost. Supported values: created_at,asc, created_at,desc, cost,asc, cost,desc. |
| statuses | string | optional | Filter by instance status. Multiple statuses can be comma-separated (e.g., Running,Error,Stopped,Pending). |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machines list",
"data": {
"data": [
{
"uuid": "6d6c2cd0-fce7-4bda-80e6-99531cf1f911",
"hostname": "hayo",
"ip_address": "192.168.1.32",
"ipv6_address": "fc00:0000:0000:0000:be24:11ff:fe99:b495",
"cpu": 2,
"memory": "2 GB",
"storage": "60GB",
"status": "Running",
"os": {
"name": "Ubuntu",
"image": "https://dev.gerrykribo.com/icon/os/ubuntu.png"
},
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"tier": "Cloud Compute Epyc",
"price_per_hour": 757.77664,
"estimated_monthly_cost": 545599.1808,
"cost": 191631.39792,
"operation_flag": 0,
"created_at": "6 March 2026, 15:31"
}
],
"active_operation": 0,
"page": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A brief message indicating the result of the request. |
| data.data | array | A list of Virtual Machine instances. |
| data.data[].uuid | UUID | The unique identifier of the instance. |
| data.data[].hostname | string | The hostname of the instance. |
| data.data[].ip_address | string | The primary IPv4 address of the instance (if assigned). |
| data.data[].ipv6_address | string | The IPv6 address of the instance (if assigned). |
| data.data[].cpu | integer | Total CPU cores allocated to the instance. |
| data.data[].memory | string | Total RAM allocated (e.g., "2 GB"). |
| data.data[].storage | string | Total disk storage allocated (e.g., "60GB"). |
| data.data[].status | string | The current state of the instance (e.g., "Running"). |
| data.data[].os.name | string | The name of the Operating System. |
| data.data[].os.image | string | URL pointing to the OS icon. |
| data.data[].location | string | The data center location name. |
| data.data[].location_flag | string | URL pointing to the country flag icon. |
| data.data[].tier | string | The service tier name. |
| data.data[].price_per_hour | double | The hourly cost of the instance. |
| data.data[].estimated_monthly_cost | double | The projected cost for a full month of usage. |
| data.data[].cost | double | The actual accumulated cost for the current period. |
| data.data[].operation_flag | integer | Internal flag for ongoing operations. |
| data.data[].created_at | string | The timestamp when the instance was created. |
| data.active_operation | integer | Count of instances currently undergoing non-interruptible operations. |
| data.page.total | integer | Total number of instances across all pages. |
| data.page.count | integer | Number of instances in the current response. |
| data.page.per_page | integer | Maximum number of items per page. |
| data.page.current_page | integer | The actual page number returned. |
| data.page.total_pages | integer | Total number of available pages. |
Create Instance
This endpoint provisions a new Virtual Machine instance with specified hardware resources (CPU, RAM, storage), location, performance tier, and Operating System template.
curl "https://api.frog.id/v1/instance/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"location_id":1,"tier_id":1,"template_id":35,"hostname":"test-aja-0002","cpu":4,"memory":8,"storage":30,"username":"root","password":"Gaspol@12345","vswitch":"","ssh_keys":[],"use_dedicated_cpu":true,"include_backup":false,"use_public_ip":true,"public_network":""}'
Create Instance
HTTP Request
POST https://api.frog.id/v1/instance/create
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | required | Id of the data center location. |
| tier_id | integer | required | Id of the performance tier. |
| template_id | integer | required | Id of the OS template to be installed. |
| hostname | string | required | Desired hostname for the new instance. |
| cpu | integer | required | Number of CPU cores. |
| memory | integer | required | Amount of RAM in GB. |
| storage | integer | required | Disk storage size in GB. |
| username | string | required | Initial administrative username. |
| password | string | required | Initial password for the administrative user. |
| vswitch | UUID | optional | UUID of the private network (vSwitch) to connect to. |
| ssh_keys | array | optional | List of SSH key IDs to be injected. |
| use_dedicated_cpu | boolean | optional | If true, the instance will use dedicated CPU resources. |
| include_backup | boolean | optional | If true, a backup plan will be included. |
| use_public_ip | boolean | optional | If true, a public IPv4 address will be assigned. |
| public_network | UUID | optional | Specific identifier for the public network segment. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance is on creating progress",
"data": {
"uuid": "b616db3d-ff19-4c02-a18a-659ea1ac49ed"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the provisioning process has started. |
| uuid | UUID | The unique identifier of the newly created instance. |
Get Detail Instance
This endpoint retrieves comprehensive details for a specific Virtual Machine instance, including its hardware configuration, network addresses, pricing information, and current status.
curl "https://api.frog.id/v1/instance/6d6c2cd0-fce7-4bda-80e6-99531cf1f911/detail" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Get Detail Instance
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/detail
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to retrieve details for. |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machine details",
"data": {
"uuid": "6d6c2cd0-fce7-4bda-80e6-99531cf1f911",
"hostname": "hayo",
"username": "root",
"cpu": "2 CPU",
"is_cpu_dedicated": false,
"memory": "2048 MB",
"storage": "60 GB",
"status": "Running",
"os_name": "Ubuntu 18-Beneran_Bisa_Harusnya",
"public_ip": {
"ip_id": "d83116b4-6b62-4ad3-bcb0-ef0aded6efb4",
"ip_address": "192.168.1.32"
},
"ipv6_address": "fc00:0000:0000:0000:be24:11ff:fe99:b495",
"rdns": null,
"private_network": "-",
"location_id": 1,
"location": "Jakarta 1",
"location_flag": "https://dev.gerrykribo.com/flags/id.svg",
"tier_id": 4,
"tier": "Cloud Compute Epyc",
"os": {
"template_id": 22,
"version": "18-Beneran_Bisa_Harusnya",
"os_id": 6,
"name": "Ubuntu",
"image": "https://dev.gerrykribo.com/icon/os/ubuntu.png",
"min_cpu": 1,
"min_memory": 1,
"min_storage": 20
},
"price_per_hour": 757.77664,
"estimated_monthly_price": 545599.1808,
"cost": 191631.39792,
"operation_flag": 0,
"created_at": "06-03-2026 15:31:55",
"updated_at": "14-03-2026 18:02:09",
"last_started_at": "06-03-2026 15:32:34",
"last_backup_at": "14-03-2026 18:02:09"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | UUID | The unique identifier of the instance. |
| hostname | string | The hostname assigned to the instance. |
| username | string | The default login username for the instance. |
| cpu | string | Hardware CPU description (e.g., "2 CPU"). |
| is_cpu_dedicated | boolean | Indicates if the CPU resources are dedicated or shared. |
| memory | string | Hardware RAM description (e.g., "2048 MB"). |
| storage | string | Hardware storage description (e.g., "60 GB"). |
| status | string | The current operational status (e.g., "Running"). |
| os_name | string | The full name and version of the installed Operating System. |
| public_ip.ip_id | UUID | The unique identifier of the assigned public IP. |
| public_ip.ip_address | string | The assigned IPv4 address. |
| ipv6_address | string | The assigned IPv6 address. |
| rdns | string | The Reverse DNS record for the public IP (if set). |
| private_network | string | The name of the connected private network. |
| location_id | integer | Id of the data center location. |
| location | string | Name of the data center location. |
| location_flag | string | URL of the location's country flag icon. |
| tier_id | integer | Id of the performance tier. |
| tier | string | Name of the performance tier. |
| os.template_id | integer | Id of the OS template used. |
| os.version | string | Version string of the OS. |
| os.os_id | integer | Id of the OS family. |
| os.name | string | Name of the OS family. |
| os.image | string | URL of the OS icon. |
| os.min_cpu | integer | Minimum CPU requirement for this template. |
| os.min_memory | integer | Minimum RAM requirement for this template. |
| os.min_storage | integer | Minimum storage requirement for this template. |
| price_per_hour | double | The hourly cost of the instance. |
| estimated_monthly_price | double | Projected monthly cost. |
| cost | double | Accumulated cost for the current period. |
| operation_flag | integer | Internal operation status flag. |
| created_at | string | Timestamp of instance creation. |
| updated_at | string | Timestamp of the last configuration update. |
| last_started_at | string | Timestamp of the last time the instance was started. |
| last_backup_at | string | Timestamp of the last completed backup. |
Get RRD Data
This endpoint retrieves Round Robin Database (RRD) metrics for a specific instance, providing time-series data for CPU usage, memory consumption, network traffic, and disk I/O.
curl "https://api.frog.id/v1/instance/6d6c2cd0-fce7-4bda-80e6-99531cf1f911/rrd?periode=hour" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get RRD Data
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/rrd
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| periode | string | required | The time interval for metrics. Supported values: hour, day, week, month, year. |
Response Example
The above command returns JSON structured like this:
{
"message": "RRD data",
"data": {
"cpu": [
{
"time": "2026-03-25 04:25",
"cpu": 4.05
},
{
"time": "2026-03-25 04:26",
"cpu": 4.1
},
{
"time": "2026-03-25 04:27",
"cpu": 4.16
}
],
"memory": [
{
"time": "2026-03-25 04:25",
"raw_max_memory": 4.295,
"max_memory": "4 GB",
"raw_usage_memory": 1.114,
"usage_memory": "1.11 GB"
},
{
"time": "2026-03-25 04:26",
"raw_max_memory": 4.295,
"max_memory": "4 GB",
"raw_usage_memory": 1.114,
"usage_memory": "1.11 GB"
},
{
"time": "2026-03-25 04:27",
"raw_max_memory": 4.295,
"max_memory": "4 GB",
"raw_usage_memory": 1.114,
"usage_memory": "1.11 GB"
}
],
"network": [
{
"time": "2026-03-25 04:25",
"raw_netin": 0,
"netin": "40 b",
"raw_netout": 0,
"netout": "0 b"
},
{
"time": "2026-03-25 04:26",
"raw_netin": 0,
"netin": "40 b",
"raw_netout": 0,
"netout": "0 b"
},
{
"time": "2026-03-25 04:27",
"raw_netin": 0,
"netin": "40 b",
"raw_netout": 0,
"netout": "0 b"
}
],
"disk": [
{
"time": "2026-03-25 04:25",
"raw_diskwrite": 0,
"diskwrite": "0 b",
"raw_diskread": 0,
"diskread": "0 b"
},
{
"time": "2026-03-25 04:26",
"raw_diskwrite": 0,
"diskwrite": "0 b",
"raw_diskread": 0,
"diskread": "0 b"
},
{
"time": "2026-03-25 04:27",
"raw_diskwrite": 0.026,
"diskwrite": "26.21 Kb",
"raw_diskread": 0,
"diskread": "0 b"
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| cpu | array | List of CPU usage data points. |
| cpu[].time | string | Data point timestamp. |
| cpu[].cpu | double | CPU usage percentage. |
| memory | array | List of memory usage data points. |
| memory[].time | string | Data point timestamp. |
| memory[].raw_max_memory | double | Maximum memory available (raw value). |
| memory[].max_memory | string | Human-readable maximum memory. |
| memory[].raw_usage_memory | double | Current memory usage (raw value). |
| memory[].usage_memory | string | Human-readable memory usage. |
| network | array | List of network traffic data points. |
| network[].time | string | Data point timestamp. |
| network[].raw_netin | double | Incoming traffic (raw value). |
| network[].netin | string | Human-readable incoming traffic. |
| network[].raw_netout | double | Outgoing traffic (raw value). |
| network[].netout | string | Human-readable outgoing traffic. |
| disk | array | List of disk I/O data points. |
| disk[].time | string | Data point timestamp. |
| disk[].raw_diskwrite | double | Disk write activity (raw value). |
| disk[].diskwrite | string | Human-readable disk write. |
| disk[].raw_diskread | double | Disk read activity (raw value). |
| disk[].diskread | string | Human-readable disk read. |
Clone Instance
This endpoint creates an exact duplicate of an existing Virtual Machine instance. You can provide a new hostname for the cloned instance to distinguish it from the original.
curl "https://api.frog.id/v1/instance/6d6c2cd0-fce7-4bda-80e6-99531cf1f911/clone" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"hostname": "local-666-1"}'
Clone Instance
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/clone
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the source instance to be cloned. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| hostname | string | required | The desired hostname for the new (cloned) instance. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance is on cloning progress",
"data": {
"uuid": "b9500440-897d-4e11-bab5-92e6b2ab5449"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the cloning process has started. |
| uuid | UUID | The unique identifier of the newly created (cloned) instance. |
Virtual Console Websocket
This endpoint generates a secure WebSocket URL and temporary password for accessing the Virtual Machine's console (VNC). This allows for direct browser-based interaction with the instance's display and keyboard.
curl "https://api.frog.id/v1/instance/6d6c2cd0-fce7-4bda-80e6-99531cf1f911/console-websocket" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Virtual Console Websocket
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/console-websocket
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Response Example
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"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the VNC connection request. |
| url | string | The unique WebSocket URL for the VNC connection. |
| password | string | A one-time temporary password for VNC authentication. |
Reinstall Instance
This endpoint triggers a complete reinstallation of the Operating System on an existing instance. This process will overwrite the existing system drive with the selected template and reset the administrative credentials.
curl "https://api.frog.id/v1/instance/6d6c2cd0-fce7-4bda-80e6-99531cf1f911/reinstall" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"template_id": 35, "username": "root", "password": "PASSWORD"}'
Reinstall Instance
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/reinstall
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to be reinstalled. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| template_id | integer | required | Id of the new OS template to install. |
| username | string | required | The new administrative username. |
| password | string | required | The new administrative password. |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machine is on reinstalling progress",
"data": {
"uuid": "b616db3d-ff19-4c02-a18a-659ea1ac49ed",
"hostname": "test-aja-0002"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the reinstallation process has started. |
| uuid | UUID | The unique identifier of the instance. |
| hostname | string | The hostname of the instance. |
Delete Instance
This endpoint permanently terminates and removes a Virtual Machine instance. You can optionally choose to release the associated public IP and delete any attached block storage volumes during this process.
curl "https://api.frog.id/v1/instance/e688866c-deeb-4e55-85cc-1c24fb2f1a71" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "_method: DELETE" \
-d '{"remove_ip": true, "remove_block_storage": true}'
Delete Instance
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to be deleted. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| remove_ip | boolean | required | If true, the public IP address will be released back to the pool. |
| remove_block_storage | boolean | required | If true, all attached block storage volumes will be deleted. |
| _method | string | required | Internal method override for HTTP clients (use DELETE). |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machine is on terminating process",
"data": {
"uuid": "b9500440-897d-4e11-bab5-92e6b2ab5449",
"hostname": "local-666-1"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the termination process has started. |
| uuid | UUID | The unique identifier of the instance being deleted. |
| hostname | string | The hostname of the instance being deleted. |
Start Instance
This endpoint initiates the power-on sequence for a stopped Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/start" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Start Instance
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/start
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to start. |
Response Example
The above command returns JSON structured like this:
{
"message": "Start process on instance #55b2bf38-ccce-42c7-8348-6aacbcbba7d6 will be executed.",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"hostname": "test-aja-0002"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the start process has been initiated. |
| uuid | UUID | The unique identifier of the instance. |
| hostname | string | The hostname of the instance. |
Stop Instance
This endpoint executes a graceful shutdown of a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/stop" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Stop Instance
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/stop
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to shut down. |
Response Example
The above command returns JSON structured like this:
{
"message": "Stop process on VM instance #55b2bf38-ccce-42c7-8348-6aacbcbba7d6 will be executed.",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"hostname": "test-aja-0002"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the stop process has been initiated. |
| uuid | UUID | The unique identifier of the instance. |
| hostname | string | The hostname of the instance. |
Restart Instance
This endpoint triggers a graceful reboot of a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/restart" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Restart Instance
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/restart
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to reboot. |
Response Example
The above command returns JSON structured like this:
{
"message": "Restart process on VM instance #55b2bf38-ccce-42c7-8348-6aacbcbba7d6 will be executed.",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"hostname": "test-aja-0002"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the restart process has been initiated. |
| uuid | UUID | The unique identifier of the instance. |
| hostname | string | The hostname of the instance. |
Get Instances Without Public IP
This endpoint retrieves a list of instances that do not have a public IP address assigned, filtered by a specific data center location.
curl "https://api.frog.id/v1/instance/options/no-ip?location_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Instances Without Public IP
HTTP Request
GET https://api.frog.id/v1/instance/options/no-ip
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | required | The unique identifier of the data center location. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance options with no public network",
"data": [
{
"id": "915d6082-3252-4a3d-9f5c-f03c6f022abf",
"hostname": "local-666-1",
"type": "Virtual Machine"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message indicating the type of instances being retrieved. |
| data[].id | UUID | The unique identifier of the instance. |
| data[].hostname | string | The hostname assigned to the instance. |
| data[].type | string | The type of resource (e.g., Virtual Machine). |
Update Reverse DNS Instance
This endpoint updates the Reverse DNS (RDNS) record for a specific reserved public IP address.
curl "https://api.frog.id/v1/network/public/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/rdns" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"rdns": "testajabro.id"}'
Update Reverse DNS
### HTTP Request
PATCH https://api.frog.id/v1/network/public/{reserved_ip_id}/rdns
### Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| reserved_ip_id | UUID | required | The unique identifier of the reserved public IP address. |
### Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| rdns | string | required | The new Reverse DNS domain name to assign. |
### Response Example
The above command returns JSON structured like this:
{
"message": "RDNS successfully updated",
"data": null
}
### Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the RDNS update was successful. |
| data | null | No additional data is returned for this operation. |
Update Private Network
This endpoint connects or disconnects a Virtual Machine instance from a Private Network (vSwitch).
curl "https://api.frog.id/v1/instance/7cf4a61d-ec47-4f87-a5af-fcab076f4fab/vswitch" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"vswitch": "761ae18f-3f1b-4ec6-9104-50669f4401b5"}'
Update Private Network
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/vswitch
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vswitch | UUID | required | The UUID of the vSwitch (Private Network) to connect to. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance's private network successfully changed",
"data": {
"vm_uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"private_ip": "10.25.116.1"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the private network update. |
| vm_uuid | UUID | The identifier of the instance. |
| private_ip | string | The internal IP address assigned within the private network. |
Add Public IP
This endpoint assigns a new public IP address to a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/ip/add" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Add Public IP
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/ip/add
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to add a public IP to. |
Response Example
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"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the public IP has been successfully added. |
| vm_uuid | UUID | The identifier of the instance. |
| ip_address | string | The allocated public IP address. |
Change Public IP Instance
This endpoint allows swapping the current public IP of an instance with another reserved IP or removing it.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/ip/change" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"public_network": "2aa4b4e9-6876-47ea-98be-e576505adab2"}'
Change Public IP
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/ip/change
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| public_network | UUID | optional | The UUID of the new public network to assign; omit to remove the public IP. |
Response Example
The above command returns JSON structured like this:
{
"message": "Public IP Address successfully added to the instance",
"data": {
"vm_uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"ip_address": "192.168.1.21"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the public network change. |
| vm_uuid | UUID | The identifier of the instance. |
| ip_address | string | The new public IP address assigned to the instance. |
Resize Instance
This endpoint dynamically scales an instance's hardware resources, such as CPU, memory, and storage.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/resize" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"cpu": 4, "memory": 4, "storage": 40, "use_dedicated_cpu": false}'
Resize Instance
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/resize
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| cpu | integer | required | The number of CPU cores to assign. |
| memory | integer | required | The amount of RAM in GB to assign. |
| storage | integer | required | The primary storage capacity in GB. |
| use_dedicated_cpu | boolean | optional | Whether to use dedicated CPU resources. |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machine is resized successfully",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"hostname": "test-aja-0002"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the resize was successful. |
| uuid | UUID | The identifier of the resized instance. |
| hostname | string | The current hostname of the instance. |
Set Password Instance
This endpoint updates the administrative password for a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/set-password" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"password": "meowmeow", "password_confirmation": "meowmeow"}'
Set Password
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/set-password
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| password | string | required | The new administrative password. |
| password_confirmation | string | required | Confirmation of the new password; must match the password field. |
Response Example
The above command returns JSON structured like this:
{
"message": "Virtual machine password successfully updated",
"data": null
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the password has been updated. |
| data | null | No additional data is returned for this operation. |
Change Tier
This endpoint initiates the migration of a Virtual Machine instance to a different service tier.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/change-tier" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"tier_id": 4}'
Change Tier
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/change-tier
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| tier_id | integer | required | The identifier of the new service tier to migrate to. |
Response Example
The above command returns JSON structured like this:
{
"message": "Your instance will be migrated in a moment...",
"data": {
"vm_uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the migration process has started. |
| vm_uuid | UUID | The identifier of the instance being migrated. |
Get Change Tier Cost Instance
This endpoint retrieves the estimated monthly cost adjustment for an instance before switching to a new service tier.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/change-tier/price?tier_id=4" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Change Tier Cost
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/change-tier/price
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| tier_id | integer | required | The identifier of the proposed service tier to estimate. |
Response Example
The above command returns JSON structured like this:
{
"message": "Estimated change tier cost",
"data": {
"current_monthly_cost": 570042.1152,
"estimated_new_monthly_cost": 640000.0512
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message for the cost estimation. |
| current_monthly_cost | float | The current monthly cost of the instance. |
| estimated_new_monthly_cost | float | The projected monthly cost after the tier change. |
Update Hostname
This endpoint modifies the hostname identifier for a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/update-hostname" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"hostname": "updated-hostname-666"}'
Update Hostname
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/update-hostname
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| hostname | string | required | The new hostname to assign to the instance. |
Response Example
The above command returns JSON structured like this:
{
"message": "Hostname successfully updated",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"hostname": "updated-hostname-666"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the hostname update was successful. |
| uuid | UUID | The identifier of the instance. |
| hostname | string | The updated hostname of the instance. |
Get Snapshots Instance
This endpoint retrieves a list of all existing snapshots associated with a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/snapshot/snapshots" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Snapshots
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/snapshot/snapshots
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance #55b2bf38-ccce-42c7-8348-6aacbcbba7d6 snapshots",
"data": [
{
"id": "2f02daeb-dbdd-4a20-a68f-330a16d647f4",
"name": "test_snapshot_99",
"description": "This is a description",
"status": "Available",
"current_hourly_price": 62.4999,
"current_cost": 62.4999,
"estimated_monthly": -6686.030968982638,
"is_current_state": true,
"attached_storage": [],
"created_at": "27 March 2026 13:01"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message for the snapshots retrieval. |
| data[].id | UUID | The unique identifier of the snapshot. |
| data[].name | string | The name assigned to the snapshot. |
| data[].description | string | The description of the snapshot. |
| data[].status | string | The current availability status (e.g., Available). |
| data[].current_hourly_price | double | Current hourly cost for snapshot storage. |
| data[].current_cost | double | Total accrued cost for this snapshot. |
| data[].estimated_monthly | double | Estimated monthly cost for retaining this snapshot. |
| data[].is_current_state | boolean | Indicates if this snapshot represents the current active state. |
| data[].attached_storage | array | List of attached block storage volumes included in the snapshot. |
| data[].created_at | string | The timestamp when the snapshot was created. |
Get Snapshot Price Instance
This endpoint retrieves the estimated monthly storage cost for snapshots based on the instance's performance tier.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/snapshot/price?tier_id=2" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Snapshot Price
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/snapshot/price
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| tier_id | integer | required | The identifier of the performance tier. |
Response Example
The above command returns JSON structured like this:
{
"message": "Estimated snapshot price per month",
"data": {
"price_per_month": 33600
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the pricing estimate. |
| price_per_month | integer | The estimated monthly cost for retaining snapshots. |
Create Snapshot Instance
This endpoint captures a point-in-time snapshot of a Virtual Machine's disks, allowing for future restoration.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/snapshot/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"test_snapshot_99","description":"This is a description"}'
Create Snapshot
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/snapshot/create
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to snapshot. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| name | string | required | A descriptive name for the snapshot. |
| description | string | required | Additional details about the purpose of the snapshot. |
Response Example
The above command returns JSON structured like this:
{
"message": "Creating snapshot...",
"data": {
"snap_uuid": "2f02daeb-dbdd-4a20-a68f-330a16d647f4"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the snapshot creation has started. |
| snap_uuid | UUID | The unique identifier of the newly created snapshot. |
Rollback Snapshot Instance
This endpoint performs a system rollback using a previously captured snapshot, reverting the instance to that point-in-time state.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/snapshot/2f02daeb-dbdd-4a20-a68f-330a16d647f4/rollback" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Rollback Snapshot
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/snapshot/{snapshot_uuid}/rollback
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| snapshot_uuid | UUID | required | The unique identifier of the snapshot to rollback to. |
Response Example
The above command returns JSON structured like this:
{
"message": "Rollback process started. You can start your instance up when the rollback process finish.",
"data": {
"uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the rollback process has started. |
| uuid | UUID | The identifier of the Virtual Machine being rolled back. |
Delete Snapshot Instance
This endpoint permanently removes an outdated or unnecessary snapshot.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/snapshot/2f02daeb-dbdd-4a20-a68f-330a16d647f4/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Delete Snapshot
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/snapshot/{snapshot_uuid}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| snapshot_uuid | UUID | required | The unique identifier of the snapshot to delete. |
Response Example
The above command returns JSON structured like this:
{
"message": "Removing snapshot...",
"data": {
"vm_uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6",
"snap_uuid": "55b2bf38-ccce-42c7-8348-6aacbcbba7d6"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the snapshot removal has started. |
| vm_uuid | UUID | The identifier of the instance associated with the snapshot. |
| snap_uuid | UUID | The identifier of the removed snapshot. |
Get Backup Histories
This endpoint retrieves a historical list of all completed backups for a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/f60b59fb-c509-4e11-be26-c4813b528823/backup/history?limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Get Backup Histories
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/backup/history
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit the number of records returned per page. |
| page | integer | optional | The page number to retrieve. |
Response Example
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": "c69ac2ca-aa4b-4c48-9577-46eaed56cce4",
"schedule": "daily",
"current_cost": 15486.012,
"est_this_month": -39790.46679,
"size": 100,
"created_at": "15 March 2026 03:03",
"attached_storage": []
},
{
"id": "f520a6eb-8f8d-4057-a6a0-3f504d5cb422",
"schedule": "daily",
"current_cost": 17152.668,
"est_this_month": -41454.55722,
"size": 100,
"created_at": "14 March 2026 03:03",
"attached_storage": []
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the backup history request. |
| data.page.total | integer | Total number of backup records available. |
| data.page.count | integer | Number of records in the current page. |
| data.page.per_page | integer | Maximum number of records per page. |
| data.page.current_page | integer | The actual page number returned. |
| data.page.total_pages | integer | Total number of available pages. |
| data.data[].id | UUID | The unique identifier of the backup archive. |
| data.data[].schedule | string | The type of schedule that triggered the backup (e.g., daily). |
| data.data[].current_cost | double | Accrued cost for this specific backup. |
| data.data[].est_this_month | double | Estimated monthly cost for retaining this backup. |
| data.data[].size | integer | The size of the backup archive in GB. |
| data.data[].created_at | string | The timestamp when the backup was completed. |
| data.data[].attached_storage | array | List of attached block storage volumes included in the backup. |
Restore Backup File
This endpoint initiates the process of restoring a Virtual Machine instance from a specific backup archive.
curl "https://api.frog.id/v1/instance/f60b59fb-c509-4e11-be26-c4813b528823/backup/restore/c69ac2ca-aa4b-4c48-9577-46eaed56cce4" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Restore Backup File
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/backup/restore/{backup_id}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| backup_id | UUID | required | The unique identifier of the backup archive to restore from. |
Response Example
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"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the restoration process has started. |
| vm_uuid | UUID | The identifier of the Virtual Machine being restored. |
| backup_uuid | UUID | The identifier of the backup archive used for restoration. |
Delete Backup File
This endpoint permanently deletes a specific backup archive file associated with a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/f60b59fb-c509-4e11-be26-c4813b528823/backup/f520a6eb-8f8d-4057-a6a0-3f504d5cb422/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "_method: DELETE"
Delete Backup File
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/backup/{backup_id}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| backup_id | UUID | required | The unique identifier of the backup archive to delete. |
Response Example
The above command returns JSON structured like this:
{
"message": "Backup file successfully removed.",
"data": {
"backup": "4fade578-f8a0-4ad1-bc2c-63ffa23554e0"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the backup file was removed. |
| backup | UUID | The identifier of the removed backup record. |
Get Backup Price
This endpoint retrieves the estimated price for backup services based on the instance's performance tier and storage size.
curl "https://api.frog.id/v1/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/price?tier_id=2" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Get Backup Price
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/backup/price
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| tier_id | integer | required | The identifier of the performance tier. |
Response Example
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
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the pricing estimate. |
| storage_size | integer | The total system drive storage size in GB. |
| block_storage_size | integer | The total size of attached block storage in GB. |
| price_per_hour | double | Estimated cost per hour. |
| price_per_month | integer | Estimated cost per month. |
Get Backup Schedules
This endpoint retrieves a list of all active backup schedules associated with a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Get Backup Schedules
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/backup/schedules
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Response Example
The above command returns JSON structured like this:
{
"message": "Instance backup schedules",
"data": [
{
"id": "fd27a80f-c9a3-44ed-af73-82d34ba31b76",
"schedule": {
"type": "weekly",
"time": 5,
"day": 7,
"description": "Weekly at Saturday 05:00"
},
"retention": 2,
"next_backup_at": "28-03-2026 05:00:00",
"created_at": "25 March 2026 14:49",
"updated_at": "25 March 2026 14:49"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | The unique identifier of the backup schedule. |
| schedule.type | string | The frequency of the backup (e.g., weekly). |
| schedule.time | integer | The hour when the backup runs. |
| schedule.day | integer | The day of the week for the backup (1-7). |
| schedule.description | string | A human-readable description of the schedule. |
| retention | integer | The number of backup versions retained. |
| next_backup_at | string | The timestamp for the next scheduled backup run. |
| created_at | string | The date when the schedule was created. |
| updated_at | string | The date when the schedule was last updated. |
Create Backup Schedule
This endpoint creates a new automated backup schedule for a Virtual Machine instance, allowing you to define the frequency and retention policy.
curl "https://api.frog.id/v1/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"retention": 2, "schedule_type": "weekly", "schedule_at": 1, "schedule_on": 1}'
Create Backup Schedule
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/backup/schedules/create
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| retention | integer | required | The number of backup versions to keep. |
| schedule_type | string | required | The frequency of backups (e.g., daily, weekly). |
| schedule_at | integer | required | The hour (0-23) when the backup should run. |
| schedule_on | integer | optional | The day of the week (1-7) for weekly backups. |
Response Example
The above command returns JSON structured like this:
{
"message": "Backup schedule successfully created",
"data": {
"schedule": "weekly"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the schedule was created. |
| schedule | string | The type of schedule that was established. |
Update Backup Schedule
This endpoint updates the parameters of an existing backup schedule for a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules/fd27a80f-c9a3-44ed-af73-82d34ba31b76/update" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"schedule_type": "daily", "schedule_at": 4, "retention": 3}'
Update Backup Schedule
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/backup/schedules/{schedule_id}/update
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| schedule_id | UUID | required | The unique identifier of the schedule to update. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| retention | integer | required | The updated number of backup versions to keep. |
| schedule_type | string | optional | The updated frequency (e.g., daily, weekly). |
| schedule_at | integer | optional | The updated hour (0-23) for the backup. |
| schedule_on | integer | optional | The updated day of the week (1-7) for weekly backups. |
Response Example
The above command returns JSON structured like this:
{
"message": "Backup schedule successfully updated",
"data": {
"next_run": "28-03-2026 05:00:00"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the schedule was updated. |
| next_run | string | The timestamp for the next scheduled backup execution. |
Delete Backup Schedule
This endpoint permanently removes an existing backup schedule from a Virtual Machine instance.
curl "https://api.frog.id/v1/instance/630d7152-1595-4014-a052-a49b647e58c1/backup/schedules/fd27a80f-c9a3-44ed-af73-82d34ba31b76/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "_method: DELETE"
Delete Backup Schedule
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/backup/schedules/{schedule_id}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| schedule_id | UUID | required | The unique identifier of the schedule to delete. |
Response Example
The above command returns JSON structured like this:
{
"message": "Backup schedule successfully removed",
"data": {
"backup": "4d852d9a-5f34-422f-8b96-f92a014c32d1",
"remove_file": true
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the schedule was removed. |
| backup | UUID | The identifier of the removed backup schedule record. |
| remove_file | boolean | Indicates if the associated schedule metadata was removed. |
Get Default Firewall Policy
This endpoint retrieves the default incoming traffic policy (ACCEPT or DROP) for a specific Virtual Machine instance's network interface.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/default" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Default Firewall Policy
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/firewall/default
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Response Example
The above command returns JSON structured like this:
{
"message": "Default network firewall policy",
"data": {
"policy_key": "A",
"policy": "ACCEPT"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message for the default firewall policy retrieval. |
| policy_key | string | The shorthand key for the policy (A for ACCEPT, D for DROP). |
| policy | string | The full descriptive name of the default policy. |
Get Firewall Rules Type
This endpoint retrieves a list of predefined firewall rule templates, such as SSH, HTTP, and HTTPS, to simplify rule creation.
curl "https://api.frog.id/v1/firewall-rule-types" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Firewall Rules Type
HTTP Request
GET https://api.frog.id/v1/firewall-rule-types
Response Example
The above command returns JSON structured like this:
{
"message": "Firewall rule types",
"data": [
{
"name": "Custom HTTP",
"protocol": "tcp",
"dest_port": 80,
"dest_port_editable": 1
},
{
"name": "MySQL",
"protocol": "tcp",
"dest_port": 3306,
"dest_port_editable": 0
},
{
"name": "test2",
"protocol": "udp",
"dest_port": 0,
"dest_port_editable": 1
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the rule types retrieval. |
| data[].name | string | The name of the predefined service or template. |
| data[].protocol | string | The associated network protocol (tcp, udp). |
| data[].dest_port | integer | The default destination port for this rule type. |
| data[].dest_port_editable | integer | Indicates if the port can be modified (1 for true, 0 for false). |
Update Default Firewall Policy
This endpoint updates the default firewall action for an instance, defining how unmatched incoming traffic is handled globally.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/default/update" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"action": "A"}'
Update Default Firewall Policy
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/firewall/default/update
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| action | string | required | The default action to set: A (ACCEPT) or D (DROP). |
Response Example
The above command returns JSON structured like this:
{
"message": "Default firewall policy successfully updated",
"data": {
"action": "ACCEPT"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the default policy update. |
| action | string | The newly applied global action for the firewall interface. |
Get Firewall Rules
This endpoint retrieves a paginated list of all active firewall rules for a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/rules?page=1&limit=10" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get Firewall Rules
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/firewall/rules
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| page | integer | optional | The page number to retrieve for pagination. |
| limit | integer | optional | The maximum number of rules to return per page. |
Response Example
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
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message for the firewall rules retrieval. |
| data.data[].id | string | The unique identifier of the firewall rule. |
| data.data[].source | string | The source IP or CIDR range (if not using IPSet). |
| data.data[].source_ipset.name | string | The name of the IPSet group used as source. |
| data.data[].source_ipset.cidr | array | List of CIDR ranges in the referenced IPSet group. |
| data.data[].destination_port | integer | The destination port assigned to the rule. |
| data.data[].action | string | The rule action code (A or D). |
| data.data[].action_desc | string | Full description of the action (ACCEPT or DROP). |
| data.data[].protocol | string | The network protocol (tcp, udp, icmp). |
| data.data[].is_enable | integer | Indicates if the rule is active (1) or inactive (0). |
| data.data[].description | string | The user-defined description of the rule. |
| data.data[].created_at | string | The timestamp when the rule was created. |
| data.page.total | integer | Total number of firewall rules found. |
| data.page.current_page | integer | The current page number being viewed. |
Create Firewall
This endpoint defines a new firewall rule for a Virtual Machine instance to control incoming traffic.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"destination_port":"24","action":"A","protocol":"tcp","description":"test","source_ip":"192.168.1.14","use_ipset":false}'
Create Firewall
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/firewall/create
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| source_ip | IP/CIDR | optional | The source IP or CIDR range to permit or block; required if use_ipset is false. |
| source_ipset | integer | optional | The identifier of the IPSet group to use; required if use_ipset is true. |
| destination_port | integer | required | The specific port number for the traffic rule. |
| action | string | required | The action to take: A (ACCEPT) or D (DROP). |
| protocol | string | required | The network protocol: tcp, udp, or icmp. |
| description | string | required | A brief explanation of the rule's purpose. |
| use_ipset | boolean | required | Set to true to use a predefined IPSet group as the source. |
Response Example
The above command returns JSON structured like this:
{
"message": "Firewal rule successfully created.",
"data": {
"description": "test"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the firewall rule creation was successful. |
| description | string | The description of the newly created rule. |
Update Firewall Instance
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/92/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.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_rule_id} | 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 Firewall Rule Status
This endpoint toggles the active status (Enabled/Disabled) of a specific firewall rule without deleting it.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/93/update-status" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Update Firewall Rule Status
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/firewall/{firewall_id}/update-status
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| firewall_id | integer | required | The unique identifier of the firewall rule. |
Response Example
The above command returns JSON structured like this:
{
"message": "Rule successfully enabled",
"data": {
"id": 93
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the rule status has been updated. |
| id | integer | The identifier of the toggled firewall rule. |
Delete Firewall
This endpoint permanently removes an existing firewall rule from a specific Virtual Machine instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/92/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Delete Firewall
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/firewall/{firewall_id}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| firewall_id | integer | required | The unique identifier of the firewall rule to delete. |
Response Example
The above command returns JSON structured like this:
{
"message": "Firewall rule successfully deleted",
"data": null
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message indicating the firewall rule has been deleted. |
| data | null | No additional data is returned for this operation. |
Get IPSet Groups
This endpoint retrieves all IPSet groups created for a specific instance, including their constituent CIDR ranges.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/ipset/ipsets?limit=3&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get IPSet Groups
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/firewall/ipset/ipsets
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| page | integer | optional | The page number to retrieve for pagination. |
| limit | integer | optional | The maximum number of IPSet groups to return per page. |
Response Example
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
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message for the IPSets retrieval. |
| data.data[].id | integer | The unique identifier of the IPSet group. |
| data.data[].name | string | The user-defined name of the IPSet group. |
| data.data[].description | string | The description of the IPSet group. |
| data.data[].iplist[].id | integer | The identifier of a specific CIDR entry within the set. |
| data.data[].iplist[].cidr | string | The IP address or CIDR range. |
| data.data[].iplist[].description | string | The description assigned to the CIDR entry. |
| data.page.total | integer | Total number of IPSet groups found. |
| data.page.current_page | integer | The current page number being viewed. |
Create IPSet Group
This endpoint defines a new IPSet group for an instance, allowing you to organize multiple IP addresses for bulk firewall rules.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/ipset/create" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "test_ipset_1", "description": "test"}'
Create IPSet Group
HTTP Request
PATCH https://api.frog.id/v1/instance/{instance_uuid}/firewall/ipset/create
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| name | string | required | A unique name for the IPSet group. |
| description | string | required | A brief description of the group's purpose. |
Response Example
The above command returns JSON structured like this:
{
"message": "IPSet successfully created",
"data": {
"vm_uuid": "05c792b3-5abb-4fdf-8448-042a5c3868de",
"ipset": "test_ipset"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the IPSet group creation. |
| vm_uuid | UUID | The identifier of the instance associated with the set. |
| ipset | string | The name of the newly created IPSet group. |
Delete IPSet Group
This endpoint removes an entire IPSet group from an instance, including all its CIDR entries.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/ipset/40/delete" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Delete IPSet Group
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/firewall/ipset/{ipset_id}/delete
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| ipset_id | integer | required | The identifier of the IPSet group to delete. |
Response Example
The above command returns JSON structured like this:
{
"message": "IPSet successfully deleted",
"data": null
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the deletion of the IPSet group. |
| data | null | No additional data is returned for this operation. |
Add CIDR to IPSet
This endpoint adds a specific CIDR range or IP address to an existing IPSet group for an instance.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/ipset/39/cidr" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"cidr": "[IP_ADDRESS]", "description": "Test IP for IPSet"}'
Add CIDR to IPSet
HTTP Request
POST https://api.frog.id/v1/instance/{instance_uuid}/firewall/ipset/{ipset_id}/cidr
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| ipset_id | integer | required | The identifier of the IPSet group to add the CIDR to. |
Body Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| cidr | string | required | The IP address or CIDR range to add (e.g., 192.168.1.1/32). |
| description | string | required | A brief description of the purpose of this IP/CIDR entry. |
Response Example
The above command returns JSON structured like this:
{
"message": "IP/CIDR for IPSet successfully created",
"data": {
"cidr": "1.1.1.1"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the IPSet CIDR creation. |
| cidr | string | The CIDR range that was successfully added. |
Remove CIDR from IPSet
This endpoint removes a specific IP/CIDR entry from an existing IPSet group, narrowing the rule's scope.
curl "https://api.frog.id/v1/instance/55b2bf38-ccce-42c7-8348-6aacbcbba7d6/firewall/ipset/39/cidr/1" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Remove CIDR from IPSet
HTTP Request
DELETE https://api.frog.id/v1/instance/{instance_uuid}/firewall/ipset/{ipset_id}/cidr/{iplist_id}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance. |
| ipset_id | integer | required | The indentifier of the IPSet group. |
| iplist_id | integer | required | The unique identifier of the CIDR entry within the IPSet group. |
Response Example
The above command returns JSON structured like this:
{
"message": "IP/CIDR of IPSet successfully deleted",
"data": null
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A confirmation message for the removal of the IP/CIDR entry. |
| data | null | No additional data is returned for this operation. |
Get SSH Keys
This endpoint retrieves a list of all SSH public keys associated with a specific Virtual Machine instance for terminal access.
curl "https://api.frog.id/v1/instance/a5d1836a-96b1-4144-bf4f-108ecd6f5abe/ssh/keys" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json"
Get SSH Keys
HTTP Request
GET https://api.frog.id/v1/instance/{instance_uuid}/ssh/keys
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_uuid | UUID | required | The unique identifier of the instance to retrieve SSH keys for. |
Response Example
The above command returns JSON structured like this:
{
"message": "VM #a5d1836a-96b1-4144-bf4f-108ecd6f5abe ssh keys",
"data": [
{
"id": 2,
"title": "Macbook Mamah",
"added_at": "29 June 2023 11:21"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string | A summary message indicating the instance whose SSH keys are being listed. |
| data[].id | integer | The unique identifier of the SSH key. |
| data[].title | string | The label or title assigned to the SSH key. |
| data[].added_at | string | The date and time when the SSH key was added to the instance. |
Block Storage
Type Block Storage Price
This endpoint retrieves the available block storage types and their corresponding prices for a specific location.
curl "https://api.frog.id/v1/storage/blocks/types?location_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Blocks Types
HTTP Request
GET https://api.frog.id/v1/storage/blocks/types
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | required | Id of location. |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storage types",
"data": [
{
"id": 1,
"type": "HDD",
"description": "Affordable, scalable persistent hard disk storage.",
"price_per_hour": 2.77778,
"price_per_month": 2000
},
{
"id": 2,
"type": "SSD",
"description": "High performance storage for workloads requiring rapid I/O.",
"price_per_hour": 2.77778,
"price_per_month": 2000
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The identifier of the storage type. |
| type | string | The type of storage (e.g., HDD, SSD). |
| description | string | A brief description of the storage performance and use case. |
| price_per_hour | double | The rental cost per hour. |
| price_per_month | integer | The estimated rental cost per month. |
Get My Block Storages
This endpoint retrieves a list of all block storage volumes associated with your account. You can filter by location or instance, and use pagination parameters.
curl "https://api.frog.id/v1/storage/blocks?location_id=1&instance_id=c5a43e67-2ecf-4938-82d4-43106f640ff5&limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get My Block Storages
HTTP Request
GET https://api.frog.id/v1/storage/blocks
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | bigInteger | optional | Id of location. |
| instance_uuid | UUID | optional | Defines which instance to retrieve |
| limit | integer | optional | Limit of data to retrieve |
| page | integer | optional | Page of data to retrieve |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storages",
"data": {
"data": [
{
"id": "635949a5-157f-4a41-a29c-06df272ca8aa",
"name": "testblockstorage",
"location": "Jakarta 1",
"type": "SSD",
"attached_to": {
"id": null,
"hostname": null
},
"size": 250,
"size_description": "250GB",
"status": "ACTIVE",
"price_per_hour": "694.44500",
"est_this_month_price": -6540098,
"cost": 273611.33,
"created_at": "04-03-2025 14:15:51"
},
{
"id": "bd553f5d-6dea-4ad3-9fd1-839017c20e82",
"name": "testblockstorage01",
"location": "Jakarta 1",
"type": "SSD",
"attached_to": {
"id": null,
"hostname": null
},
"size": 100,
"size_description": "100GB",
"status": "ACTIVE",
"price_per_hour": "277.77800",
"est_this_month_price": -2615816,
"cost": 109444.532,
"created_at": "04-03-2025 15:04:08"
},
{
"id": "d38f4ac2-da14-4f7e-a053-06faf9ffbbd4",
"name": "halloStorage",
"location": "Jakarta 1",
"type": "HDD",
"attached_to": {
"id": null,
"hostname": null
},
"size": 100,
"size_description": "100GB",
"status": "ACTIVE",
"price_per_hour": "277.77800",
"est_this_month_price": -468536,
"cost": 109166.754,
"created_at": "20-01-2026 17:16:05"
},
{
"id": "adb38488-587c-4753-ba43-c70cdb5dced5",
"name": "test-storage",
"location": "Jakarta 1",
"type": "HDD",
"attached_to": {
"id": null,
"hostname": null
},
"size": 100,
"size_description": "100GB",
"status": "ACTIVE",
"price_per_hour": "277.77800",
"est_this_month_price": -89662,
"cost": 0,
"created_at": "18-03-2026 13:13:01"
}
],
"page": {
"total": 4,
"count": 4,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| data | array | List of block storage volumes. |
| data[].id | UUID | Unique identifier for the volume. |
| data[].name | string | Display name of the volume. |
| data[].location | string | Data center location name. |
| data[].type | string | Storage type (HDD/SSD). |
| data[].attached_to | object | Details of the instance the volume is attached to. |
| data[].attached_to.id | UUID | Identifier of the instance (null if unattached). |
| data[].attached_to.hostname | string | Hostname of the instance (null if unattached). |
| data[].size | integer | Capacity in GB. |
| data[].size_description | string | Human-readable size string. |
| data[].status | string | Current operational status. |
| data[].price_per_hour | double | Hourly rental cost. |
| data[].est_this_month_price | long | Estimated total cost for this month. |
| data[].cost | double | Accumulated cost for this volume. |
| data[].created_at | string | Date when storage was created. |
| page | object | Pagination details. |
| page.total | integer | Total records found. |
| page.count | integer | Records in the current page. |
| page.per_page | integer | Max records per page. |
| page.current_page | integer | Current page index. |
| page.total_pages | integer | Total available pages. |
Create Block Storage
This endpoint creates a new block storage volume. You can specify the name, location, storage type (HDD/SSD), and the desired size in GB.
curl "https://api.frog.id/v1/storage/blocks/create" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"test-storage","location_id":1,"storage_type":1,"size":"100"}'
Create Block Storage
HTTP Request
POST https://api.frog.id/v1/storage/blocks/create
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| name | string | required | The name of the block storage. |
| location_id | integer | required | Id of the location where the storage will be created. |
| storage_type | integer | required | Id of the storage type (1 for HDD, 2 for SSD). |
| size | integer | required | Size of the storage in GB. |
Response Example
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"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| block_storage_id | UUID | The unique identifier of the newly created block storage. |
Attach Block Storage
This endpoint attaches an existing block storage volume to a specific Virtual Machine instance.
curl "https://api.frog.id/v1/storage/blocks/9647f210-2ae7-41ae-b0ba-78b4ae180a1b/attach" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"instance_id":"5d02f2a6-21cc-4a21-bd78-4dc7df5d83e2"}' \
Attach Block Storage
HTTP Request
PATCH https://api.frog.id/v1/storage/blocks/{block_storage_uuid}/attach
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| block_storage_uuid | UUID | required | Id of block storage |
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| instance_id | UUID | required | Defines which instance to attach block storage |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storage attached.",
"data": {
"instance_id": "5d02f2a6-21cc-4a21-bd78-4dc7df5d83e2",
"storage_id": "9647f210-2ae7-41ae-b0ba-78b4ae180a1b"
}
}
### Response Parameters
| Parameter | Type | Description |
|---|---|---|
| instance_id | UUID | The identifier of the instance the volume was attached to. |
| storage_id | UUID | The identifier of the attached block storage volume. |
Detach Block Storage
This endpoint detaches a block storage volume from its currently assigned Virtual Machine instance.
curl "https://api.frog.id/v1/storage/blocks/9647f210-2ae7-41ae-b0ba-78b4ae180a1b/detach" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Detach Block Storage
HTTP Request
PATCH https://api.frog.id/v1/storage/blocks/{block_storage_uuid}/detach
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| block_storage_uuid | UUID | required | Id of block storage |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storage successfully detached",
"data": {
"storage_id": "9647f210-2ae7-41ae-b0ba-78b4ae180a1b"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| storage_id | UUID | The identifier of the detached block storage volume. |
Resize Block Storage
This endpoint allows you to increase the size of an existing block storage volume.
curl "https://api.frog.id/v1/storage/blocks/9647f210-2ae7-41ae-b0ba-78b4ae180a1b/resize" \
-X PATCH \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"size": 100}' \
Resize Block Storage
HTTP Request
PATCH https://api.frog.id/v1/storage/blocks/{block_storage_uuid}/resize
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| block_storage_uuid | UUID | required | Unique identifier of the block storage to resize. |
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| size | integer | Size of storage (in GB) |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storage successfully resized",
"data": {
"storage_id": "9647f210-2ae7-41ae-b0ba-78b4ae180a1b",
"new_size": "100GB"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| storage_id | UUID | The identifier of the resized block storage volume. |
| new_size | string | The updated capacity description (e.g., "100GB"). |
Delete Block Storage
This endpoint permanently deletes a specific block storage volume.
curl "https://api.frog.id/v1/storage/blocks/9647f210-2ae7-41ae-b0ba-78b4ae180a1b" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Delete Block Storage
HTTP Request
DELETE https://api.frog.id/v1/storage/blocks/{block_storage_uuid}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| block_storage_uuid | UUID | required | Id of block storage |
Response Example
The above command returns JSON structured like this:
{
"message": "Block storage successfully deleted",
"data": {
"storage_id": "9647f210-2ae7-41ae-b0ba-78b4ae180a1b"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| storage_id | UUID | The identifier of the deleted block storage volume. |
Get Available Blocks
This endpoint retrieves a list of available block storage volumes in a specific location that are not currently attached to any instance.
curl "https://api.frog.id/v1/storage/blocks/options?location_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Available Blocks
HTTP Request
GET https://api.frog.id/v1/storage/blocks/options
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| location_id | integer | required | Filter available storage by location. |
Response Example
The above command returns JSON structured like this:
{
"message": "Available non-attached block storage",
"data": [
{
"id": "635949a5-157f-4a41-a29c-06df272ca8aa",
"name": "testblockstorage",
"size": "250GB"
},
{
"id": "bd553f5d-6dea-4ad3-9fd1-839017c20e82",
"name": "testblockstorage01",
"size": "100GB"
},
{
"id": "d38f4ac2-da14-4f7e-a053-06faf9ffbbd4",
"name": "halloStorage",
"size": "100GB"
},
{
"id": "adb38488-587c-4753-ba43-c70cdb5dced5",
"name": "test-storage",
"size": "100GB"
},
{
"id": "9647f210-2ae7-41ae-b0ba-78b4ae180a1b",
"name": "test-storage",
"size": "100GB"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | Unique identifier for the available volume. |
| name | string | Display name of the volume. |
| size | string | Human-readable size string (e.g., "50GB"). |
Credentials
Get SSH
This endpoint retrieves a list of all SSH keys associated with the authenticated user's account. It returns detailed information about each key, including the number of instances utilizing the key.
curl "https://api.frog.id/v1/credential/ssh" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get SSH
HTTP Request
GET https://api.frog.id/v1/credential/ssh
Response Example
The above command returns JSON structured like this:
{
"message": "My SSH Key",
"data": [
{
"id": 21,
"title": "create test ssh",
"number_of_instance": 0,
"created_at": "17 March 2026 12:57",
"key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmA7Az5pRuZqz1VHl49IujWelI0DEuhAHafnBs1nON/ permana.gerry@gmail.com"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier for the SSH key credential. |
| title | string | The customized name or title given to the SSH key. |
| number_of_instance | integer | The count of active Virtual Machines currently utilizing this SSH key. |
| created_at | string | The date and time when the SSH key was created or uploaded. |
| keys | string | The full public key string. |
Create SSH
This endpoint allows users to upload and register a new SSH public key to their account. The created key can then be assigned to Virtual Machines for secure access.
curl "https://api.frog.id/v1/credential/ssh" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title":"Macbook Ayahh","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZ36wRF0fUwvM1KnUi+92LvnrktA3mvuEpkhGEzpMnqF5F2PdTxT0Jr6uI0SloQiJP"}' \
Create SSH
HTTP Request
POST https://api.frog.id/v1/credential/ssh
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| title | string | required | Title of ssh |
| key | string | required | Public key of ssh |
Response Example
The above command returns JSON structured like this:
{
"message": "SSH Key successfully created",
"data": {
"credential_id": 21
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| credential_id | integer | The newly created unique identifier for the registered SSH key. |
Delete SSH
This endpoint allows users to delete an existing SSH key credential from their account using its unique identifier. Once deleted, the key can no longer be used to access Virtual Machines.
curl "https://api.frog.id/v1/credential/ssh/2" \
-X DELETE \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Delete SSH
HTTP Request
DELETE https://api.frog.id/v1/credential/ssh/{ssh_id}
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {ssh_id} | integer | required | The unique identifier of the SSH key to delete |
Response Example
The above command returns JSON structured like this:
{
"message": "SSH key successfully deleted",
"data": {
"credential_id": 21
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| credential_id | integer | The identifier of the SSH key that was successfully deleted. |
Get SSH Options
This endpoint retrieves a simplified list of SSH keys available for the user. It is typically used to populate dropdown menus or selection options in user interfaces when assigning an SSH key to a resource.
curl "https://api.frog.id/v1/credential/ssh/options" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get SSH Options
HTTP Request
GET https://api.frog.id/v1/credential/ssh/options
Response Example
The above command returns JSON structured like this:
{
"message": "SSH key options",
"data": [
{
"id": 2,
"title": "Macbook Mamah"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the SSH key. |
| title | string | The display name or title of the SSH key. |
Get Unassigned SSH
This endpoint retrieves a list of SSH keys that have not yet been assigned to a specific Virtual Machine. This is useful when you want to view or select available keys that can be safely attached to a new or existing VM.
curl "https://api.frog.id/v1/credential/ssh/options?vm_id=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Unassigned SSH
HTTP Request
GET https://api.frog.id/v1/credential/ssh/options
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| vm_id | bigInteger | required | Id of vm |
Response Example
The above command returns JSON structured like this:
{
"message": "SSH key options",
"data": [
{
"id": 2,
"title": "Macbook Mamah"
}
]
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the SSH key. |
| title | string | The display name or title of the SSH key. |
Billings
Get Prepaid Monthly Summary
This endpoint retrieves the current billing summary for the prepaid account. It provides information such as the current balance, recent top-up transactions, actual balance, accumulated current cost, and a historical breakdown of previous billing costs.
curl "https://api.frog.id/v1/billing/summary" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Prepaid Monthly Summary
HTTP Request
GET https://api.frog.id/v1/billing/summary
Response Example
The above command returns JSON structured like this:
{
"message": "This month summary",
"data": {
"current_balance": 37570788.2698,
"last_topup": [
{
"amount": 250000,
"date": "16/03/2026"
},
{
"amount": 50000,
"date": "11/03/2026"
}
],
"actual_balance": 36452353.94732,
"current_cost": 1118434.32248,
"current_hour_cost": 347.16017,
"estimated_monthly_total": -10708789,
"last_billing_cost": [
{
"date": "2026-02",
"total_cost": 3483790.39925
},
{
"date": "2026-01",
"total_cost": 2453230.68365
},
{
"date": "2025-12",
"total_cost": 1419083.04058
},
{
"date": "2025-11",
"total_cost": 709668.3198599999
},
{
"date": "2025-10",
"total_cost": 710000.496
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| current_balance | double | The current available balance of the prepaid account. |
| last_topup | array | A list of recent top-up transactions, containing the amount and date. |
| actual_balance | double | The actual balance after deducting the current ongoing cost. |
| current_cost | double | The accumulated cost incurred in the current billing period. |
| current_hour_cost | double | The cost incurred in the current hour. |
| estimated_monthly_total | double | The estimated total cost for the current month. |
| last_billing_cost | array | A history of billing costs from previous months, containing the date and total_cost. |
Get Prepaid Deposit History
This endpoint retrieves the history of deposit (top-up) transactions for the prepaid account. It lists details such as the invoice number, description, amount, payment method, payment status, and timestamps.
curl "https://api.frog.id/v1/billing/deposit/history?start=2026-03-01&end=2026-03-30&limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Prepaid Deposit History
HTTP Request
GET https://api.frog.id/v1/billing/deposit/history
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| start | string | optional | Start date of deposit history (YYYY-MM-DD). |
| end | string | optional | End date of deposit history (YYYY-MM-DD). |
| limit | integer | optional | Limit response data deposit history. |
| page | integer | optional | Number of page. |
Response Example
The above command returns JSON structured like this:
{
"message": "Deposit histories",
"data": {
"data": [
{
"id": "06932218-2391-4199-89fc-d179d27d0614",
"billing_recurrence_uuid": null,
"invoice_number": "MXIPR03202600001",
"description": "Top-up Rp250.000,00",
"detail": {
"amount": 250000,
"vat": 27500,
"payment_fee": 5000
},
"method": "BCA VA",
"status": "SUCCESS",
"created_at": "16 March 2026 12:59:22",
"expired_at": null
},
{
"id": "30299f57-91ac-4cfc-bd9c-ea6fb99325d4",
"billing_recurrence_uuid": null,
"invoice_number": null,
"description": "Top-up Rp250.000,00",
"detail": {
"amount": 250000,
"vat": 27500,
"payment_fee": 5000
},
"method": "BCA VA",
"status": "PENDING",
"created_at": "16 March 2026 12:28:33",
"expired_at": "16 March 2026 12:31:32"
}
],
"page": {
"total": 2,
"count": 2,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | The unique identifier of the deposit transaction. |
| billing_recurrence_uuid | UUID | The unique identifier if this deposit is tied to a recurring billing. |
| invoice_number | string | The invoice number for the deposit transaction (if available). |
| description | string | A brief description of the transaction (e.g., "Top-up Rp250.000,00"). |
| detail.amount | double | The base amount deposited. |
| detail.vat | double | The VAT (Value Added Tax) applied to the transaction. |
| detail.payment_fee | double | The fee charged by the payment gateway. |
| method | string | The payment method used for the deposit. |
| status | string | The current status of the deposit (SUCCESS, PENDING, FAILED). |
| created_at | string | The date and time when the deposit was initiated. |
| expired_at | string | The date and time when the deposit expires if not paid (applies to PENDING status). |
| page.total | integer | Total number of deposit records available. |
| page.count | integer | Number of records returned in the current response. |
| page.per_page | integer | Maximum number of records per page. |
| page.current_page | integer | The current page number being viewed. |
| page.total_pages | integer | Total number of pages available. |
Export Prepaid Deposit History
This endpoint exports the Deposit History and returns the result as a raw PDF file in the response body. The response content type is application/pdf, allowing the client to download or display the PDF document.
curl "https://api.frog.id/v1/billing/deposit/history/export?start=2026-03-01&end=2026-03-31" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
HTTP Request
GET https://api.frog.id/v1/billing/deposit/history/export
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| start | date | optional | Start date of deposit history (YYYY-MM-DD). |
| end | date | optional | End date of deposit history (YYYY-MM-DD). |
Response Example
The above command returns a raw PDF file (
application/pdf) as the response body.
Get Prepaid Detail Deposit History
This endpoint retrieves the comprehensive details of a specific deposit (top-up) invoice. The response includes the current payment status, amount details, payment method information, merchant references, expiration time, and any payment instruction links or codes (e.g., Virtual Account numbers, redirect URLs).
curl "https://api.frog.id/v1/billing/deposit/5c276241-9d76-45d7-ac20-896919a39898/details" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Prepaid Detail Deposit History
HTTP Request
GET https://api.frog.id/v1/billing/deposit/{invoice_id}/details
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {invoice_id} | UUID | required | Defines which invoice to retrieve |
Response Example
The above command returns JSON structured like this:
{
"message": "Invoice detail",
"data": {
"status": "PENDING",
"amount": 282500,
"currency": "IDR",
"gateway": "duitku",
"payment_method": "BCA VA",
"channel": "BC",
"group": "VIRTUAL_ACCOUNT",
"merchant_code": "D8113",
"reference_number": "D811326YIUELK6KY2HPDT0",
"invoice_id": "5c276241-9d76-45d7-ac20-896919a39898",
"expires_at": "16 March 2026 12:52:33",
"actions": {
"redirect_url": "https://sandbox.duitku.com/topup/topupdirectv2.aspx?ref=BC26ZGP2QBHYZU32RW5",
"va_number": "7007014004407010",
"qr_string": null,
"payment_code": null,
"card_token_id": null,
"payment_session_id": null
},
"details": {
"amount": 250000,
"vat": 27500,
"payment_fee": 5000,
"method_name": "BCA VA",
"method_img": "https://images.duitku.com/hotlink-ok/BCA.SVG",
"first_topup": null,
"expired_seconds": 168.686306
},
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | string | The current payment status (PENDING, SUCCESS, FAILED). |
| amount | integer | The total amount to be paid (including VAT and fees) in the specified currency. |
| currency | string | The currency code (e.g., IDR). |
| gateway | string | The payment gateway handling the transaction (e.g., duitku, xendit). |
| payment_method | string | The display name of the payment method (e.g., BCA VA). |
| channel | string | The payment channel code assigned by the gateway. |
| group | string | The category or group of the payment method (e.g., VIRTUAL_ACCOUNT, EWALLET). |
| merchant_code | string | The merchant code registered with the payment gateway. |
| reference_number | string | The unique reference number generated by the payment gateway. |
| invoice_id | UUID | The internal unique identifier for this deposit invoice. |
| expires_at | string | The expiration date and time for the payment. |
| actions.redirect_url | string | URL to redirect users to complete the payment (if applicable). |
| actions.va_number | string | The Virtual Account number for the transfer (if applicable). |
| actions.qr_string | string | The raw string to generate a QR Code (if applicable). |
| actions.payment_code | string | The payment code for over-the-counter payments (e.g., Retail). |
| details.amount | integer | The base deposit amount before fees and tax. |
| details.vat | integer | The calculated VAT (Value Added Tax). |
| details.payment_fee | integer | The transaction fee charged by the gateway. |
| details.method_name | string | The name of the payment method. |
| details.method_img | string | URL of the payment method logo/image. |
| payment_flow | string | The expected flow for payment (direct or redirect). |
| processing_time | string | The estimated processing time for the payment (e.g., Instan). |
Get Prepaid Credit History
This endpoint retrieves the credit history of the prepaid account. It lists all balance adjustment activities, whether it is an addition ("Add") such as a deposit/reward, or a deduction ("Deduct") such as service usage payments.
curl "https://api.frog.id/v1/billing/credit/history?limit=10&page=1&start=2026-03-01&end=2026-03-31&type=D" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Prepaid Credit History
HTTP Request
GET https://api.frog.id/v1/billing/credit/history
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit response data credit history. |
| page | integer | optional | Number of page. |
| start | date | optional | Start date of credit history (YYYY-MM-DD). |
| end | date | optional | End date of credit history (YYYY-MM-DD). |
| type | string | optional | Type of credit transaction to filter: A (Add) or D (Deduct). |
Response Example
The above command returns JSON structured like this:
{
"message": "Credit history",
"data": {
"data": [
{
"id": 460,
"type": "Deduct",
"description": "Settle Billing Invoice b0e034bb-9712-4136-aed8-9c12270ea68f for Customer permana.gerry@gmail.com",
"amount": "Rp3.483.790,40",
"balance_after": "Rp37.270.788,27",
"created_at": "2026-03-01 00:11:15"
}
],
"page": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the credit history record. |
| type | string | The type of transaction: Add or Deduct. |
| description | string | Detailed explanation of the transaction (e.g., "Settle Billing Invoice..."). |
| amount | string | The formatted amount involved in the transaction (e.g., "Rp3.483.790,40"). |
| balance_after | string | The formatted remaining balance after the transaction occurred. |
| created_at | string | The date and time when the transaction took place. |
| page.total | integer | Total number of credit history records available. |
| page.count | integer | Number of records returned in the current response. |
| page.per_page | integer | Maximum number of records per page. |
| page.current_page | integer | The current page number being viewed. |
| page.total_pages | integer | Total number of pages available. |
Get Postpaid Monthly Summary
This endpoint retrieves the monthly billing summary for a postpaid customer. It provides an overview of the paid and unpaid invoices, including the total count and cumulative amounts, as well as the estimated cost incurred for the current ongoing month.
curl "https://api.frog.id/v1/billing/postpaid/summary" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Postpaid Monthly Summary
HTTP Request
GET https://api.frog.id/v1/billing/postpaid/summary
Response Example
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
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| total_paid | integer | The total number of invoices that have been successfully paid. |
| total_paid_amount | double | The cumulative amount of all paid invoices. |
| total_unpaid | integer | The total number of unpaid/pending invoices. |
| total_unpaid_amount | double | The cumulative amount of all currently unpaid invoices. |
| est_month_cost | double | The estimated service usage cost incurred for the current month. |
Get Postpaid invoices
This endpoint retrieves a list of all invoices for a postpaid customer. It includes detailed information for each invoice such as the invoice number, resource usage description, amount breakdown (base amount, VAT, total), current payment status, and creation date.
curl "https://api.frog.id/v1/billing/postpaid/invoices?limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Postpaid invoices
HTTP Request
GET https://api.frog.id/v1/billing/postpaid/invoices
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit the number of records returned. |
| page | integer | optional | The page number to retrieve. |
Response Example
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"
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| page.total | integer | Total number of invoices available. |
| page.count | integer | Number of invoices returned in the current response. |
| page.per_page | integer | Number of records per page. |
| page.current_page | integer | The current page number being viewed. |
| page.total_pages | integer | Total number of pages available. |
| data[].invoice_number | string | The unique number identifying the invoice. |
| data[].description | string | A description of the resource usage and billing period. |
| data[].detail.amount | double | The base amount before VAT. |
| data[].detail.vat | double | The amount of Value Added Tax. |
| data[].detail.total | double | The total amount including VAT. |
| data[].status | string | The current payment status of the invoice (e.g., "Not Paid"). |
| data[].method | string | The payment method used, if applicable. |
| data[].created_at | string | The timestamp when the invoice was created. |
Download Invoice
This endpoint downloads a specific invoice and returns the result as a raw PDF file in the response body. The response content type is application/pdf, allowing the client to download or display the PDF document directly.
curl "https://api.frog.id/v1/billing/invoice/MCPO03202600004/download" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Download Invoice
HTTP Request
GET https://api.frog.id/v1/billing/invoice/{invoice_number}/download
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {invoice_number} | string | required | Defines which invoice to retrieve |
Response Example
The above command returns a raw PDF file (
application/pdf) as the response body.
Get Payment Methods
This endpoint retrieves a list of available payment methods, categorized by type (e.g., Virtual Account, E-Wallet, Card). It provides details for each method, including transaction fees, taxes, gateway provider, and transaction limits, allowing users to choose their preferred payment option.
curl "https://api.frog.id/v1/billing/v2/methods?amount=100000" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Payment Methods
HTTP Request
GET https://api.frog.id/v1/billing/v2/methods
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| amount | integer | optional | The transaction amount to filter applicable payment methods. |
Response Example
The above command returns JSON structured like this:
{
"message": "Available payment methods",
"data": {
"OVER_THE_COUNTER": [
{
"name": "RETAIL",
"code": "FT",
"image": "https://images.duitku.com/hotlink-ok/RETAIL.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "INDOMARET",
"code": "IR",
"image": "https://images.duitku.com/hotlink-ok/IR.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "Alfamart",
"code": "ALFAMART",
"image": "https://static.xendit.co/logos/new-logos/alfamart-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "10000.00",
"max_amount": "5000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Alfamart",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "Indomaret",
"code": "INDOMARET",
"image": "https://static.xendit.co/logos/new-logos/indomaret-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "10000.00",
"max_amount": "2500000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Indomaret",
"payment_flow": "direct",
"processing_time": "Instan"
}
],
"VIRTUAL_ACCOUNT": [
{
"name": "MAYBANK VA",
"code": "VA",
"image": "https://images.duitku.com/hotlink-ok/VA.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "PERMATA VA",
"code": "BT",
"image": "https://images.duitku.com/hotlink-ok/PERMATA.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "CIMB NIAGA VA",
"code": "B1",
"image": "https://images.duitku.com/hotlink-ok/B1.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "ATM BERSAMA VA",
"code": "A1",
"image": "https://images.duitku.com/hotlink-ok/A1.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BNI VA",
"code": "I1",
"image": "https://images.duitku.com/hotlink-ok/I1.PNG",
"fee": 3000,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "MANDIRI VA H2H",
"code": "M2",
"image": "https://images.duitku.com/hotlink-ok/MV.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "ARTHA GRAHA VA",
"code": "AG",
"image": "https://images.duitku.com/hotlink-ok/AG.JPG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BCA VA",
"code": "BC",
"image": "https://images.duitku.com/hotlink-ok/BCA.SVG",
"fee": 5000,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BRI VA",
"code": "BR",
"image": "https://images.duitku.com/hotlink-ok/BR.PNG",
"fee": 3000,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BNC VA",
"code": "NC",
"image": "https://images.duitku.com/hotlink-ok/NC.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BSI VA",
"code": "BV",
"image": "https://images.duitku.com/hotlink-ok/BSI.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BCA Virtual Account",
"code": "BCA",
"image": "https://static.xendit.co/logos/new-logos/bca-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "10000.00",
"max_amount": "50000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BCA",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BJB Virtual Account",
"code": "BJB",
"image": "https://static.xendit.co/logos/new-logos/bjb-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "2000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BJB",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BNC Virtual Account",
"code": "BNC",
"image": "https://maxcloud.dev/icon/payment/bnc.png",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BNC",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BNI Virtual Account",
"code": "BNI",
"image": "https://static.xendit.co/logos/new-logos/bni-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BNI",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BRI Virtual Account",
"code": "BRI",
"image": "https://static.xendit.co/logos/new-logos/bri-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BRI",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BSI Virtual Account",
"code": "BSI",
"image": "https://static.xendit.co/logos/new-logos/bsi-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BSI",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "BSS Virtual Account",
"code": "SAHABAT_SAMPOERNA",
"image": "https://static.xendit.co/logos/new-logos/sampoerna-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using BSS",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "CIMB Virtual Account",
"code": "CIMB",
"image": "https://static.xendit.co/logos/new-logos/cimb-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using CIMB",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "Mandiri Virtual Account",
"code": "MANDIRI",
"image": "https://static.xendit.co/logos/new-logos/cimb-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Mandiri",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "Muamalat Virtual Account",
"code": "MUAMALAT",
"image": "https://maxcloud.dev/icon/payment/muamalat.png",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "50000000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Muamalat",
"payment_flow": "direct",
"processing_time": "Instan"
},
{
"name": "Permata Virtual Account",
"code": "PERMATA",
"image": "https://static.xendit.co/logos/new-logos/permata-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "9999999999.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Permata",
"payment_flow": "direct",
"processing_time": "Instan"
}
],
"CARD": [
{
"name": "CREDIT CARD",
"code": "VC",
"image": "https://images.duitku.com/hotlink-ok/VC.PNG",
"fee": 2500,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "Cards Payment",
"code": "CARDS",
"image": "https://dashboard-apps.xendit.co/channel_activation/assets/020775f7c95a86a7ce7b.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "5000.00",
"max_amount": "200000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Cards Payment",
"payment_flow": "redirect",
"processing_time": "Instan"
}
],
"EWALLET": [
{
"name": "BCA KlikPay",
"code": "BK",
"image": "https://images.duitku.com/hotlink-ok/BK.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "CIMB CLICK",
"code": "CK",
"image": "https://images.duitku.com/hotlink-ok/CK.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "OVO",
"code": "OV",
"image": "https://images.duitku.com/hotlink-ok/OV.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "BCA Virtual Account",
"code": "LA",
"image": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/How_to_use_icon.svg/2214px-How_to_use_icon.svg.png",
"fee": 5000,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "1000000.00",
"payment_fee_type": "fixed",
"instruction": "Tess",
"payment_flow": "direct",
"processing_time": null
},
{
"name": "MANDIRI VA",
"code": "M1",
"image": "https://images.duitku.com/hotlink-ok/MV.PNG",
"fee": 4000,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "SAMPOERNA VA",
"code": "S1",
"image": "https://images.duitku.com/hotlink-ok/S1.JPG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "SHOPEEPAY APP",
"code": "SA",
"image": "https://images.duitku.com/hotlink-ok/SHOPEEPAY.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "DANA",
"code": "DA",
"image": "https://images.duitku.com/hotlink-ok/DA.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "NUSAPAY QRIS",
"code": "SQ",
"image": "https://images.duitku.com/hotlink-ok/SQ.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": null,
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "AstraPay",
"code": "ASTRAPAY",
"image": "https://static.xendit.co/logos/new-logos/astrapay-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "100.00",
"max_amount": "20000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using AstraPay",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "OVO",
"code": "OVO",
"image": "https://static.xendit.co/logos/new-logos/ovo-logo.svg",
"fee": 8000,
"vat": 55000,
"gateway": "xendit",
"min_amount": "100.00",
"max_amount": "20000000.00",
"payment_fee_type": "fixed",
"instruction": "Pay using OVO",
"payment_flow": "redirect",
"processing_time": null
},
{
"name": "ShopeePay",
"code": "SHOPEEPAY",
"image": "https://static.xendit.co/logos/new-logos/shopeepay-logo-2.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "20000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using ShopeePay",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "DANA",
"code": "DANA",
"image": "https://static.xendit.co/logos/new-logos/dana-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "100.00",
"max_amount": "20000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using DANA",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "LinkAja",
"code": "LINKAJA",
"image": "https://static.xendit.co/logos/new-logos/linkaja-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "100.00",
"max_amount": "10000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using LinkAja",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "NexCash",
"code": "NEXCASH",
"image": "https://maxcloud.dev/icon/payment/nexcash.png",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "20000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using NexCash",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "Jenius Pay",
"code": "JENIUSPAY",
"image": "https://maxcloud.dev/icon/payment/jeniuspay.png",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1000.00",
"max_amount": "10000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Jenius Pay",
"payment_flow": "redirect",
"processing_time": "Instan"
}
],
"EBANKING": [
{
"name": "JENIUS PAY",
"code": "JP",
"image": "https://images.duitku.com/hotlink-ok/JP.PNG",
"fee": 0,
"vat": 55000,
"gateway": "duitku",
"min_amount": "10000.00",
"max_amount": "100000000.00",
"payment_fee_type": "fixed",
"instruction": "halo ini adalah <b>struktur baru untuk method</b><div><b><br></b></div><div><ol><li><b>perhatikan arahan</b></li><li><b>bayar cepat</b></li><li><b>tunggu proses</b></li><li><b>sabar</b></li></ol></div>",
"payment_flow": "redirect",
"processing_time": null
}
],
"QR_CODE": [
{
"name": "QRIS",
"code": "QRIS",
"image": "https://static.xendit.co/logos/new-logos/qris-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1.00",
"max_amount": "10000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using QRIS",
"payment_flow": "direct",
"processing_time": "Instan"
}
],
"PAYLATER": [
{
"name": "Akulaku",
"code": "AKULAKU",
"image": "https://static.xendit.co/logos/new-logos/akulaku-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1000.00",
"max_amount": "25000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Akulaku",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "Kredivo",
"code": "KREDIVO",
"image": "https://static.xendit.co/logos/new-logos/kredivo-logo.svg",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "1000.00",
"max_amount": "30000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Kredivo",
"payment_flow": "redirect",
"processing_time": "Instan"
},
{
"name": "Atome",
"code": "ATOME",
"image": "https://maxcloud.dev/icon/payment/atome.png",
"fee": 0,
"vat": 55000,
"gateway": "xendit",
"min_amount": "50000.00",
"max_amount": "6000000.00",
"payment_fee_type": "percentage",
"instruction": "Pay using Atome",
"payment_flow": "redirect",
"processing_time": "Instan"
}
]
}
}
Response Parameters
The response data is grouped by payment categories (e.g., VIRTUAL_ACCOUNT, EWALLET). Each category contains an array of objects with the following fields:
| Parameter | Type | Description |
|---|---|---|
| name | string | The display name of the payment method (e.g., "BCA VA"). |
| code | string | The identifier code for the payment method. |
| image | string | URL of the payment method's logo or icon. |
| fee | number | The additional transaction fee for this method. |
| vat | number | The Value Added Tax applied to the transaction. |
| gateway | string | The payment gateway provider (e.g., "duitku", "xendit"). |
| min_amount | string | The minimum transaction amount allowed for this method. |
| max_amount | string | The maximum transaction amount allowed for this method. |
| payment_fee_type | string | The type of fee calculation: fixed or percentage. |
| instruction | string | HTML formatted payment instructions or additional info. |
| payment_flow | string | The user interaction flow: direct (instant) or redirect (external page). |
| processing_time | string | The estimated time to process the payment (e.g., "Instan"). |
Create Invoice Payment
This endpoint initiates a top-up or payment request. By providing the amount and preferred payment method, users will receive an invoice with a reference number and specific payment instructions, such as a Virtual Account number or a redirect URL to complete the transaction.
curl "https://api.frog.id/v1/billing/v2/topup" \
-X POST \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"amount": 250000,
"payment_method": "BC",
"phone_number": "",
"code": ""
}'
Create Invoice Payment
HTTP Request
POST https://api.frog.id/v1/billing/v2/topup
Form Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| amount | integer | required | Amount of payment (in IDR). |
| payment_method | string | required | Payment method code (e.g. BC for BCA Virtual Account). |
| code | string | optional | Promo or voucher code, leave empty if not applicable. |
| phone_number | string | optional | Phone number associated with the payment method (e.g. for e-wallet), leave empty if not applicable. |
Response Example
The above command returns JSON structured like this:
{
"message": "Invoice created successfully",
"data": {
"status": "PENDING",
"amount": 282500,
"currency": "IDR",
"gateway": "duitku",
"payment_method": "BCA VA",
"channel": "BC",
"group": "VIRTUAL_ACCOUNT",
"merchant_code": "D8113",
"reference_number": "D811326S73B3W67FL4BBW2",
"invoice_id": "5c276241-9d76-45d7-ac20-896919a39898",
"expires_at": "2026-03-16 12:31:32",
"actions": {
"redirect_url": "https://sandbox.duitku.com/topup/topupdirectv2.aspx?ref=BC268RFY3OINC7MJ5CG",
"va_number": "7007014004229569",
"qr_string": null,
"payment_code": null,
"card_token_id": null,
"payment_session_id": null
},
"details": {
"amount": 250000,
"payment_fee": 5000,
"vat": 27500
},
"instruction": null,
"payment_flow": "direct",
"processing_time": "Instan"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | string | The current payment status (PENDING, SUCCESS, FAILED). |
| amount | integer | The total amount to be paid (including VAT and fees) in the specified currency. |
| currency | string | The currency code (e.g., IDR). |
| gateway | string | The payment gateway handling the transaction (e.g., duitku, xendit). |
| payment_method | string | The display name of the payment method (e.g., BCA VA). |
| channel | string | The payment channel code assigned by the gateway. |
| group | string | The category or group of the payment method (e.g., VIRTUAL_ACCOUNT, EWALLET). |
| merchant_code | string | The merchant code registered with the payment gateway. |
| reference_number | string | The unique reference number generated by the payment gateway. |
| invoice_id | UUID | The internal unique identifier for this created invoice. |
| expires_at | string | The date and time when the payment invoice expires. |
| actions.redirect_url | string | URL to redirect users to complete the payment (if applicable). |
| actions.va_number | string | The Virtual Account number for the transfer (if applicable). |
| actions.qr_string | string | The raw string to generate a QR Code (if applicable). |
| actions.payment_code | string | The payment code for over-the-counter payments (e.g., Retail). |
| details.amount | integer | The base amount before fees and tax. |
| details.payment_fee | integer | The transaction fee charged by the gateway. |
| details.vat | integer | The calculated VAT (Value Added Tax). |
| instruction | string | Additional payment instructions from the gateway (if any). |
| payment_flow | string | The user interaction flow: direct (instant) or redirect (external page). |
| processing_time | string | The estimated processing time for the payment (e.g., Instan). |
Check Status Payment
This endpoint allows users to check the real-time status of a top-up transaction using its unique invoice identifier. It returns key details about the transaction, including the gateway reference, amount, and the current status description and code.
curl "https://api.frog.id/v1/billing/v2/topup/01978dd8-bcae-4e7a-8041-bcf909092974/status" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Check Status Payment Invoice
HTTP Request
GET https://api.frog.id/v1/billing/v2/topup/{invoice_id}/status
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {invoice_id} | UUID | required | Defines which invoice to retrieve status |
Response Example
The above command returns JSON structured like this:
{
"message": "Status topup",
"data": {
"invoiceNumber": "01978dd8-bcae-4e7a-8041-bcf909092974",
"reference": "DS13539G1ORA3DRQR1LPFP",
"amount": "50000",
"statusCode": "00",
"statusDescription": "SUCCESS",
"statusMessage": "SUCCESS"
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| invoiceNumber | string | The unique identifier for the top-up invoice. |
| reference | string | The reference number generated by the payment gateway. |
| amount | string | The amount of the top-up transaction as a string. |
| statusCode | string | The status code returned by the gateway (e.g., "00" for success). |
| statusDescription | string | A short description of the payment status (e.g., "SUCCESS"). |
| statusMessage | string | A detailed message about the payment status. |
Get Report
This endpoint retrieves a list of monthly billing reports. It provides summary information for each billing period, including the total amount, payment status, and whether the report is available for download.
curl "https://api.frog.id/v1/billing/reports?limit=10&page=1" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Report Summary
HTTP Request
GET https://api.frog.id/v1/billing/reports
Query Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Limit the number of records returned. |
| page | integer | optional | The page number to retrieve. |
Response Example
The above command returns JSON structured like this:
{
"message": "Summary billing report",
"data": {
"data": [
{
"id": "3f570ac7-c06c-446b-be8a-f6dad01b5749",
"billing_periode": "Current Usage",
"billing_date": "2026-03-30T17:00:00.000000Z",
"status": "Ongoing",
"fully_settle": false,
"total": 144668.83344,
"can_download": false
},
{
"id": "e1025a9a-2a2c-4f4a-a989-b6b627010817",
"billing_periode": "February 2026",
"billing_date": "2026-02-27T17:00:00.000000Z",
"status": "Settled",
"fully_settle": true,
"total": 352424.06344,
"can_download": true
},
{
"id": "a273eede-fefb-499d-9910-c9d18565e9bb",
"billing_periode": "January 2026",
"billing_date": "2026-01-30T17:00:00.000000Z",
"status": "Settled",
"fully_settle": true,
"total": 53302.92305,
"can_download": true
}
],
"page": {
"total": 3,
"count": 3,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | The unique identifier for the report summary. |
| billing_periode | string | The period covered by the billing report (e.g., "February 2026" or "Current Usage"). |
| billing_date | string | The date when the billing report was generated. |
| status | string | The current status of the report (e.g., "Settled", "Ongoing"). |
| fully_settle | boolean | Indicates if the bill for this period has been fully paid. |
| total | double | The total amount for the billing period. |
| can_download | boolean | Indicates if the detailed report file (PDF) is available for download. |
| page.total | integer | Total number of reports available. |
| page.count | integer | Number of reports returned in the current response. |
| page.per_page | integer | Number of records per page. |
| page.current_page | integer | The current page number being viewed. |
| page.total_pages | integer | Total number of pages available. |
Get Report Detail
This endpoint provides a detailed breakdown of costs for a specific billing report. It includes service-level totals and itemized costs for components like CPU, RAM, storage, and network usage, allowing for granular audit of service consumption.
curl "https://api.frog.id/v1/billing/reports/3f570ac7-c06c-446b-be8a-f6dad01b5749/details" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
Get Report Detail
HTTP Request
GET https://api.frog.id/v1/billing/reports/{summary_id}/details
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {summary_id} | UUID | required | Defines which report summary to retrieve details for |
Response Example
The above command returns JSON structured like this:
{
"message": "Billing report for 3f570ac7-c06c-446b-be8a-f6dad01b5749",
"data": {
"id": "3f570ac7-c06c-446b-be8a-f6dad01b5749",
"billing_periode": "Current Usage",
"billing_date": "2026-03-30T17:00:00.000000Z",
"status": "Ongoing",
"fully_settle": false,
"total": 144668.83344,
"can_download": false,
"services": [
{
"service": "Virtual Machine",
"total": 131023.00098,
"reports": [
{
"id": 696,
"service_name": "hayy",
"service_type": "Virtual Machine",
"tier_name": "Cloud Compute Scalable",
"tier_icon": "https://dev.gerrykribo.com/storage/tier/EStvyqQIRlRuXonjPUNu08Gsvuq3jrx2xPTafgkn.svg",
"total_cost": 131023.00098,
"details": [
{
"name": "CPU SHARED: 2 core",
"description": "CPU(s) component",
"base_price": 83.33334,
"total_uptime_hour": 392.95,
"billing_cycle": "",
"total_cost": 32750.00262
},
{
"name": "RAM: 2 GB",
"description": "RAM component",
"base_price": 83.33612,
"total_uptime_hour": 392.95,
"billing_cycle": "",
"total_cost": 32751.09516
},
{
"name": "SSD: 40 GB",
"description": "Main storage component - SSD",
"base_price": 166.7224,
"total_uptime_hour": 392.95,
"billing_cycle": "",
"total_cost": 65521.9032
}
]
}
]
},
{
"service": "Public Network",
"total": 13645.83246,
"reports": [
{
"id": 697,
"service_name": "192.168.1.55",
"service_type": "Public Network",
"total_cost": 13645.83246,
"details": [
{
"name": "IP: 1 IP address",
"description": "Public IP: 192.168.1.55",
"base_price": 34.72222,
"total_uptime_hour": 392.97,
"billing_cycle": "",
"total_cost": 13645.83246
}
]
}
]
}
]
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| id | UUID | The unique identifier for the report. |
| billing_periode | string | The period covered (e.g., "Current Usage"). |
| billing_date | string | The generation date of the report. |
| status | string | The status of the report (e.g., "Ongoing"). |
| fully_settle | boolean | Indicates if the billing is fully settled. |
| total | double | The total accumulated cost for the period. |
| can_download | boolean | Indicates if the report PDF is available. |
| services | array | A list of service categories (e.g., "Virtual Machine", "Public Network"). |
| services[].service | string | The display name of the service category. |
| services[].total | double | The total cost for that specific service category. |
| services[].reports | array | Detailed usage reports for specific service instances. |
| services[].reports[].service_name | string | The name or ID of the resource (e.g., VM name or IP). |
| services[].reports[].service_type | string | The type of the service. |
| services[].reports[].tier_name | string | The service tier or plan name. |
| services[].reports[].total_cost | double | The total cost generated by this specific resource. |
| services[].reports[].details | array | Itemized breakdown of component costs for the resource. |
| services[].reports[].details[].name | string | Component name (e.g., "CPU SHARED: 2 core"). |
| services[].reports[].details[].description | string | Detailed component description. |
| services[].reports[].details[].base_price | double | The hourly or unit base price. |
| services[].reports[].details[].total_uptime_hour | double | Total usage duration in hours. |
| services[].reports[].details[].total_cost | double | The calculated cost for this component. |
Export Report Service Usage
This endpoint exports the Report Detail and returns the result as a raw PDF file in the response body. The response content type is application/pdf, allowing the client to download or display the PDF document.
curl "https://api.frog.id/v1/billing/reports/3f570ac7-c06c-446b-be8a-f6dad01b5749/export" \
-X GET \
-H "x-apikey: meowmeowmeow" \
-H "Accept: application/json" \
HTTP Request
GET https://api.frog.id/v1/billing/reports/{summary_id}/export
Path Parameters
| Parameter | Type | Description | |
|---|---|---|---|
| {summary_id} | bigInteger | required | Defines which summary to export |
Response Example
The above command returns a raw PDF file (
application/pdf) as the response body.