Skip to content

List apps in the platform console

The platform.apps.list operation: GET /api/v1/platform/apps in the REST API and the platform_apps_list tool in the MCP server.

GET/api/v1/platform/apps

Registered apps of every organization (spec §41.3), newest first: query finds one by its ID (ocl_…) or part of its name; suspension lists the apps Ownrecord suspended (suspended), reinstated (reinstated) or ever suspended (any). Each has its publisher, owning organization, listing and suspension. Open one with platform.apps.get. Platform staff.

At a glance

  • REST: GET /api/v1/platform/apps
  • MCP tool: platform_apps_list
  • Operation ID: platform.apps.list
  • Scope: Platform
  • Permission: platform: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 platform:read scope
  • Since: M13

Request

Query parameters

FieldTypeRequiredDescription
querystringNoAn app ID (ocl_…) or part of its name.
suspensionone of suspended, reinstated, anyNoOnly apps under suspension (suspended), reinstated ones, or both (any).
limitinteger (1 to 100)NoPage size, 1 to 100 (default 10).
starting_afterocl_… IDNoThe next_cursor of the previous page.

Response

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

FieldTypeDescription
object"list"
dataarray of object
data[].idocl_… ID
data[].object"platform_app"
data[].namestring
data[].publisherstring
data[].orgobject
data[].org.idorg_… ID
data[].org.slugstring
data[].org.namestring
data[].visibilityone of private, listed
data[].listedboolean
data[].reviewStatusone of not_submitted, pending, changes_requested, approved, rejected
data[].statusone of active, disabled
data[].suspensionobject or null
data[].createdAtdate-time
data[].updatedAtdate-time
has_moreboolean
next_cursorstring or null

Examples

Apps under suspension

HTTP
GET /api/v1/platform/apps?suspension=suspended
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "ocl_01m4ttwd3veh9apbewxheq5xha",
      "object": "platform_app",
      "name": "Ledgerly AI",
      "publisher": "Ledgerly AI B.V.",
      "org": {
        "id": "org_01m4ttwd3veh9apbewxheq5xhb",
        "slug": "ledgerly",
        "name": "Ledgerly"
      },
      "visibility": "listed",
      "listed": true,
      "reviewStatus": "approved",
      "status": "active",
      "suspension": {
        "status": "suspended",
        "reason": "Its client secret was published in a public repository; tokens were used from unknown networks.",
        "suspendedAt": "2026-11-01T08:30:00.000Z",
        "reinstatedAt": null,
        "reinstateReason": null,
        "suspendedBy": "usr_01m4ttwd3veh9apbewxheq5xhg",
        "reinstatedBy": null
      },
      "createdAt": "2026-10-25T09:00:00.000Z",
      "updatedAt": "2026-11-01T08:30:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

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 aren't platform staff.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.