curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram"
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}/log-histogram', 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}/log-histogram",
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}/log-histogram"
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}/log-histogram")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram")
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{
"buckets": [
{
"t": "<string>",
"info": 123,
"warn": 123,
"error": 123
}
],
"step": 123,
"window": {
"start": "<string>",
"end": "<string>"
}
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Get server log-volume histogram
Returns a stacked info/warn/error log-volume time-series for a single server over the same window as the logs. Use it to correlate a spike in error volume with a freeze: overlay these buckets on the CPU/memory/network charts on a shared time axis.
Bins are step seconds wide (default 60). Empty bins may be omitted — treat gaps as zero.
curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram"
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}/log-histogram', 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}/log-histogram",
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}/log-histogram"
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}/log-histogram")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/log-histogram")
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{
"buckets": [
{
"t": "<string>",
"info": 123,
"warn": 123,
"error": 123
}
],
"step": 123,
"window": {
"start": "<string>",
"end": "<string>"
}
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Authorizations
Path Parameters
Server instance ID.
Query Parameters
Window start. ISO 8601 or relative (e.g. "-1h"). Omit to use the default 1-hour window (matches the log query so the histogram and the log table share one time axis).
Window end. Same format as start_time. Defaults to now.
Bin width in SECONDS (5–3600). Each bucket counts logs whose _time falls in [bin, bin+step). Use a small step (e.g. 15) for short windows to resolve a freeze spike.
5 <= x <= 3600Case-insensitive substring to match within log messages, applied server-side across the whole window (same semantics as the log query).
256Response
Log-volume histogram over the requested window.
Log-volume histogram: per-severity counts bucketed over time, for correlating log spikes with resource metrics during a freeze.
Ordered (oldest→newest) time bins. A bin with no logs may be omitted — treat gaps as zero when rendering.
Show child attributes
Show child attributes
Bin width in seconds actually used.
The resolved time window these buckets cover (after applying the default window).
Show child attributes
Show child attributes