<!-- source: https://docs.redpine.ai/docs/api-reference/search/getCachedResult -->
# Re-fetch cached results

> Retrieve previously returned search results using the queryId from a prior search response. Returns the same results without billing. The request must use the same API key that performed the original search. Results are available for 7 days.

Each result carries `locked`/`tokens`/`cost`: a result not yet paid for through POST /api/v1/search/unlock comes back as a teaser (`locked: true`), never the full text.

`GET` `https://api.redpine.ai/api/v1/search/results/{queryId}`

## Authentication

```
Authorization: Bearer sk_live_YOUR_API_KEY
```

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `queryId` | string | yes | The queryId from a previous search response. |

## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `includeFigures` | boolean | no | Include figure images for results already unlocked. Free, like the rest of this endpoint: it re-delivers content that is already paid for and unlocks nothing. Applies to results that came from POST /api/v1/search/preview; a cached POST /api/v1/search/query response does not retain figures. |
| `imageMaxWidth` | integer | no | Maximum image width in pixels. |
| `imageMaxHeight` | integer | no | Maximum image height in pixels. |
| `imageQuality` | integer | no | JPEG quality for fetched images. |

## Responses

| Status | Description |
|---|---|
| `200` | Cached search results, filtered through the unlock ledger (latencyMs: 0) |
| `401` | Missing or invalid API key |
| `404` | Query ID not found or belongs to a different API key |
| `410` | Cached result has expired (past 7-day window) |

### 200 response fields

| Field | Type | Required | Description |
|---|---|---|---|
| `filterWarnings` | array | no | Advisory warnings about the supplied filter — for example filtering on a known field with no payload index, which is matched by scanning, or a collection excluded because it holds only open-access content and the filter asked for open_access=false. The search still runs. Omitted when there are none. |
| `journalMetricExpansions` | array | no | How each journal-metric condition resolved to ISSNs; omitted when no metric filter was used |
| `latencyMs` | integer | yes | Search latency in milliseconds |
| `queryId` | string | yes | Unique identifier for this query, matching the original search response. |
| `results` | object[] | yes | Every result from the original search, filtered through the unlock ledger. |