---
title: "Sql Queries Create"
method: POST
path: "/clickhouse/sql-queries/"
tags: ["clickhouse"]
---

# Sql Queries Create

`POST /clickhouse/sql-queries/`

Execute a SQL query against the organization's ClickHouse data.

POST /clickhouse/sql-queries/
{
    "query": "SELECT model, count(*) as cnt FROM logs GROUP BY model ORDER BY cnt DESC",
    "parameters": {}  // reserved for future ClickHouse parameterized query support
}

Returns:
{
    "columns": ["model", "cnt"],
    "rows": [["gpt-4", 150], ["claude-3", 120], ...],
    "row_count": 25,
    "execution_time_ms": 342
}

## Headers

- `Authorization` string, required

## Request body

- SQLQueryRequestRequest — Request serializer for the SQL Query Editor endpoint. `start_time` / `end_time` / `environment` are optional execution parameters. When supplied, the server renders any `{{ start_time }}` / `{{ end_time }}` references in the query through `fill_variables` (Jinja) before execution. This is how dashboard charts reuse a saved query as a parametric "view": the FE fetches the saved query text, then posts it here with the time window to render. `filters` / `dashboard_filtering` are optional and only used when a saved SQL query explicitly opts into `{{ dashboard_filters }}`.
  - `query` string, required — ClickHouse SQL query. Only SELECT statements allowed.
  - `start_time` string, date-time — Optional. Bound into `{{ start_time }}` references.
  - `end_time` string, date-time — Optional. Bound into `{{ end_time }}` references. Must be after start_time when both are set.
  - `environment` 'all' | 'prod' | 'test' — * `all` - all * `prod` - prod * `test` - test
  - `filters` object — Optional dashboard filters for saved SQL queries that opt in.
  - `dashboard_filtering` DashboardFilteringRequest
    - `enabled` boolean, required
    - `table` 'annotations' | 'eval_results' | 'latency_quantiles_hourly' | 'latency_quantiles_minute' | 'log_metrics' | 'log_metrics_hourly' | 'logs' | 'organization' | 'traces' — * `annotations` - annotations * `eval_results` - eval_results * `latency_quantiles_hourly` - latency_quantiles_hourly * `latency_quantiles_minute` - latency_quantiles_minute * `log_metrics` - log_metrics * `log_metrics_hourly` - log_metrics_hourly * `logs` - logs * `organization` - organization * `traces` - traces
    - `alias` string, nullable

## Response `200`

- SQLQueryResponse — Response serializer for the SQL Query Editor endpoint.
  - `columns` string[], required — Column names in the result set.
  - `rows` array[], required — Result rows (each row is an array of values).
    - unknown[]
      - unknown
  - `row_count` integer, required — Number of rows returned.
  - `execution_time_ms` integer, required — Server-side query execution time in milliseconds.
  - `warnings` object[] — Non-fatal dashboard filter warnings.

## Other responses

- `400`
- `403`
- `413`

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
