# Metrics

> Time series for CPU, memory, network, requests, latency and cost.

Time series for CPU, memory, network, requests, latency and cost.

| Operation | Method and path |
| --- | --- |
| [Query metrics](#query-metrics) | `GET /v1/projects/{project}/metrics` |

## Query metrics

```http
GET /v1/projects/{project}/metrics
```

- **Operation:** `queryMetrics`
- **Scopes:** `metrics:read`

**Parameters**

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `project` * | path | string | Project id (`prj_…`) or slug (resolved in the `Guv-Workspace` workspace, or the caller's default). |
| `metric` * | query | array of [MetricName](/docs/api/objects/metric-name/) | Comma-separated, e.g. cpu,memory,cost. |
| `environment` | query | string |  |
| `service` | query | string |  |
| `from` | query | string (date-time) |  |
| `to` | query | string (date-time) |  |
| `step` | query | integer | Step in seconds. |
| `group_by` | query | `service`, `replica`, `none` |  |

**Responses**

| Status | Meaning | Body |
| --- | --- | --- |
| `200` OK | OK. | [MetricsResult](/docs/api/objects/metrics-result/) |

**Errors:** `400`, `401`, `403`, `404`, `429`, `500`, as [problem+json](/errors/) with a stable `code`.

**Example**

```bash
curl https://api.guv.dev/v1/projects/shopfront/metrics \
  -H "Authorization: Bearer $GUV_TOKEN"
```

**Example response**

```json
{
  "from": "2026-10-23T13:00:00Z",
  "to": "2026-10-23T14:00:00Z",
  "step_seconds": 60,
  "series": [
    {
      "metric": "cpu",
      "unit": "vCPU",
      "service_id": "svc_01jbx2m9k7q4r8t5v6w3y0z1sv",
      "environment_id": "env_01jbx2m9k7q4r8t5v6w3y0z1en",
      "limit": 2,
      "points": [
        {
          "t": "2026-10-23T13:00:00Z",
          "v": 0.21
        },
        {
          "t": "2026-10-23T13:01:00Z",
          "v": 0.24
        }
      ]
    }
  ]
}
```
