get_metrics
Aggregate request metrics for this project over a time window — volume, error rate and p50/p95/p99 latency, bucketed for charting. By default the series cover inbound requests; pass targetId to slice over one outbound target's per-attempt rows instead (answers "which target is degraded?"); pass endpointId to slice over inbound rows for a single endpoint (answers "is this endpoint receiving traffic / erroring?"). Pass at most one of targetId / endpointId. Free plans see "hour" and "day"; "week" and "month" require an active paid subscription on the project owner and are silently downgraded to "day" otherwise (the response includes planGated: true when that happens). Returns {window, requestedWindow, planGated, scope, targetId?, endpointId?, bucketSeconds, buckets[], volume[], errors[], totalVolume, totalErrors, errorRate} plus latency series whose keys depend on scope: an inbound read (project-wide, or endpointId) carries relayP50[]/relayP95[]/relayP99[] for our own time and targetP50[]/targetP95[]/targetP99[] for the destination's, never blended; a targetId read carries p50[]/p95[]/p99[] for that target's attempts — series arrays are dense (one point per bucket, zero-filled when no traffic).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Time horizon. Defaults to "day". "week"/"month" require a paid plan; otherwise the server returns "day" with planGated=true. | |
| targetId | No | Optional outbound target UUID (from get_endpoint targets). When set, the series aggregate the per-attempt rows for that target instead of the project-wide inbound rows. | |
| endpointId | No | Optional endpoint UUID (from list_endpoints / get_endpoint). When set, the series aggregate inbound request rows for that endpoint only. Mutually exclusive with targetId. |