---
title: "Latest AI review insight for a tracked app"
method: GET
path: "/api/v1/apps/{id}/review-insights"
tags: ["Workspace"]
---

# Latest AI review insight for a tracked app

`GET /api/v1/apps/{id}/review-insights`

## Request

- Base URL: `https://api.trysonar.app`
- URL: `https://api.trysonar.app/api/v1/apps/{id}/review-insights`
- Auth: HTTP bearer

The latest AI review analysis for a tracked app (your own or a competitor), per country: praise/complaint themes with verbatim quotes and trend movement (new/persisting/growing/improving/resolved), overall sentiment, feature requests, and the regeneration cooldown. `insight` is null when none has been generated. Requires an Indie or Agency plan.

## Path parameters

- `id` string, required

## Query parameters

- `country` string

## Response `200`

{ app_id, country, insight: { generated_at, reviews_analyzed, avg_score, window_start, window_end, model, overview, sentiment, praises[], complaints[], feature_requests[], changes_since_last } | null, cooldown: { in_cooldown, next_available_at } }

- object
  - `data` object, required: Result payload — full field reference at https://trysonar.app/docs/api

## Other responses

- `400`: Missing or invalid request parameters
- `401`: Missing or invalid API key
- `403`: Plan or scope insufficient (workspace endpoints need an Indie or Agency plan; writes also need a write-scope key)
- `404`: Resource not found or not tracked by your organization
- `429`: Rate limited — see `error.reason`: daily_limit (Indie 1,000, Agency 5,000, trial 150 requests/day, resets 00:00 UTC; see `reset_at`), anonymous_daily_limit / batch_too_large (keyless free tier), store_rate_limited or concurrency_limit (transient, honor `retry_after_seconds`)
- `500`: Unexpected server error

---

[API](https://skmtc.dev/trysonar/apis/sonar-api.md) · [All operations](https://skmtc.dev/trysonar/apis/sonar-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trysonar/apis/sonar-api/revisions/bf1d31dadd5f?raw)
