Skip to main content

App Utilization Export

GET /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
granularitystringYes-Aggregation granularity: daily, weekly, monthly, quarterly. Determines how avg_time_ms_per_day is computed.
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 time per day in milliseconds
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 time per day in milliseconds; blank when no comparison period
session_countintegerCurrent-period session count
session_count_change_pctnumberPercent change vs comparison period; blank when no comparison period
session_count_compare_valueintegerComparison-period session count; 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?granularity=monthly&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.

Error Responses

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