List a project's app installs
get/v1/tenants/{tenant_id}/installs
Requires an API key
Active and revoked installs, oldest first. Anyone with access to the project.
Path parameters
- tenant_idintegerRequired
Returns · 200
- dataarray of InstallRecordRequired
Child attributes
- idstringRequired
- app_idstringRequired
- app_namestring | null
- tenant_idintegerRequired
- scopesarray of stringRequiredWhat the app holds in this project: its consented scopes, never more than the app requests.
- consent_revisionintegerRequired
- rate_limit_per_minuteintegerRequired
- statusenumRequiredOne of
active,revoked - installed_bystringRequired
- installed_atstringRequired
- updated_atstringRequired
- revoked_atstring | nullRequired
- revoked_bystring | nullRequired
- revoked_reasonstring | nullRequireduninstalled or app_archived.
- staff_reasonstring | nullSet when Ivora staff installed the app on the project's request: why. Null for an install by the project's own team.
GET /v1/tenants/{tenant_id}/installs
curl --fail-with-body "https://api.ivoracharge.com/v1/tenants/1042/installs" \
-H "Authorization: Bearer $IVORA_API_KEY"Response · 200JSON
{
"data": [
{
"id": "id_0123456789abcdef",
"app_id": "app_0123456789abcdef",
"app_name": "string",
"tenant_id": 1042,
"scopes": [
"string"
],
"consent_revision": 1,
"rate_limit_per_minute": 1,
"status": "active",
"installed_by": "string",
"installed_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z",
"revoked_at": "2026-09-30T17:00:00Z",
"revoked_by": "string",
"revoked_reason": "string",
"staff_reason": "string"
}
]
}Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
Try itproduction · api.ivoracharge.com
Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.



