# Get a prompt

> Read one prompt by id: its text, category, theme and market, whether it is tracked, and its volume and difficulty.

Source: https://ranqo.ai/docs/api/reference/get-prompt

```http
GET https://api.ranqo.ai/v1/brands/{brand_id}/prompts/{prompt_id}
```

One prompt of the brand.

## Path parameters

| Name | Type | Description |
| --- | --- | --- |
| `brand_id` | string | The brand id, from `GET /v1/brands`. |
| `prompt_id` | string | The prompt id, from `GET /v1/brands/{brand_id}/prompts`. |

## Response

A question in the brand's prompt library: tracked, paused or never run.

| Field | Type | Description |
| --- | --- | --- |
| `id` | string |  |
| `text` | string |  |
| `category` | string | One of discovery, problem_solution, use_case, expert, comparison, brand_research. |
| `status` | string | `tracked`: asked on every run. `paused`: tracked before, not asked now, its answers kept. `never_run`: not tracked, and never switched on since tracking dates began to be recorded (March 2026), so a prompt tracked only before then and paused since also reads `never_run`, as on the dashboard. One of `tracked`, `paused`, `never_run`. |
| `theme` | object or null |  |
| `theme.id` | string |  |
| `theme.name` | string |  |
| `location` | string or null | The market the prompt is asked from, as stored. |
| `is_branded` | boolean | Whether the prompt was recorded as naming the brand when it was generated or added; a prompt added by hand is recorded as not. The text is not re-checked. |
| `volume` | integer or null | Estimated search volume, 1-5. |
| `difficulty` | integer or null | How crowded its answers are with competitors, 0-5: measured once a run asks it, estimated before. |
| `created_at` | string | RFC 3339 timestamp in UTC. |
| `activated_at` | string or null | RFC 3339 timestamp in UTC. When it was first tracked. Null for a prompt never tracked, and for one first tracked before March 2026, when this date began to be recorded. |

## Response headers

| Header | Description |
| --- | --- |
| `X-Request-Id` | The request id; quote it to support. |
| `RateLimit` | Requests left in this window and seconds until it resets. |
| `RateLimit-Policy` | The key's limit per window. |

## Example request

```bash title="curl"
curl "https://api.ranqo.ai/v1/brands/BRAND_ID/prompts/PROMPT_ID" \
  -H "Authorization: Bearer $RANQO_API_KEY"
```

## Errors

Errors are problem details (`application/problem+json`) with a stable `code`. See [Errors](https://ranqo.ai/docs/api/errors) for each one.

| Status | Codes |
| --- | --- |
| 400 | [`unknown_parameter`](https://ranqo.ai/docs/api/errors#unknown_parameter), [`api_key_in_url`](https://ranqo.ai/docs/api/errors#api_key_in_url) |
| 401 | [`missing_api_key`](https://ranqo.ai/docs/api/errors#missing_api_key), [`invalid_api_key`](https://ranqo.ai/docs/api/errors#invalid_api_key), [`api_key_revoked`](https://ranqo.ai/docs/api/errors#api_key_revoked), [`api_key_expired`](https://ranqo.ai/docs/api/errors#api_key_expired), [`api_key_orphaned`](https://ranqo.ai/docs/api/errors#api_key_orphaned) |
| 403 | [`plan_upgrade_required`](https://ranqo.ai/docs/api/errors#plan_upgrade_required), [`subscription_inactive`](https://ranqo.ai/docs/api/errors#subscription_inactive) |
| 404 | [`not_found`](https://ranqo.ai/docs/api/errors#not_found) |
| 429 | [`rate_limited`](https://ranqo.ai/docs/api/errors#rate_limited) |
| 500 | [`internal_error`](https://ranqo.ai/docs/api/errors#internal_error) |
| 503 | [`service_unavailable`](https://ranqo.ai/docs/api/errors#service_unavailable) |
