Plugins endpoints (Admin API)
12 FeatherPanel Admin API endpoints from admin/plugins.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/plugins.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/plugins
Get all installed plugins Retrieve a list of all installed plugins with their configuration, status, dependencies, and missing configurations.
Response data field | Type | Description |
|---|---|---|
plugins | object |
curl -X GET "$PANEL_URL/api/admin/plugins" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugins retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error - Failed to fetch plugins
GET/api/admin/plugins/{identifier}/config
Get plugin configuration Retrieve detailed configuration information for a specific plugin including settings and configuration schema.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Response data field | Type | Description |
|---|---|---|
config | PluginInfo | |
plugin | PluginInfo | |
settings | object | Plugin settings key-value pairs |
configSchema | object[] | Plugin configuration schema |
curl -X GET "$PANEL_URL/api/admin/plugins/$IDENTIFIER/config" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugin configuration retrieved successfully · 400 Bad request - Invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to fetch plugin configuration
GET/api/admin/plugins/{identifier}/visibility
Get plugin frontend visibility controls List widgets, sidebar routes, public pages, and UI-pack entries that admins can hide for a plugin.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
curl -X GET "$PANEL_URL/api/admin/plugins/$IDENTIFIER/visibility" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugin visibility controls retrieved successfully · 404 Plugin not found
POST/api/admin/plugins/{identifier}/settings/set
Set plugin setting Set a specific setting value for a plugin. Logs the activity and emits events for tracking.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginSettingUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
key | string | yes | Setting key |
value | string | yes | Setting value |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
key | string | Setting key |
value | string | Setting value |
curl -X POST "$PANEL_URL/api/admin/plugins/$IDENTIFIER/settings/set" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"key":"","value":""}'Plugin events: plugins:settings:update
Responses: 200 Plugin setting updated successfully · 400 Bad request - Invalid JSON, missing key/value, invalid plugin identifier, or a value that fails the conf.yml required/validation rules (PLUGIN_SETTING_INVALID) · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to update setting
POST/api/admin/plugins/{identifier}/settings/remove
Remove plugin setting Remove a specific setting from a plugin. Logs the activity and emits events for tracking.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginSettingRemove (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
key | string | yes | Setting key to remove |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
key | string | Removed setting key |
curl -X POST "$PANEL_URL/api/admin/plugins/$IDENTIFIER/settings/remove" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"key":""}'Plugin events: plugins:settings:delete
Responses: 200 Plugin setting removed successfully · 400 Bad request - Invalid JSON, missing key, or invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to remove setting
POST/api/admin/plugins/{identifier}/spell-restrictions
Set plugin spell restrictions for server sidebar Configure which server spells (server types) a plugin's sidebar items should be shown on. If empty, plugin shows on all server types. If set, plugin only shows on specified spell IDs.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
| Body field | Type | Required | Description |
|---|---|---|---|
allowedOnlyOnSpells | integer[] | no | Array of spell IDs where this plugin should be shown. Empty array means show on all spells. |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
allowedOnlyOnSpells | integer[] | Updated spell IDs |
curl -X POST "$PANEL_URL/api/admin/plugins/$IDENTIFIER/spell-restrictions" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"allowedOnlyOnSpells":[]}'Responses: 200 Spell restrictions updated successfully · 400 Bad request - Invalid JSON or invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to update spell restrictions
POST/api/admin/plugins/{identifier}/uninstall
Uninstall addon Completely remove an addon from the system including its files, public assets, and database migrations. Calls the plugin uninstall hook if available.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Addon identifier to uninstall |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X POST "$PANEL_URL/api/admin/plugins/$IDENTIFIER/uninstall" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Addon uninstalled successfully · 400 Bad request - Invalid addon identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Addon not found · 500 Internal server error - Failed to uninstall addon
GET/api/admin/plugins/{identifier}/export
Export addon Export an installed addon as a password-protected .fpa file for backup or distribution purposes.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Addon identifier to export |
curl -X GET "$PANEL_URL/api/admin/plugins/$IDENTIFIER/export" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Addon exported successfully · 400 Bad request - Invalid addon identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Addon not found · 500 Internal server error - Failed to export addon
POST/api/admin/plugins/upload/install
Install addon from uploaded file Upload and install an addon from a .fpa file. Extracts the password-protected archive and installs the addon.
| Body field | Type | Required | Description |
|---|---|---|---|
file | string (binary) | yes | Addon .fpa file to upload |
Response data field | Type | Description |
|---|---|---|
identifier | string | Installed addon identifier |
curl -X POST "$PANEL_URL/api/admin/plugins/upload/install" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-F "file=@./file"Responses: 201 Addon installed successfully · 400 Bad request - No file uploaded, file upload error, or invalid file type · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 409 Conflict - Addon already installed · 422 Unprocessable Entity - Failed to extract addon package or migrations failed · 500 Internal server error - Failed to install addon
POST/api/admin/plugins/upload/install-url
Install addon from URL Download and install an addon from a remote URL. Downloads the file and extracts the password-protected archive.
Request body: UrlInstall (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
url | string (uri) | yes | URL to download addon from |
Response data field | Type | Description |
|---|---|---|
identifier | string | Installed addon identifier |
curl -X POST "$PANEL_URL/api/admin/plugins/upload/install-url" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"url":""}'Responses: 201 Addon installed successfully · 400 Bad request - Invalid URL format · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 409 Conflict - Addon already installed · 422 Unprocessable Entity - Failed to extract addon package or migrations failed · 500 Internal server error - Failed to install addon or download file from URL
POST/api/admin/plugins/{identifier}/resync-symlinks
Resync plugin symlinks Recreate symlinks for plugin public assets and frontend components without reinstalling the plugin. Useful when symlinks are broken or missing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier to resync symlinks for |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
public_assets | boolean | Whether public assets symlink was created |
frontend_components | boolean | Whether frontend components symlink was created |
curl -X POST "$PANEL_URL/api/admin/plugins/$IDENTIFIER/resync-symlinks" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Symlinks resynced successfully · 400 Bad request - Invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to resync symlinks
GET/api/admin/plugins/previously-installed
Get previously installed plugins Retrieve a list of plugins that were previously installed (including uninstalled ones) to help users restore them after FeatherPanel updates.
Response data field | Type | Description |
|---|---|---|
plugins | object[] |
curl -X GET "$PANEL_URL/api/admin/plugins/previously-installed" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Previously installed plugins retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error