curl --request POST \
--url 'https://api.flashcat.cloud/monit/query/explore?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"datasource_id": 101,
"expr": "rate(http_requests_total[5m])",
"args": {},
"execution": {
"kind": "range",
"from_ms": 1787187600000,
"to_ms": 1787191200000,
"max_data_points": 1200,
"min_step_seconds": 15
}
}
'import requests
url = "https://api.flashcat.cloud/monit/query/explore?app_key="
payload = {
"datasource_id": 101,
"expr": "rate(http_requests_total[5m])",
"args": {},
"execution": {
"kind": "range",
"from_ms": 1787187600000,
"to_ms": 1787191200000,
"max_data_points": 1200,
"min_step_seconds": 15
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
datasource_id: 101,
expr: 'rate(http_requests_total[5m])',
args: {},
execution: {
kind: 'range',
from_ms: 1787187600000,
to_ms: 1787191200000,
max_data_points: 1200,
min_step_seconds: 15
}
})
};
fetch('https://api.flashcat.cloud/monit/query/explore?app_key=', 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.flashcat.cloud/monit/query/explore?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'datasource_id' => 101,
'expr' => 'rate(http_requests_total[5m])',
'args' => [
],
'execution' => [
'kind' => 'range',
'from_ms' => 1787187600000,
'to_ms' => 1787191200000,
'max_data_points' => 1200,
'min_step_seconds' => 15
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/monit/query/explore?app_key="
payload := strings.NewReader("{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/monit/query/explore?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/monit/query/explore?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"format": "explore_result.v1",
"result": {
"kind": "frames",
"frames": [
{
"kind": "time_series",
"fields": [
{
"name": "time",
"type": "time",
"values": [
"2026-08-20T10:00:00Z",
"2026-08-20T10:01:00Z"
]
},
{
"name": "value",
"type": "float",
"labels": {
"job": "api"
},
"values": [
1.25,
null
]
}
]
}
]
},
"execution": {
"kind": "range",
"effective_step_seconds": 60
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}Run Explore query
Run an Explore query against a configured data source and return frames, samples, or logs.
curl --request POST \
--url 'https://api.flashcat.cloud/monit/query/explore?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"datasource_id": 101,
"expr": "rate(http_requests_total[5m])",
"args": {},
"execution": {
"kind": "range",
"from_ms": 1787187600000,
"to_ms": 1787191200000,
"max_data_points": 1200,
"min_step_seconds": 15
}
}
'import requests
url = "https://api.flashcat.cloud/monit/query/explore?app_key="
payload = {
"datasource_id": 101,
"expr": "rate(http_requests_total[5m])",
"args": {},
"execution": {
"kind": "range",
"from_ms": 1787187600000,
"to_ms": 1787191200000,
"max_data_points": 1200,
"min_step_seconds": 15
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
datasource_id: 101,
expr: 'rate(http_requests_total[5m])',
args: {},
execution: {
kind: 'range',
from_ms: 1787187600000,
to_ms: 1787191200000,
max_data_points: 1200,
min_step_seconds: 15
}
})
};
fetch('https://api.flashcat.cloud/monit/query/explore?app_key=', 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.flashcat.cloud/monit/query/explore?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'datasource_id' => 101,
'expr' => 'rate(http_requests_total[5m])',
'args' => [
],
'execution' => [
'kind' => 'range',
'from_ms' => 1787187600000,
'to_ms' => 1787191200000,
'max_data_points' => 1200,
'min_step_seconds' => 15
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/monit/query/explore?app_key="
payload := strings.NewReader("{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/monit/query/explore?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/monit/query/explore?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"datasource_id\": 101,\n \"expr\": \"rate(http_requests_total[5m])\",\n \"args\": {},\n \"execution\": {\n \"kind\": \"range\",\n \"from_ms\": 1787187600000,\n \"to_ms\": 1787191200000,\n \"max_data_points\": 1200,\n \"min_step_seconds\": 15\n }\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"format": "explore_result.v1",
"result": {
"kind": "frames",
"frames": [
{
"kind": "time_series",
"fields": [
{
"name": "time",
"type": "time",
"values": [
"2026-08-20T10:00:00Z",
"2026-08-20T10:01:00Z"
]
},
{
"name": "value",
"type": "float",
"labels": {
"job": "api"
},
"values": [
1.25,
null
]
}
]
}
]
},
"execution": {
"kind": "range",
"effective_step_seconds": 60
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter template_id is not valid.",
"reason": "<string>"
}
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 100 requests/minute; 16 requests/second per account |
| Permissions | Datasources Read (monit) |
| Edge requirement | Supported deployments require monit-edge v0.68.0 or later |
Usage
- Use this endpoint when you need the data source’s native result shape;
/monit/query/datareturns the stablequery_result.v1contract instead. Dispatch ondata.result.kind(frames,samples, orlogs) here. execution.kinddecides which companion fields are accepted:instantneeds onlyto_ms,rangerequiresfrom_ms,to_ms, andmax_data_points, andwindowtakesfrom_msandto_ms.step_secondsis not accepted; the step is derived frommax_data_pointsandmin_step_seconds.argscarries macro substitutions such as Grafana-style variables; every value is a string.- A
logsresult is capped at 1,000 entries and reportsapplied_limitplushas_more. Time-series and sample results are capped at 1,000 items each and the whole success response at 8 MiB. - Query execution may take up to 35 seconds across WebAPI forwarding and Edge execution. Configure client timeouts to at least 40 seconds.
Authorizations
App key issued from the Flashduty console under Account → APP Keys. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Explore query request. All four top-level fields are required and unknown fields are rejected.
Data source ID from /monit/datasource/list. Must be a positive JavaScript-safe integer and belong to the authenticated account.
1 <= x <= 9007199254740991Query expression in the data source's native language (PromQL, LogsQL, SQL, and so on). Non-empty UTF-8 of at most 64 KiB; some data source types enforce a lower limit.
1Macro substitutions keyed by variable name, used for Grafana-style variables. Keys are at most 256 bytes, values at most 64 KiB, with a 128 KiB total budget.
Show child attributes
Show child attributes
Time semantics of the query. The accepted companion fields depend on kind: instant takes only to_ms (plus optional from_ms), range requires from_ms, to_ms, and max_data_points, and window takes only from_ms and to_ms. step_seconds is never accepted over HTTP.
Show child attributes
Show child attributes
Response
Success
Success response envelope. On every 2xx response, request_id identifies the call (also mirrored in the Flashcat-Request-Id header) and data holds the endpoint-specific payload. Failure responses use a different shape — see ErrorResponse.
Was this page helpful?