コンテンツにスキップ

Execute an analytics query

POST
/v1/query

Execute a SQL-like analytics query against telemetry data stored in ClickHouse. Only SELECT statements are allowed. Queries are validated, rewritten to enforce tenant isolation, and executed against a read-only connection. Requires the data:admin scope.

object
project_id
required

The project ID to query.

string format: uuid
sql
required

SQL query (SELECT only).

string
limit

Maximum number of rows to return.

integer
default: 1000 >= 1 <= 10000

Query results.

object
success
boolean
data
object
rows

Result rows; each object maps column name to value.

Array<object>
object
key
additional properties
any
rowCount

Number of rows returned.

integer
X-RateLimit-Limit
integer

Maximum number of requests allowed per hour.

X-RateLimit-Remaining
integer

Number of requests remaining in the current window.

X-RateLimit-Reset
integer

Unix timestamp when the rate limit window resets.

Rejected query. Returned for a malformed request body and for user SQL that the database rejects (unknown column, table, or function; syntax errors; type mismatches; forbidden operations). The ClickHouse diagnostic is included in the error message.

RFC 9457 Problem Details. Served with the application/problem+json media type. error_category, retryable, and retry_after are Framedash extension members. type always defaults to about:blank, so it is always present; detail and the extension members are present only when applicable.

object
type
required

Problem type URI; about:blank when no specific type applies.

string format: uri
default: about:blank
title
required

Short, human-readable summary of the problem type.

string
status
required

HTTP status code.

integer
detail

Human-readable explanation specific to this occurrence.

string
error_category

Extension member categorizing the error.

string
Allowed values: authentication authorization validation rate_limit not_found conflict payload internal
retryable

Extension member; true when retrying may succeed (e.g. 429, 503).

boolean
retry_after

Extension member; suggested retry delay in seconds, when applicable.

integer

Missing or invalid API key.

RFC 9457 Problem Details. Served with the application/problem+json media type. error_category, retryable, and retry_after are Framedash extension members. type always defaults to about:blank, so it is always present; detail and the extension members are present only when applicable.

object
type
required

Problem type URI; about:blank when no specific type applies.

string format: uri
default: about:blank
title
required

Short, human-readable summary of the problem type.

string
status
required

HTTP status code.

integer
detail

Human-readable explanation specific to this occurrence.

string
error_category

Extension member categorizing the error.

string
Allowed values: authentication authorization validation rate_limit not_found conflict payload internal
retryable

Extension member; true when retrying may succeed (e.g. 429, 503).

boolean
retry_after

Extension member; suggested retry delay in seconds, when applicable.

integer

API key with data:admin scope required.

RFC 9457 Problem Details. Served with the application/problem+json media type. error_category, retryable, and retry_after are Framedash extension members. type always defaults to about:blank, so it is always present; detail and the extension members are present only when applicable.

object
type
required

Problem type URI; about:blank when no specific type applies.

string format: uri
default: about:blank
title
required

Short, human-readable summary of the problem type.

string
status
required

HTTP status code.

integer
detail

Human-readable explanation specific to this occurrence.

string
error_category

Extension member categorizing the error.

string
Allowed values: authentication authorization validation rate_limit not_found conflict payload internal
retryable

Extension member; true when retrying may succeed (e.g. 429, 503).

boolean
retry_after

Extension member; suggested retry delay in seconds, when applicable.

integer

Rate limit exceeded.

RFC 9457 Problem Details. Served with the application/problem+json media type. error_category, retryable, and retry_after are Framedash extension members. type always defaults to about:blank, so it is always present; detail and the extension members are present only when applicable.

object
type
required

Problem type URI; about:blank when no specific type applies.

string format: uri
default: about:blank
title
required

Short, human-readable summary of the problem type.

string
status
required

HTTP status code.

integer
detail

Human-readable explanation specific to this occurrence.

string
error_category

Extension member categorizing the error.

string
Allowed values: authentication authorization validation rate_limit not_found conflict payload internal
retryable

Extension member; true when retrying may succeed (e.g. 429, 503).

boolean
retry_after

Extension member; suggested retry delay in seconds, when applicable.

integer
X-RateLimit-Limit
integer

Maximum number of requests allowed per hour.

X-RateLimit-Remaining
integer

Number of requests remaining in the current window.

X-RateLimit-Reset
integer

Unix timestamp when the rate limit window resets.

Retry-After
integer

Number of seconds to wait before retrying. Present only on 429 responses. Because the limit uses a sliding window, honor this value per response rather than scheduling a retry for the reset time.

Infrastructure failure (for example, the database is unreachable). Errors in the submitted SQL are returned as 400, not 500.

RFC 9457 Problem Details. Served with the application/problem+json media type. error_category, retryable, and retry_after are Framedash extension members. type always defaults to about:blank, so it is always present; detail and the extension members are present only when applicable.

object
type
required

Problem type URI; about:blank when no specific type applies.

string format: uri
default: about:blank
title
required

Short, human-readable summary of the problem type.

string
status
required

HTTP status code.

integer
detail

Human-readable explanation specific to this occurrence.

string
error_category

Extension member categorizing the error.

string
Allowed values: authentication authorization validation rate_limit not_found conflict payload internal
retryable

Extension member; true when retrying may succeed (e.g. 429, 503).

boolean
retry_after

Extension member; suggested retry delay in seconds, when applicable.

integer