List query range — GET /v1/o11y/query_range

Runs a Prometheus-style range query over metrics — the legacy read that predates the v5 querier — and returns the matrix, vector or scalar the query resolved to.

GET /v1/o11y/query_range

Addresshttps://api.hanzo.ai/v1/o11y/query_range
MethodGET
Operationget_o11y_query_range
AuthAuthorization: Bearer $HANZO_API_KEY

Runs a Prometheus-style range query over metrics — the legacy read that predates the v5 querier — and returns the matrix, vector or scalar the query resolved to.

Callers need the viewer role; the runtime's own gate enforces it.

Request

6 fields.

FieldInTypeRequiredDescription
startquerystringyesStart is the window start — a unix timestamp (seconds, with optional fraction) or an RFC 3339 time.
endquerystringyesEnd is the window end, in the same form as Start, and not before it.
stepquerystringyesStep is the query resolution, e.g. 60s, 1m, 1h — a positive duration.
queryquerystringyesQuery is the PromQL expression to evaluate.
statsquerystring—Stats, when "all", asks for query statistics alongside the result.
timeoutquerystring—Timeout caps how long the query may run, e.g. 30s, 1m — a positive duration.

Response

StatusBodyMeaning
200o11y.O11yMetricsQueryRangeOutok
202Approvalheld for approval
defaultproblem-detailsrefused

200 body — 2 fields.

FieldInTypeAlwaysDescription
databodyany—Data is the result — its result type, the value, and query stats when asked.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y query_range get \
  --start <start> \
  --end <end> \
  --step <step> \
  --query <query>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getO11yQueryRange({ start: 'start', end: 'end', step: 'step', query: 'query' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).get_o11y_query_range(start='start', end='end', step='step', query='query')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.GetO11yQueryRange(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, o11y_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = o11y_api::get_o11y_query_range(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).getO11yQueryRange();
curl https://api.hanzo.ai/v1/o11y/query_range?start=%3Cstart%3E&end=%3Cend%3E&step=%3Cstep%3E&query=%3Cquery%3E \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool o11y, op get_o11y_query_range — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "o11y",
         "arguments": {
           "op": "get_o11y_query_range",
           "input": {
             "start": "<start>",
             "end": "<end>",
             "step": "<step>",
             "query": "<query>"
           }
         }
       }
     }'

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?