Get a dedicated endpoint's monitoring series
Requests, error rate, latency and time-to-first-token percentiles, and tokens for a dedicated endpoint over 1h, 6h, 24h, or 7d, on one time grid. Every series also carries a whole-range figure. This is what the dashboard's Monitoring tab shows. Data appears within a minute of the endpoint serving its first request. The example cuts each `values` array to its first three points; a `1h` response has 241.
Required permission
Requires the endpoint.read permission. See Permissions for the roles and API key permissions that include it.
Command line
The orl CLI wraps this endpoint:
orl dedicated-endpoints series get <id> --range <range>apiKeyAuthorizationBearer <token>OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).
id*stringrange*string"1h""6h""24h""7d"Series
application/json- response
model*stringthe public model id every series is filtered to
range*string"1h""6h""24h""7d"start*stringthe first grid point
date-timeend*stringthe last grid point
date-timestepSeconds*integerpointCount*integerthe length of every series' values
metrics*Every chart, always all five. requests: success and error per second. errors: client_error, rate_limited and server_error, each as a share of all requests. latency (request start to last byte) and ttft (streaming requests only): p50, p90, p95 and p99 in seconds. tokens: per second by kind (input, cached_input, cache_write, output), only the kinds metered in the range.
curl -X GET 'https://api.openrelay.inc/v1/inference/endpoints/string/series?range=1h'{ "model": "private/acme-gpt-oss-20b", "range": "1h", "start": "2026-09-26T17:30:00Z", "end": "2026-09-26T18:30:00Z", "stepSeconds": 15, "pointCount": 241, "metrics": { "requests": { "unit": "requests_per_second", "series": [ { "key": "success", "values": [ 3.1, 2.9, null ], "window": 5300 }, { "key": "error", "values": [ 0.02, 0, null ], "window": 88 } ] }, "errors": { "unit": "ratio", "series": [ { "key": "client_error", "values": [ 0.004, 0, null ], "window": 0.005 }, { "key": "rate_limited", "values": [ 0, 0, null ], "window": 0.011 }, { "key": "server_error", "values": [ 0.002, 0, null ], "window": 0.0004 } ] }, "latency": { "unit": "seconds", "series": [ { "key": "p50", "values": [ 2.4, 2.3, null ], "window": 2.41 }, { "key": "p90", "values": [ 4.8, 4.6, null ], "window": 4.86 }, { "key": "p95", "values": [ 6.1, 6.8, null ], "window": 6.79 }, { "key": "p99", "values": [ 38.2, 41, null ], "window": 41.54 } ] }, "ttft": { "unit": "seconds", "series": [ { "key": "p50", "values": [ 0.17, 0.18, null ], "window": 0.173 }, { "key": "p90", "values": [ 0.28, 0.29, null ], "window": 0.289 }, { "key": "p95", "values": [ 0.35, 0.36, null ], "window": 0.358 }, { "key": "p99", "values": [ 0.47, 0.48, null ], "window": 0.475 } ] }, "tokens": { "unit": "tokens_per_second", "series": [ { "key": "input", "values": [ 3820, 3610, null ], "window": 6113042 }, { "key": "cached_input", "values": [ 1390, 1310, null ], "window": 2239951 }, { "key": "output", "values": [ 1260, 1180, null ], "window": 2013865 } ] } }}