View .md

Analytics endpoints (Admin API)

16 FeatherPanel Admin API endpoints from admin/kpi/analytics.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Last synced from FeatherPanel 15b94e9 on .

On this page

Defined in backend/app/routes/admin/kpi/analytics.php. Authentication used here: Admin. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

Endpoints

GET/api/admin/analytics/overview

Auth: AdminPermission: admin.dashboard.viewRoute name: admin-analytics-overviewController: OverviewController::getOverviewroute source

Get the KPI overview for a date range Growth against the previous period, active users, module counts, node capacity and overcommit, top consumers, tickets and activity. Disabled modules are left out.

ParameterInTypeRequiredDescription
fromquerystring (date)noFirst day (Y-m-d). Defaults to 29 days before "to".
toquerystring (date)noLast day (Y-m-d). Defaults to today.
curl -X GET "$PANEL_URL/api/admin/analytics/overview" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Overview retrieved successfully · 400 Invalid date range · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/overview

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-overviewController: AnalyticsController::getUserOverviewroute source

Get user analytics overview Retrieve comprehensive overview of user statistics including total, active, banned, verified, and 2FA enabled users.

Response data: UserAnalyticsOverview

Response data fieldTypeDescription
totalintegerTotal user count
activeintegerActive users (not banned)
bannedintegerBanned users
verifiedintegerEmail verified users
two_fa_enabledintegerUsers with 2FA enabled
unverifiedintegerUnverified users
percentage_verifiednumber (float)Percentage of verified users
percentage_bannednumber (float)Percentage of banned users
percentage_two_fanumber (float)Percentage of users with 2FA
curl -X GET "$PANEL_URL/api/admin/analytics/users/overview" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 User analytics overview retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/by-role

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-by-roleController: AnalyticsController::getUsersByRoleroute source

Get user distribution by roles Retrieve user distribution across different roles with counts and percentages.

Response data fieldTypeDescription
total_usersintegerTotal number of users
rolesRoleDistribution[]
curl -X GET "$PANEL_URL/api/admin/analytics/users/by-role" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 User role distribution retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/registration-trend

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-registration-trendController: AnalyticsController::getRegistrationTrendroute source

Get user registration trend Retrieve user registration trends over a specified time period.

ParameterInTypeRequiredDescription
daysqueryintegernoNumber of days to look back (default: 30)
Response data fieldTypeDescription
period_daysintegerNumber of days in the period
dataRegistrationTrend[]
total_new_usersintegerTotal new users in the period
curl -X GET "$PANEL_URL/api/admin/analytics/users/registration-trend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Registration trend retrieved successfully · 400 Bad request - Invalid days parameter · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/top-by-servers

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-top-by-serversController: AnalyticsController::getTopUsersByServersroute source

Get top users by server count Retrieve the users with the most servers.

ParameterInTypeRequiredDescription
limitqueryintegernoNumber of top users to retrieve (default: 10)
Response data fieldTypeDescription
limitintegerLimit applied
usersTopUser[]
curl -X GET "$PANEL_URL/api/admin/analytics/users/top-by-servers" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Top users retrieved successfully · 400 Bad request - Invalid limit parameter · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/activity

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-activityController: AnalyticsController::getUserActivityroute source

Get user activity summary Retrieve user activity summary for a specified time period.

ParameterInTypeRequiredDescription
hoursqueryintegernoNumber of hours to look back (default: 24)
Response data fieldTypeDescription
period_hoursintegerNumber of hours in the period
new_usersintegerNew users in the period
active_usersintegerActive users in the period
curl -X GET "$PANEL_URL/api/admin/analytics/users/activity" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 User activity retrieved successfully · 400 Bad request - Invalid hours parameter · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/dashboard

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-dashboardController: AnalyticsController::getDashboardroute source

Get comprehensive user analytics dashboard Retrieve all user analytics data in a single comprehensive dashboard view.

Response data fieldTypeDescription
overviewUserAnalyticsOverview
by_roleobjectUser distribution by role
registration_trend_7dobject7-day registration trend
registration_trend_30dobject30-day registration trend
top_usersobjectTop users by server count
activity_24hobject24-hour activity summary
activity_7dobject7-day activity summary
curl -X GET "$PANEL_URL/api/admin/analytics/users/dashboard" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Analytics dashboard retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/banned

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-bannedController: AnalyticsController::getBannedUsersroute source

Get banned users statistics Retrieve statistics and information about banned users.

ParameterInTypeRequiredDescription
limitqueryintegernoNumber of recent banned users to retrieve (default: 20)
Response data fieldTypeDescription
total_bannedintegerTotal number of banned users
recent_banned_usersobject[]Recently banned users
ban_trend_30dobject[]30-day ban trend
curl -X GET "$PANEL_URL/api/admin/analytics/users/banned" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Banned users statistics retrieved successfully · 400 Bad request - Invalid limit parameter · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/security

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-securityController: AnalyticsController::getSecurityStatsroute source

Get user security statistics Retrieve statistics about user security features (2FA, email verification).

Response data fieldTypeDescription
total_usersintegerTotal number of users
two_fa_enabledintegerUsers with 2FA enabled
email_verifiedintegerUsers with verified email
fully_securedintegerUsers with both 2FA and email verified
not_securedintegerUsers with neither 2FA nor email verified
percentage_two_fanumber (float)Percentage with 2FA
percentage_email_verifiednumber (float)Percentage with verified email
percentage_fully_securednumber (float)Percentage fully secured
percentage_not_securednumber (float)Percentage not secured
curl -X GET "$PANEL_URL/api/admin/analytics/users/security" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Security statistics retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/users/growth

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-users-growthController: AnalyticsController::getGrowthRateroute source

Get user growth rate statistics Retrieve user growth rate statistics comparing recent periods.

Response data fieldTypeDescription
last_7_daysintegerNew users in last 7 days
previous_7_daysintegerNew users in previous 7 days
growth_rate_7dnumber (float)7-day growth rate percentage
last_30_daysintegerNew users in last 30 days
previous_30_daysintegerNew users in previous 30 days
growth_rate_30dnumber (float)30-day growth rate percentage
curl -X GET "$PANEL_URL/api/admin/analytics/users/growth" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Growth rate statistics retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/trend

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-trendController: AnalyticsController::getActivityTrendroute source

Get activity trend over time Retrieve activity trends for a specified time period.

ParameterInTypeRequiredDescription
daysqueryintegernoNumber of days to look back (default: 7)
curl -X GET "$PANEL_URL/api/admin/analytics/activity/trend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Activity trend retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/top

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-topController: AnalyticsController::getTopActivitiesroute source

Get top activities by type Retrieve the most common activity types.

ParameterInTypeRequiredDescription
limitqueryintegernoNumber of top activities to retrieve (default: 10)
curl -X GET "$PANEL_URL/api/admin/analytics/activity/top" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Top activities retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/breakdown

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-breakdownController: AnalyticsController::getActivityBreakdownroute source

Get activity breakdown by type Retrieve activity distribution for pie chart visualization.

curl -X GET "$PANEL_URL/api/admin/analytics/activity/breakdown" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Activity breakdown retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/recent

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-recentController: AnalyticsController::getRecentActivitiesroute source

Get recent activities Retrieve recent user activities with user information.

ParameterInTypeRequiredDescription
limitqueryintegernoNumber of recent activities to retrieve (default: 20)
curl -X GET "$PANEL_URL/api/admin/analytics/activity/recent" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Recent activities retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/stats

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-statsController: AnalyticsController::getActivityStatsroute source

Get activity statistics summary Retrieve overall activity statistics.

curl -X GET "$PANEL_URL/api/admin/analytics/activity/stats" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Activity statistics retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/analytics/activity/hourly

Auth: AdminPermission: admin.users.listRoute name: admin-analytics-activity-hourlyController: AnalyticsController::getHourlyActivityroute source

Get hourly activity distribution Retrieve activity distribution by hour for heatmap visualization.

ParameterInTypeRequiredDescription
daysqueryintegernoNumber of days to look back (default: 7)
curl -X GET "$PANEL_URL/api/admin/analytics/activity/hourly" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Hourly activity retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions