Telemetry API
Read call series for an organisation, a proxy, or an MCP server.
Pass the range you want as a query. The shapes differ by parent. Credential series are available to the agent. The published client routes below are the organisation, the proxy, and the MCP server.
Endpoints
| Method | Path | What it does |
|---|---|---|
| GET | /api/clients/:clientId/telemetry | Organisation series |
| GET | /api/clients/:clientId/telemetries | Series across proxies |
| GET | /api/clients/:clientId/proxies/:proxyId/telemetry | One proxy |
| GET | /api/clients/:clientId/mcps/:mcpId/telemetry | One MCP server |
Read organisation telemetry
GET /api/clients/:clientId/telemetry returns the organisation series.
Request
curl -X GET "https://api.requestrocket.com/api/clients/:clientId/telemetry" \
-H "Authorization: u-your-token"import axios from "axios";
const response = await axios.request({
method: "GET",
url: "https://api.requestrocket.com/api/clients/:clientId/telemetry",
headers: {
"Authorization": "u-your-token",
}
});
console.log(response.status, response.data);import requests
response = requests.request(
"GET",
"https://api.requestrocket.com/api/clients/:clientId/telemetry",
headers={
"Authorization": "u-your-token",
}
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
var payload io.Reader
req, _ := http.NewRequest("GET", "https://api.requestrocket.com/api/clients/:clientId/telemetry", payload)
req.Header.Set("Authorization", "u-your-token")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode, string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.requestrocket.com/api/clients/:clientId/telemetry"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.header("Authorization", "u-your-token")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}Responses
{
"message": "Success",
"interval": "hour",
"telemetry": [
{
"pKey": "b3a1c7d2-5e44-4f0a-9c1e-7d2f8a6b1c90",
"sKey": "2026-11-02-07",
"clientId": "b3a1c7d2-5e44-4f0a-9c1e-7d2f8a6b1c90",
"countMap": {
"target": 120
},
"successCountMap": {
"target": 118
},
"errorCountMap": {
"target": 2
}
}
]
}{
"message": "Invalid interval. Must be one of: minute, hour, day, month"
}{
"Message": "User is not authorized to access this resource with an explicit deny in an identity-based policy"
}{
"message": "method / endpoint not supported"
}GET /api/clients/:clientId/proxies/:proxyId/telemetry and GET /api/clients/:clientId/mcps/:mcpId/telemetry use the same query and return the same telemetry array. On those routes pKey is the proxy id or the MCP server id.
Returns
The response contains the series in telemetry, the interval that was applied, and message set to Success. Buckets are ordered newest first. With neither date set, the response is the latest limit buckets. With only endDate set, the range runs back limit intervals from that end.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
interval | string | minute, hour, day, or month. Default hour. | |
startDate | string | Start of the range, inclusive of the bucket that contains it. | |
endDate | string | End of the range. Omitted means the current time. | |
limit | number | Maximum buckets. Default 60 for minute, 24 for hour, 30 for day, and 12 for month. |
Response attributes
| Attribute | Type | Description |
|---|---|---|
message | string | Success on a completed call. |
interval | string | The interval that was applied. |
telemetry | array | One object per bucket. |
pKey | string | Organisation id, proxy id, or MCP server id. |
sKey | string | UTC bucket key. YYYY-MM-DD-HH-MM for minute, YYYY-MM-DD-HH for hour, YYYY-MM-DD for day, YYYY-MM for month. |
clientId | string | Organisation id. |
proxyId | string | Set on a proxy bucket. |
mcpId | string | Set on an MCP server bucket. |
countMap | object | Call counts keyed by proxy or target. |
successCountMap | object | Successful calls, same keys as countMap. |
errorCountMap | object | Failed calls, same keys as countMap. |
totalResponseTimeMap | object | Sum of response time, same keys as countMap. |
averageResponseTimeMap | object | Average response time per key, derived on read. |
successRateMap | object | Success count divided by count, derived on read. |
errorRateMap | object | Error count divided by count, derived on read. |
codeCountMap | object | Counts keyed by statusCode:source, such as 200:proxy or 200:target. |
codeTotalRTMap | object | Total response time for each codeCountMap key. |
countryCountMap | object | Counts keyed by country:source, such as US:proxy. |
countryTotalRTMap | object | Total response time for each countryCountMap key. |
countryAverageRTMap | object | Average response time for each country key, derived on read. |
metersCountMap | object | Trigger count per meter id. |
metersTotalMap | object | Sum of contribution values per meter id. |
metersLimitsMap | object | Latest limit per meterId:window key. |
metersAverageMap | object | Average contribution per meter, derived on read. |
toolCountMap | object | MCP server buckets. Call count per tool name. |
toolTotalRTMap | object | MCP server buckets. Total response time per tool name. |
toolAverageRTMap | object | MCP server buckets. Average response time per tool, derived on read. |
ewmaResponseTime | number | Exponentially weighted moving average of response time, when the bucket has one. |
Series across proxies
GET /api/clients/:clientId/telemetries returns one entry per proxy. It accepts the same query parameters as the organisation series.
Returns
The response contains interval, message set to Success, and telemetries. Each entry has proxyId, proxyName, proxyRegion, and a telemetry array in the shape above. A proxy whose series cannot be loaded contributes an empty telemetry array.