Skip to content

List installed apps

The app_installations.list operation: GET /api/v1/app_installations in the REST API and the app_installations_list tool in the MCP server.

GET/api/v1/app_installations

Lists the apps installed in the organization, newest first: the app and its publisher (verified or not), who installed it, the scopes granted, limitTo and the status. Filter by status; paginate with limit and starting_after.

At a glance

  • REST: GET /api/v1/app_installations
  • MCP tool: app_installations_list
  • Operation ID: app_installations.list
  • Scope: Organization
  • Permission: agents:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the agents:read scope
  • Since: M10

Request

Query parameters

FieldTypeRequiredDescription
limitinteger (1 to 100)No
starting_afterains_… IDNo
statusone of active, paused, revokedNo

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idains_… ID
data[].object"app_installation"
data[].orgIdorg_… ID
data[].appobject
data[].app.idocl_… ID
data[].app.namestring
data[].app.publisherstring
data[].app.logoUrlstring or null
data[].app.verifiedboolean
data[].app.statusone of active, disabled
data[].app.suspensionobject or null
data[].installedByusr_… ID
data[].scopesarray of one of 84 values, e.g. org:read, org:write, org:admin (all in the OpenAPI document)
data[].limitToobject
data[].limitTo.entityIdsarray of ent_… ID
data[].limitTo.brandIdsarray of brd_… ID
data[].limitsobject
data[].limits.rpsinteger or null
data[].limits.mutationsPerDayinteger or null
data[].limits.amountLimitsarray of object
data[].limits.amountLimits[].operationIdstring
data[].limits.amountLimits[].perCallmoney or null
data[].limits.amountLimits[].perDaymoney or null
data[].statusone of active, paused, revoked
data[].pausedReasonone of manual, installer_lost_access, platform_suspended, app_disabled or null
data[].pausedAtstring or null
data[].revokedAtstring or null
data[].createdAtstring
data[].updatedAtstring
has_moreboolean
next_cursorains_… ID or null

Examples

Installed apps

HTTP
GET /api/v1/app_installations
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "ains_01m4ttwd3veh9apbewxheq5xhc",
      "object": "app_installation",
      "orgId": "org_01m4ttwd3veh9apbewxheq5xh3",
      "app": {
        "id": "ocl_01m4ttwd3veh9apbewxheq5xha",
        "name": "Ledgerly AI",
        "publisher": "Ledgerly AI B.V.",
        "logoUrl": null,
        "verified": true,
        "status": "active",
        "suspension": null
      },
      "installedBy": "usr_01m4ttwd3veh9apbewxheq5xh6",
      "scopes": ["filings:read", "filings:write", "tasks:read", "tasks:write"],
      "limitTo": {
        "entityIds": ["ent_01m4ttwd3veh9apbewxheq5xh4"],
        "brandIds": []
      },
      "limits": {
        "rps": null,
        "mutationsPerDay": null,
        "amountLimits": []
      },
      "status": "active",
      "pausedReason": null,
      "pausedAt": null,
      "revokedAt": null,
      "createdAt": "2026-10-25T09:00:00.000Z",
      "updatedAt": "2026-10-25T09:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Paused installations, one per page

HTTP
GET /api/v1/app_installations?status=paused&limit=1
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "ains_01m4ttwd3veh9apbewxheq5xhc",
      "object": "app_installation",
      "orgId": "org_01m4ttwd3veh9apbewxheq5xh3",
      "app": {
        "id": "ocl_01m4ttwd3veh9apbewxheq5xha",
        "name": "Ledgerly AI",
        "publisher": "Ledgerly AI B.V.",
        "logoUrl": null,
        "verified": true,
        "status": "active",
        "suspension": null
      },
      "installedBy": "usr_01m4ttwd3veh9apbewxheq5xh6",
      "scopes": ["filings:read", "filings:write", "tasks:read", "tasks:write"],
      "limitTo": {
        "entityIds": ["ent_01m4ttwd3veh9apbewxheq5xh4"],
        "brandIds": []
      },
      "limits": {
        "rps": null,
        "mutationsPerDay": null,
        "amountLimits": []
      },
      "status": "paused",
      "pausedReason": "installer_lost_access",
      "pausedAt": "2026-10-26T14:30:00.000Z",
      "revokedAt": null,
      "createdAt": "2026-10-25T09:00:00.000Z",
      "updatedAt": "2026-10-26T14:30:00.000Z"
    }
  ],
  "has_more": true,
  "next_cursor": "ains_01m4ttwd3veh9apbewxheq5xhc"
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is invalid.Fix the fields listed in details.issues and send the request again.
permission_denied403You can't see the organization's agents and apps.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.