---
title: "Run a read-only analytics query for a project"
method: POST
path: "/analytics/query"
tags: ["Analytics"]
---

# Run a read-only analytics query for a project

`POST /analytics/query`

## Query parameters

- `projectId` string, uuid, required

## Headers

- `Replo-Api-Version` '2026-08-21', required

## Request body

- object
  - `query` string, required — Run a read-only analytics query for a project. Rules: - Use SELECT or WITH queries only. - Do not add project or namespace filters; project scoping is enforced server-side. - Prefer daily rollup tables for date-range summaries and use events_computed for ad-hoc session-level questions. - Aggregate-state rollup columns must use the matching ClickHouse merge function, such as countMerge, uniqMerge, or sumMerge, and queries must group by selected dimensions. - Maximum execution time: 60 seconds. - Maximum result rows: 100000. Queryable tables: Session-level computed analytics. Primary table for ad-hoc queries. Project scoped: yes. ```sql events_computed ( subject UUID, date DateTime64(3), name LowCardinality(String), path String, domain String, currencyCode String, subjectPurchaseSum Float64, subjectPurchaseCount Float64, subjectPurchaseFraction Float64, subjectPurchaseFractionalSum Float64, title String ) ``` Currency exchange rates for multi-currency reporting. Project scoped: no. ```sql currency_exchange_rates ( date Date, code String, rate Float32 ) ``` Pre-aggregated daily page metrics by day, domain, path, and UTM source. Project scoped: yes. ```sql daily_page_rollups ( day Date, domain String, path String, utm_source String, views_state AggregateFunction(count), unique_sessions_state AggregateFunction(uniq, UUID), converting_sessions_state AggregateFunction(uniq, UUID), fractional_conversions_state AggregateFunction(sum, Float64), fractional_revenue_usd_state AggregateFunction(sum, Float64), session_conversions_state AggregateFunction(sum, UInt64), session_revenue_usd_state AggregateFunction(sum, Float64) ) ``` Pre-aggregated daily project traffic metrics by day and UTM source. Project scoped: yes. ```sql daily_namespace_rollups ( day Date, utm_source String, views_state AggregateFunction(count), unique_sessions_state AggregateFunction(uniq, UUID), converting_sessions_state AggregateFunction(uniq, UUID) ) ``` Pre-aggregated daily purchase metrics by day and UTM source. Project scoped: yes. ```sql daily_namespace_purchase_rollups ( day Date, utm_source String, purchase_count_state AggregateFunction(count), total_revenue_usd_state AggregateFunction(sum, Float64), unique_purchasing_sessions_state AggregateFunction(uniq, UUID) ) ```

## Response `200`

Run a read-only analytics query for a project

- object
  - `rowCount` integer, required
  - `data` object[], required

## Other responses

- `400` — Invalid request.
- `401` — Missing or invalid Replo Public API token.
- `403` — You are not authorized to access this resource.
- `404` — Not Found
- `409` — The resource is in a conflicting state.
- `429` — Too many requests. Please retry after the time indicated by the Retry-After header.
- `500` — An internal error occurred.
- `503` — Service temporarily unavailable.

---

[API](https://skmtc.dev/replo/apis/replo-public-api.md) · [All operations](https://skmtc.dev/replo/apis/replo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/replo/replo-public-api/revisions/6f031f6819f4/schema)
