If you read metric data through the GraphQL API, move those queries to the Public API (V2). The GraphQL app.metrics fields read only our MongoDB metric store, and a growing share of metrics is now stored in ClickHouse.
Uptime monitoring moved to ClickHouse on July 21, 2026. Since then, uptime_monitor_duration, uptime_monitor_error_count, and days_until_ssl_expiration return nothing over GraphQL: app.metrics.keys returns zero keys, and app.metrics.timeseries returns the correct timestamps with an empty values array. Neither raises an error, so the gap is easy to miss.
Your monitoring is unaffected. Checks still run, and dashboards, triggers, and status pages read from ClickHouse directly. Only reads through the GraphQL metric fields are affected.
Host metrics and Kubernetes metrics are served the same way, so GraphQL doesn't return those either. Metrics reported by our integrations — throughput, response times, error counts, Apdex, and your own custom metrics — are unchanged and still available over GraphQL.
Here's where to send metric queries instead:
app.metrics.keys→GET /api/v2/metrics/names/{site_id}app.metrics.timeseries→POST /api/v2/metrics/timeseriesapp.metrics.list→POST /api/v2/metrics/list
The metric names stay the same, as do the name and region tags on uptime metrics. Uptime metrics also gained an id tag holding the monitor's ID, so you can query one monitor across a rename.
Both APIs authenticate with your personal API token, so you don't need new credentials. GraphQL stays the API for models and configuration: apps, incidents, dashboards, alerts, uptime monitors, and check-ins. If an agent reads this data for you, AppSignal MCP already queries the V2 endpoints.