Skip to main content

App Utilization Export

GET /v2/clients/{client_id}/analytics/apps/utilization/export

Returns the same filtered and sorted dataset as App Utilization, but as a downloadable CSV instead of paginated JSON.

This is the V2 replacement for GET /internal/v1/clients/{client_id}/saas-utilization/apps/export.

For the shared export design rules, see Export endpoints.

Use Case

Use this endpoint to:

  • Export the current SaaS utilization table exactly as filtered in the UI
  • Download a spreadsheet-friendly snapshot of app usage metrics for a date range
  • Share or archive the current sorted table without replaying pagination in the client

Path Parameters

ParameterTypeDescription
client_idstring (uuid)Unique identifier for the client organization

Query Parameters

This endpoint accepts the same filtering and sorting parameters as App Utilization, except pagination parameters are not supported.

ParameterTypeRequiredDefaultDescription
start_datestringYes-Start of period (YYYY-MM-DD)
end_datestringYes-End of period, inclusive (YYYY-MM-DD)
compare_start_datestringNo-Comparison period start (YYYY-MM-DD). Must be provided with compare_end_date.
compare_end_datestringNo-Comparison period end, inclusive (YYYY-MM-DD). Must be provided with compare_start_date.
filterstringNo-Filter by discovery status: discovered, dropped_off
qstringNo-Search against canonical_name (case-insensitive, partial match)
category_idsstringNo-Comma-separated catalog category UUIDs to filter by
vendor_idsstringNo-Comma-separated catalog vendor UUIDs to filter by
is_favoritebooleanNo-Filter by favorite status
is_approvedbooleanNo-Filter by approval status
department_idsstringNo-Comma-separated department UUIDs to scope usage data to
sort_bystringNocanonical_nameSort field: canonical_name, unique_users, active_time, avg_time, session_count
sort_orderstringNodescSort direction: asc, desc

cursor and page_size are not accepted. The response always contains the full filtered result set.

Response

This endpoint returns a UTF-8 CSV file.

HeaderTypeDescription
app_idstringClient-scoped app ID
catalog_app_idstringBacking catalog app ID
app_namestringCanonical app name
vendor_namestringCatalog vendor name
category_namesstringSemicolon-separated category names
is_favoritebooleanFavorite status
is_approvedbooleanApproval status
license_countintegerLicense count from the app record
unique_usersintegerCurrent-period distinct users
unique_users_change_pctnumberPercent change vs comparison period; blank when no comparison period
unique_users_compare_valueintegerComparison-period distinct users; blank when no comparison period
active_time_msintegerCurrent-period active time in milliseconds
active_time_change_pctnumberPercent change vs comparison period; blank when no comparison period
active_time_compare_valueintegerComparison-period active time in milliseconds; blank when no comparison period
avg_time_ms_per_dayintegerCurrent-period average active time in milliseconds per distinct user
avg_time_ms_per_day_change_pctnumberPercent change vs comparison period; blank when no comparison period
avg_time_ms_per_day_compare_valueintegerComparison-period average active time per user in milliseconds; blank when no comparison period
session_countintegerCurrent-period average session count per distinct user (rounded)
session_count_change_pctnumberPercent change vs comparison period; blank when no comparison period
session_count_compare_valueintegerComparison-period average sessions per user; blank when no comparison period
usage_levelstringUsage intensity: heavy, medium, light
risk_levelstringRisk classification: critical, medium, low; blank for approved apps

Headers

HeaderExample ValueDescription
Content-Typetext/csv; charset=utf-8CSV payload
Content-Dispositionattachment; filename="app-utilization-2026-02-01-to-2026-02-28.csv"Download hint

Example Request

curl -L "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/analytics/apps/utilization/export?start_date=2026-02-01&end_date=2026-02-28&category_ids=a7b8c9d0-e1f2-3456-abcd-789012345678&sort_by=active_time&sort_order=desc" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-o app-utilization.csv

Example Response Body

app_id,catalog_app_id,app_name,vendor_name,category_names,is_favorite,is_approved,license_count,unique_users,unique_users_change_pct,unique_users_compare_value,active_time_ms,active_time_change_pct,active_time_compare_value,avg_time_ms_per_day,avg_time_ms_per_day_change_pct,avg_time_ms_per_day_compare_value,session_count,session_count_change_pct,session_count_compare_value,usage_level,risk_level
f1a2b3c4-d5e6-7890-abcd-ef1234567890,a1b2c3d4-e5f6-7890-abcd-ef1234567890,Slack,"Salesforce, Inc.",Communication,true,true,50,42,5.2,40,432000000,-3.1,446000000,15428571,-3.1,15928571,1284,7.8,1191,heavy,
g2b3c4d5-e6f7-8901-bcde-f12345678901,b2c3d4e5-f6a7-8901-bcde-f12345678901,GitHub,"GitHub, Inc.","Developer Tools; Engineering",false,true,,28,12,25,216000000,8.4,199440000,7714285,8.4,7116285,892,15.3,774,medium,

Constraints

  • Uses the same validation rules as App Utilization for date ranges, comparison symmetry, and filters.
  • Row order matches the requested sort_by / sort_order.
  • The export is a snapshot of the full filtered dataset at request time. It is not paginated.
  • Export row membership matches the JSON list exactly after filtering.

Error Responses

StatusDescription
400Invalid parameters (bad date format, range exceeds max, mismatched comparison params, unknown filter or sort_by value)
401Authentication required
403Insufficient permissions for this client
404Client not found
500Server error