> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# App Installation

An App Installation represents one install of your app on one account. An account installs an app once, however many experiences it adds, so an installation holds state that belongs to the account rather than to one experience, such as a sync cursor or the ID of the account it's linked to in another system.

Use the App Installations API to [list the accounts your app is installed on](/api-reference/beta/app-installations/list-app-installations), [retrieve one](/api-reference/beta/app-installations/retrieve-app-installation), and [update](/api-reference/beta/app-installations/update-app-installation) the `metadata` and `external_id` your app keeps on it. An account can also list the apps installed on it, and a developer every installation of their app. Only the app and its developer see `metadata` and `external_id`, and only the app can change them.

## Endpoints

| Endpoint | Request |
| - | - |
| [List App Installations](/api-reference/beta/app-installations/list-app-installations) | GET `/app_installations` |
| [Retrieve App Installation](/api-reference/beta/app-installations/retrieve-app-installation) | GET `/app_installations/{id}` |
| [Update App Installation](/api-reference/beta/app-installations/update-app-installation) | PATCH `/app_installations/{id}` |

## Attributes

**id** `string` *required*

App installation ID, prefixed `aag_`.

**account** `object` *required*

Account the app is installed on.

> **Properties**
>
> **id** `string` *required*
>
> Account ID, prefixed `biz_`.
>
> **title** `string` *required*
>
> Account display name.

**app** `object` *required*

App that is installed.

> **Properties**
>
> **id** `string` *required*
>
> App ID, prefixed `app_`.
>
> **developer** `object` *required*
>
> Account that develops the app.
>
> > **Properties**
> >
> > **id** `string` *required*
> >
> > Account ID, prefixed `biz_`.
> >
> > **title** `string` *required*
> >
> > Account display name.
>
> **icon** `object` *required*
>
> App icon. Falls back to the default app icon when none is uploaded.
>
> > **Properties**
> >
> > **url** `string` *required*
> >
> > Icon image URL. Always present — the default app icon when none is uploaded.
>
> **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 | null` *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`.

**metadata** `object | null` *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.

```json AppInstallation theme={null}
{
	"id": "aag_T4k8M2p6W9r3Qx",
	"app": {
		"id": "app_Q7m3V9k2X5t8Lp",
		"name": "QuickBooks Sync",
		"icon": {
			"url": "https://assets.whop.com/apps/quickbooks-sync/icon.png"
		},
		"developer": {
			"id": "biz_W3r7N1k5P8q2Hd",
			"title": "Ledgerline Labs"
		}
	},
	"account": {
		"id": "biz_J8n2R5p9T1w4Kx",
		"title": "Acme Bookkeeping"
	},
	"external_id": "acme-store",
	"metadata": {
		"last_synced_at": "2026-10-16T21:00:00Z",
		"quickbooks_realm_id": "9341452712"
	},
	"requesting_reauthorization": false,
	"created_at": "2026-09-02T15:30:00.000Z",
	"updated_at": "2026-10-16T21:00:04.000Z"
}
```


## Related topics

- [List App Installations](/api-reference/beta/app-installations/list-app-installations.md)
- [Retrieve App Installation](/api-reference/beta/app-installations/retrieve-app-installation.md)
- [Update App Installation](/api-reference/beta/app-installations/update-app-installation.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.