App Installations

Update App Installation

Changed on

Updates the metadata and external_id your app keeps on an installation. Only the metadata keys you send change, so separate jobs can each keep their own keys.

patch/app_installations/{id}

Request

  • Base URL
    https://api.whop.com/api/v1
  • URL
    https://api.whop.com/api/v1/app_installations/{id}
  • Auth
    HTTP bearer

Request body

external_idstring nullable

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.

metadataobject

Metadata keys to set, as string values. A key set to null is removed and keys you leave out don't change; an empty object clears every key. At most 50 keys; keys are at most 100 characters and values at most 500.

Example request

{
  "external_id": "acme-store",
  "metadata": {
    "last_synced_at": "2026-10-16T21:00:00Z"
  }
}

Response

app installation updated

created_atstring 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_idstring 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.

idstring required

App installation ID, prefixed aag_.

metadataobject 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_reauthorizationboolean required

Whether the app now asks for permissions the account hasn't approved yet.

updated_atstring required

When the installation last changed, such as a metadata update or the account changing the app's permissions, as an ISO 8601 timestamp.

Example response

{
  "account": {
    "id": "biz_xxxxxxxxxxxxxx",
    "title": "Acme Bookkeeping"
  },
  "app": {
    "developer": {
      "id": "biz_xxxxxxxxxxxxxx",
      "title": "Acme Bookkeeping"
    },
    "icon": {
      "url": "https://pub-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.r2.dev/custom-perk-icon.svg"
    },
    "id": "app_xxxxxxxxxxxxxx",
    "name": "Other App"
  },
  "created_at": "2026-01-01T12:00:00.000Z",
  "external_id": "acme-books",
  "id": "aag_xxxxxxxxxxxxxx",
  "metadata": {
    "last_synced_at": "2026-01-01T12:00:00.000Z",
    "quickbooks_realm_id": "9341452712"
  },
  "updated_at": "2026-01-01T12:00:00.000Z"
}

Changes