Skip to main content
Each app is a unique Bundle ID + Team ID pair. Incoming attestations are matched to an app by these two values — no API key is involved on the client side.
App limits by tier: Free allows 2 apps, Pro allows 3, Business allows 10, Enterprise is unlimited.

Two surfaces


The app object


List apps

Returns all apps in the organization, primary app first, then alphabetically by name. Response — array of app objects.

Register an app

Request body
Response — the created app object. Errors

Get an app

Response — the app object. 404 if the app doesn’t exist in your organization.

Update an app

All fields optional; only provided fields change. Bundle ID and Team ID cannot be changed — register a new app instead. Request body
Response — the updated app object.

Delete an app

Permanently removes the app. If the deleted app was primary, another active app is promoted to primary automatically. Response204 No Content Errors

Activate / deactivate

Toggles whether the app accepts attestations. The primary app cannot be deactivated (403). Response — the updated app object.

Set primary

Makes this app the organization’s primary app and clears the flag on all others. The app must be active (403 otherwise). Response — the updated app object.

Usage stats (all apps)

Returns aggregate usage per app. Response

Usage detail (single app)

Query parameters Response
dailyUsage is sorted newest-day first; topDevices is the 10 devices with the most attestations; recentErrors is the 10 most recent failed attestation events.

Console API

/api/v1/org/apps covers app registration and lifecycle for the CLI and scripts. It accepts an API key (Authorization: Bearer gpat_…/aat_…) as well as a dashboard session, and its wire format is snake_case. :appRef accepts either the app’s UUID or its bundle ID (resolved within your organization). An unknown reference — including one belonging to another organization — returns 404.

The console app object

JWT configuration and risk thresholds are not part of this surface — use /api/v1/apps for those.

Endpoints

Create

Update

Only app_name, description, analytics_enabled, and webhook_enabled can change. Bundle ID and Team ID are immutable. A body with none of these returns 400.

Errors

Deletion rules differ between the two surfaces. /api/v1/org/apps refuses to delete the primary app while other apps exist — set another app primary first. /api/v1/apps deletes it and promotes another app automatically.