---
title: "Raw SQL query (SELECT only)"
method: POST
path: "/cli/query"
tags: ["Utility"]
---

# Raw SQL query (SELECT only)

`POST /cli/query`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/cli/query`
- Auth: HTTP bearer

Execute a read-only SQL SELECT against the RiskModels database. Only SELECT statements are permitted; DML and DDL are rejected. Results capped at 10,000 rows. Billed as `cli-query` capability. Requires valid Bearer token with billing balance.

## Request body

- object
  - `sql` string, required: SELECT statement to execute. Multi-statement and DML/DDL are rejected.
  - `limit` integer: Max rows to return if no LIMIT clause in sql (default 100, max 10000).

## Response `200`

Query results.

- object
  - `results` object[]
  - `count` integer
  - `sql` string: Executed SQL (may have LIMIT appended).

## Other responses

- `400`: Invalid or disallowed SQL.
- `401`: Missing or invalid Bearer token.
- `402`: Insufficient balance.

---

[API](https://skmtc.dev/riskmodels/apis/riskmodels-api.md) · [All operations](https://skmtc.dev/riskmodels/apis/riskmodels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/riskmodels/apis/riskmodels-api/revisions/1a034cad408a?raw)
