NAV
shell

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 meowmeowmeow with 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.