curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"instance_id": "<string>",
"machine_id": "<string>",
"region": "<string>",
"compute_size": "<string>",
"vcpus": 123,
"lifecycle": {
"started_at": "<string>",
"stopped_at": "<string>",
"shutdown_reason": "<string>"
},
"period": {
"start": 123,
"end": 123,
"step": "<string>"
},
"cpu": {
"usage_percent": [
{
"t": 123,
"v": 123
}
],
"iowait_percent": [
{
"t": 123,
"v": 123
}
],
"steal_percent": [
{
"t": 123,
"v": 123
}
]
},
"memory": {
"used_mb": [
{
"t": 123,
"v": 123
}
],
"total_mb": 123
},
"network": {
"rx_bytes_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_bytes_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_packets_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_packets_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_dropped_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_dropped_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_errors_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_errors_per_sec": [
{
"t": 123,
"v": 123
}
]
},
"load": {
"average_1m": [
{
"t": 123,
"v": 123
}
],
"average_5m": [
{
"t": 123,
"v": 123
}
],
"average_15m": [
{
"t": 123,
"v": 123
}
]
},
"connections": {
"tcp": [
{
"t": 123,
"v": 123
}
]
}
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Get server resource metrics
Returns CPU, memory, network, load, and connection metrics for a running server over a configurable time window. Each metric is a time series of {t, v} data points where t is a Unix timestamp and v is the metric value.
Use period to control the time window (e.g., 1h for last hour) and step for data point resolution (e.g., 60s for one point per minute).
Only available for servers that are currently running.
curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"instance_id": "<string>",
"machine_id": "<string>",
"region": "<string>",
"compute_size": "<string>",
"vcpus": 123,
"lifecycle": {
"started_at": "<string>",
"stopped_at": "<string>",
"shutdown_reason": "<string>"
},
"period": {
"start": 123,
"end": 123,
"step": "<string>"
},
"cpu": {
"usage_percent": [
{
"t": 123,
"v": 123
}
],
"iowait_percent": [
{
"t": 123,
"v": 123
}
],
"steal_percent": [
{
"t": 123,
"v": 123
}
]
},
"memory": {
"used_mb": [
{
"t": 123,
"v": 123
}
],
"total_mb": 123
},
"network": {
"rx_bytes_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_bytes_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_packets_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_packets_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_dropped_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_dropped_per_sec": [
{
"t": 123,
"v": 123
}
],
"rx_errors_per_sec": [
{
"t": 123,
"v": 123
}
],
"tx_errors_per_sec": [
{
"t": 123,
"v": 123
}
]
},
"load": {
"average_1m": [
{
"t": 123,
"v": 123
}
],
"average_5m": [
{
"t": 123,
"v": 123
}
],
"average_15m": [
{
"t": 123,
"v": 123
}
]
},
"connections": {
"tcp": [
{
"t": 123,
"v": 123
}
]
}
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Authorizations
Path Parameters
Server instance ID.
Query Parameters
Relative time window for metrics (used when start_time is omitted). "5m": last 5 minutes, "15m": last 15 minutes, "1h": last hour, "6h": last 6 hours, "24h": last 24 hours.
5m, 15m, 1h, 6h, 24h Data point interval. Smaller steps give higher resolution but more data. "15s": every 15 seconds … "1800s": every 30 minutes. Scale it to the window (a wide window needs a coarse step).
15s, 30s, 60s, 300s, 600s, 1800s Absolute window start — ISO 8601 (e.g., "2026-07-12T03:00:00Z") or relative (e.g., "-6h"). When set it OVERRIDES period, so you can inspect a specific interval (pair with end_time).
Absolute window end — ISO 8601. Defaults to now. Use with start_time for a fixed interval (e.g., a past incident window).
Response
Server resource metrics over the requested time window.
Server resource metrics including CPU, memory, network, load, and connections over a configurable time window.
Server instance ID.
Fly.io machine ID providing these metrics.
Fly.io region code (e.g., "ewr", "fra").
PlayFlow compute size of the machine (e.g. "small", "large").
Number of vCPUs allocated to the machine, derived from compute_size. Threshold the 1-minute load average against this: at/above vcpus is a warning, at/above 2× is an overload likely to freeze the game loop. Null when the size is unknown.
Restart/stop/OOM markers for the charts.
Show child attributes
Show child attributes
Time window and resolution for the returned metrics.
Show child attributes
Show child attributes
CPU usage metrics, broken down to surface I/O-wait and steal which are typical freeze culprits.
Show child attributes
Show child attributes
Memory usage metrics.
Show child attributes
Show child attributes
Network I/O metrics (bytes, packets, and — for freeze diagnosis — dropped/error rates).
Show child attributes
Show child attributes
System load average metrics over 1/5/15-minute windows.
Show child attributes
Show child attributes
Network connection metrics.
Show child attributes
Show child attributes