---
title: "List App Installations"
method: GET
path: "/app_installations"
tags: ["App Installations"]
---

# List App Installations

`GET /app_installations`

## Request

- Base URL: `https://api.whop.com/api/v1`
- URL: `https://api.whop.com/api/v1/app_installations`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

Lists app installations, newest first. An app's API key lists the accounts that installed it. An account lists the apps installed on it; a user passes that account's `account_id`. The developer of an app lists every installation of it by passing `app_id`. Uninstalled apps, deleted apps and deleted accounts are left out.

## Query parameters

- `account_id` string
- `app_id` string
- `view_type` 'hub' | 'discover' | 'dash' | 'dashboard' | 'analytics' | 'skills' | 'openapi'
- `external_id` string
- `created_before` string
- `created_after` string
- `first` integer
- `after` string
- `last` integer
- `before` string
- `order` 'created_at' | 'name'
- `direction` 'asc' | 'desc'

## Response `200`

app installations listed

- object
  - `data` AppInstallation[], required
    - `account` AccountSummary, required
      - `id` string, required: Account ID, prefixed `biz_`.
      - `title` string, required: Account display name.
    - `app` AppSummary, required
      - `developer` AccountSummary, required
        - `id` string, required: Account ID, prefixed `biz_`.
        - `title` string, required: Account display name.
      - `icon` AppIcon, required
        - `url` string, required: Icon image URL. Always present — the default app icon when none is uploaded.
      - `id` string, required: App ID, prefixed `app_`.
      - `name` string, required: App display name.
    - `created_at` string, required: When the app was first installed on the account, as an ISO 8601 timestamp. Installing the app again later keeps the original time.
    - `external_id` string, nullable, required: Your app's own identifier for this installation, such as the ID of the linked account in another system, or `null` when none is set. At most 255 characters and unique across your app's installations, so you can find an installation with `GET /app_installations?external_id=`; setting one another installation already has returns a `409`. Only the app and its developer see it; for the account the app is installed on it is always `null`.
    - `id` string, required: App installation ID, prefixed `aag_`.
    - `metadata` object, nullable, required: String keys and values your app stores about this installation, such as a sync cursor or the ID of the linked account in another system. Empty until your app sets a key, and kept if the account removes the app and installs it again. At most 50 keys; keys are at most 100 characters and values at most 500. Only the app can change it. Only the app and its developer see it; for the account the app is installed on it is always `null`.
    - `requesting_reauthorization` boolean, required: Whether the app now asks for permissions the account hasn't approved yet.
    - `updated_at` string, required: When the installation last changed, such as a `metadata` update or the account changing the app's permissions, as an ISO 8601 timestamp.
  - `page_info` object, required
    - `end_cursor` string, nullable, required
    - `has_next_page` boolean, required
    - `has_previous_page` boolean, required
    - `start_cursor` string, nullable, required

## Other responses

- `400`: Invalid Parameters
- `401`: Unauthorized
- `403`: Forbidden

## Changes

> 201 revisions in range; 1 not diffed.

- **2026-10-30** `2af1a3aa41c9`: 2 info
  - the security scope `developer:app_installation:read` was added to the endpoint's security scheme `bearerAuth`
  - the security scope `developer:basic:read` was removed from the endpoint's security scheme `bearerAuth`
- **2026-10-30** `7777af2c99e5`: 2 info
  - the security scope `developer:app_installation:read` was added to the endpoint's security scheme `bearerAuth`
  - the security scope `developer:basic:read` was removed from the endpoint's security scheme `bearerAuth`
- **2026-10-30** `dfe1a28eca1d`: 2 info
  - the security scope `developer:app_installation:read` was added to the endpoint's security scheme `bearerAuth`
  - the security scope `developer:basic:read` was removed from the endpoint's security scheme `bearerAuth`
- **2026-10-30** `f6e2337ba6e8`: 2 info
  - the security scope `developer:app_installation:read` was added to the endpoint's security scheme `bearerAuth`
  - the security scope `developer:basic:read` was removed from the endpoint's security scheme `bearerAuth`
- **2026-10-30** `1940812649ce`: 2 info
  - the security scope `developer:app_installation:read` was added to the endpoint's security scheme `bearerAuth`
  - the security scope `developer:basic:read` was removed from the endpoint's security scheme `bearerAuth`

[Operation history](https://skmtc.dev/whop/apis/whop-api/changes/app_installations/get.md)

---

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