# Ask a cited question

> POST /chat: Ask a cited question

`POST https://usedocs.app/chat`

Returns a grounded answer from the bot's documentation. Low-confidence questions set escalate=true instead of inventing. Rate limit: 30 requests / 60 seconds per visitor (policy widget-chat).

## Request body

Required, `application/json`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `botId` | `string (uuid)` | Yes | Bot UUID from the dashboard. |
| `botKey` | `string` |  | Public bot key from Settings → API and MCP. |
| `question` | `string` | Yes | Visitor or agent question. |
| `conversationId` | `string` |  | Continue an existing thread. |
| `visitor` | `string` |  | Stable visitor or ticket id for rate limiting. |
| `pageUrl` | `string (uri)` |  | Page the visitor was on. |

## Responses

| Status | Description |
| --- | --- |
| `200` | Cited answer |
| `400` | Structured JSON error |
| `403` | Structured JSON error |
| `429` | Rate limited. Honor Retry-After and RateLimit headers. |

## Response fields

| Field | Type | Description |
| --- | --- | --- |
| `conversationId` | `string` |  |
| `answer` | `string` |  |
| `citations` | `Citation[]` |  |
| `confidence` | `number` |  |
| `escalate` | `boolean` |  |
| `actions` | `object[]` |  |

### `citations`[]: Citation

| Field | Type | Description |
| --- | --- | --- |
| `url` | `string (uri)` |  |
| `title` | `string` |  |