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.
Authentication
All app endpoints require an authenticated dashboard session (cookie-based).
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.
Response — 204 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.