---
title: "App Store Connect engagement for one of your iOS apps (Agency plan)"
method: GET
path: "/api/v1/apps/{id}/engagement"
tags: ["Workspace"]
---

# App Store Connect engagement for one of your iOS apps (Agency plan)

`GET /api/v1/apps/{id}/engagement`

## Request

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

App Analytics for one of your own iOS apps — same numbers as the Engagement page: impressions → product page views → downloads with conversion rates (page_view_rate, download_rate) and App Store search share, impressions by source, and installs, deletions and sessions by day. Impressions follow App Store Connect's definition and INCLUDE product page views, so totals reconcile with App Store Connect; downloads come from the Sales report. Needs an App Store Connect connection with an Admin-role key. Every response carries `status` (ready | not_connected | not_ios | app_not_in_account | pending | key_lacks_analytics) and a human-readable `message` when not ready, instead of an empty series; days Apple hasn't reported have `reported: false` and null metrics. Requires the Agency plan — 403 on other plans.

## Path parameters

- `id` string, required

## Query parameters

- `start` string, date
- `end` string, date
- `days` integer
- `store` 'ios' | 'android'

## Response `200`

{ app_id, app_name, store, status, connected, message, apple_app_id, last_synced_at, range: { start, end }, reported_days, totals: { impressions, product_page_views, downloads, installs, deletions, sessions } | null, rates: { page_view_rate, download_rate, search_share } | null, sources: [{ source_type, impressions, product_page_views, share_of_impressions }], days: [{ date, reported, impressions, product_page_views, installs, deletions, sessions, downloads }] }

- 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`: forbidden — App Store Connect data via the API requires the Agency plan
- `404`: Resource not found or not tracked by your organization
- `429`: Rate limited — see `error.reason`: daily_limit (Indie plan: 1,000 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/73fe8bc46522?raw)
