# Get a run

> Read one tracking run by id: its state, the engines it asked, its counts, and its stored visibility once it completes.

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

```http
GET https://api.ranqo.ai/v1/brands/{brand_id}/runs/{run_id}
```

One run of the brand.

## Path parameters

| Name | Type | Description |
| --- | --- | --- |
| `brand_id` | string | The brand id, from `GET /v1/brands`. |
| `run_id` | string | The run id, from `GET /v1/brands/{brand_id}/runs`. |

## Response

A tracking run: each tracked prompt asked on each of its engines once.

| Field | Type | Description |
| --- | --- | --- |
| `id` | string |  |
| `status` | string | One of `pending`, `running`, `completed`, `failed`. |
| `platforms` | array of strings | The engines the run asked. |
| `created_at` | string | RFC 3339 timestamp in UTC. |
| `started_at` | string or null | RFC 3339 timestamp in UTC. |
| `completed_at` | string or null | RFC 3339 timestamp in UTC. |
| `prompt_count` | integer or null | Prompts the run asked; null until it completes. |
| `answer_count` | integer or null | Answers the run's scores count: the successful ones and the filled-in ones. Null until it completes. |
| `failed_count` | integer or null | Questions that failed, filled-in ones included. Null until it completes. |
| `filled_count` | integer or null | Failed questions filled in from the same prompt's previous answer; 0 on runs from before filling-in existed. Null until it completes. |
| `visibility` | number or null | The run's own visibility, 0-100, fixed when it completed: it counts filled-in answers, and the answers of prompts deleted since. The reports leave both out, so they can differ. Null until it completes. |
| `average_position` | number or null | The run's stored average position when named; null until it completes, and when the brand was never named. |

## 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/runs/RUN_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) |
