---
title: "Retrieve GEO run recommendations"
method: GET
path: "/v1/geo/analyses/{configId}/runs/{runId}/recommendations"
tags: ["GEO"]
---

# Retrieve GEO run recommendations

`GET /v1/geo/analyses/{configId}/runs/{runId}/recommendations`

## Request

- Base URL: `https://api.jasper.ai`
- URL: `https://api.jasper.ai/v1/geo/analyses/{configId}/runs/{runId}/recommendations`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2
    - Authorization code: `https://api.jasper.ai/oauth2/authorize`
    - Token URL: `https://api.jasper.ai/oauth2/token` scopes: `user`

Findings for a run, filtered and paginated. Totals per severity and category cover every page.

## Path parameters

- `configId` string, required
- `runId` string, required

## Query parameters

- `severity` string
- `category` string[]
- `topicClusterId` string
- `topicClusterName` string
- `page` number
- `limit` number

## Response `200`

- GeoRunRecommendationsResponseDto
  - `requestId` string, required
  - `resource` string, required
  - `data` GeoFindingDto[], required
    - `id` string, required: Stable ID of this finding within the run.
    - `type` 'violation' | 'recommendation', required
    - `category` 'low-information-density' | 'missing-source-citations' | 'missing-summary' | 'poor-content-structure' | 'missing-faq' | 'missing-eeat-signals' | 'non-query-headings' | 'stale-content' | 'ambiguous-reference' | 'inconsistent-entity-naming' | 'poor-scannability' | 'format-mismatch' | 'missing-decision-criteria' | 'unclear-messaging' | 'inverted-structure-missing' | 'missing-content', required
    - `severity` 'critical' | 'warning' | 'info', required
    - `topicClusterId` string: Set when the finding belongs to a configured topic cluster.
    - `topicClusterName` string: Set when the finding belongs to a name-only proposed topic cluster.
    - `location` GeoFindingLocationDto, required
      - `title` string, required
      - `url` string, required
    - `description` string, required: What is wrong, in natural language.
    - `originalText` string: The offending excerpt, when the finding points at specific copy.
    - `action` GeoFindingActionDto, required
      - `instructions` string, required: What to change on the page to resolve the finding.
  - `pagination` GeoPaginationDto, required
    - `totalRecords` number, required: Findings matching the filters, across every page.
    - `page` number, required
    - `pageSize` number, required
    - `next` string, nullable, required: Link to the next page, carrying the same filters. `null` on the last page.
    - `prev` string, nullable, required: Link to the previous page, carrying the same filters. `null` on the first page.

## Other responses

- `404`: Run not found.

## Changes

- **2026-11-03** `3d5be7408661`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/jasper/apis/jasper-api/changes/v1/geo/analyses/:configId/runs/:runId/recommendations/get.md)

---

[API](https://skmtc.dev/jasper/apis/jasper-api.md) - [All operations](https://skmtc.dev/jasper/apis/jasper-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jasper/apis/jasper-api/revisions/3d5be7408661?raw)
