Cloud endpoints (Admin API)
54 FeatherPanel Admin API endpoints from admin/cloud.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/cloud.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/cloud/credentials
Retrieve FeatherCloud access credentials Fetch both the panel-issued and FeatherCloud-issued keypairs for integrations.
Response data: FeatherCloudCredentials
Response data field | Type | Description |
|---|---|---|
panel_credentials | FeatherCloudCredentialPair | |
cloud_credentials | FeatherCloudCredentialPair |
curl -X GET "$PANEL_URL/api/admin/cloud/credentials" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:cloud:credentials:retrieved
Responses: 200 Credentials fetched successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions
PUT/api/admin/cloud/credentials/panel
Store panel-issued credentials Save or update the panel-side keypair that FeatherCloud uses when authenticating against the panel.
Response data: FeatherCloudCredentials
| Body field | Type | Required | Description |
|---|---|---|---|
public_key | string | yes | |
private_key | string | yes |
Response data field | Type | Description |
|---|---|---|
panel_credentials | FeatherCloudCredentialPair | |
cloud_credentials | FeatherCloudCredentialPair |
curl -X PUT "$PANEL_URL/api/admin/cloud/credentials/panel" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"public_key":"","private_key":""}'Plugin events: featherpanel:admin:cloud:panel:credentials:stored
Responses: 200 Panel credentials saved successfully · 400 Invalid payload · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Failed to store panel credentials
PUT/api/admin/cloud/credentials/cloud
Store FeatherCloud-issued credentials Save the keypair that FeatherCloud presents back to the panel for authenticated callbacks.
Response data: FeatherCloudCredentials
| Body field | Type | Required | Description |
|---|---|---|---|
public_key | string | yes | |
private_key | string | yes |
Response data field | Type | Description |
|---|---|---|
panel_credentials | FeatherCloudCredentialPair | |
cloud_credentials | FeatherCloudCredentialPair |
curl -X PUT "$PANEL_URL/api/admin/cloud/credentials/cloud" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"public_key":"","private_key":""}'Plugin events: featherpanel:admin:cloud:cloud:credentials:stored
Responses: 200 FeatherCloud credentials saved successfully · 400 Invalid payload · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Failed to store FeatherCloud credentials
POST/api/admin/cloud/credentials/rotate
Rotate FeatherCloud access credentials Generate a new panel-issued public/private keypair used by FeatherCloud integrations.
Response data: FeatherCloudCredentials
Response data field | Type | Description |
|---|---|---|
panel_credentials | FeatherCloudCredentialPair | |
cloud_credentials | FeatherCloudCredentialPair |
curl -X POST "$PANEL_URL/api/admin/cloud/credentials/rotate" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:cloud:credentials:rotated
Responses: 200 Credentials rotated successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Failed to rotate credentials
GET/api/admin/cloud/oauth2/link
Get FeatherCloud OAuth2 link URL Generate the OAuth2 link URL for connecting this panel to FeatherCloud. This URL includes all necessary panel information and credentials.
Response data field | Type | Description |
|---|---|---|
oauth2_url | string | The OAuth2 URL to redirect to |
curl -X GET "$PANEL_URL/api/admin/cloud/oauth2/link" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 OAuth2 link URL generated successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Failed to generate OAuth2 URL
POST/api/admin/cloud/oauth2/callback
Save FeatherCloud OAuth2 callback credentials Save the cloud_api_key and cloud_api_secret received from FeatherCloud OAuth2 callback. These credentials are used by the panel to access FeatherCloud services.
| Body field | Type | Required | Description |
|---|---|---|---|
cloud_api_key | string | yes | The cloud API key generated by FeatherCloud |
cloud_api_secret | string | yes | The cloud API secret generated by FeatherCloud |
Response data field | Type | Description |
|---|---|---|
message | string | |
timestamp | string (date-time) |
curl -X POST "$PANEL_URL/api/admin/cloud/oauth2/callback" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"cloud_api_key":"","cloud_api_secret":""}'Plugin events: featherpanel:admin:cloud:cloud:credentials:stored
Responses: 200 Cloud credentials saved successfully · 400 Invalid payload or missing credentials · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Failed to save cloud credentials
POST/api/admin/cloud/disconnect
Disconnect Mythic Cloud link Fully clear Mythic link state (identity keys, access keys, team, authorizer, member map) so the panel acts as never linked.
| Body field | Type | Required | Description |
|---|---|---|---|
wipe_identity_keys | boolean | no | Ignored disconnect always wipes identity keys for a clean unlink |
curl -X POST "$PANEL_URL/api/admin/cloud/disconnect" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"wipe_identity_keys":false}'Responses: 200 Disconnected successfully · 401 Unauthorized · 403 Forbidden
GET/api/admin/cloud/settings
Get Mythic Cloud client settings
curl -X GET "$PANEL_URL/api/admin/cloud/settings" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Settings fetched
PUT/api/admin/cloud/settings
Update Mythic Cloud client settings Configure Panel API base URL, OAuth URL, and module flags. Mythic member ids are resolved automatically never collected from admins.
| Body field | Type | Required | Description |
|---|---|---|---|
api_base_url | string | no | |
oauth_url | string | no | |
marketplace_enabled | boolean | no | |
eggs_enabled | boolean | no | |
pastes_enabled | boolean | no | |
issues_enabled | boolean | no |
curl -X PUT "$PANEL_URL/api/admin/cloud/settings" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"api_base_url":"","oauth_url":"","marketplace_enabled":false,"eggs_enabled":false,"pastes_enabled":false,"issues_enabled":false}'Responses: 200 Settings updated · 400 Invalid payload
POST/api/admin/cloud/members/sync
Sync Mythic team members for email → id mapping
curl -X POST "$PANEL_URL/api/admin/cloud/members/sync" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Members synced
POST/api/admin/cloud/sync
Sync Mythic summary and purchases Pulls /panel/summary and /panel/products using stored FCPUB/FCPRIV and refreshes local cache.
curl -X POST "$PANEL_URL/api/admin/cloud/sync" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/summary
Get Mythic Cloud summary
curl -X GET "$PANEL_URL/api/admin/cloud/data/summary" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/cloud
Get Mythic cloud connection details
curl -X GET "$PANEL_URL/api/admin/cloud/data/cloud" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/credits
Get team credits
curl -X GET "$PANEL_URL/api/admin/cloud/data/credits" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/team
Get team information
curl -X GET "$PANEL_URL/api/admin/cloud/data/team" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/products
Get purchased products
curl -X GET "$PANEL_URL/api/admin/cloud/data/products" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/store
Mythic marketplace store catalog
curl -X GET "$PANEL_URL/api/admin/cloud/data/store" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/store/products/{slug}
Mythic store product detail
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/store/products/{slug}/versions
Store product versions
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/versions" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/store/products/{slug}/reviews
Store product reviews
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/store/products/{slug}/reviews
Create/update store product review
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/store/products/{slug}/questions
Store product questions
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/questions" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/store/products/{slug}/questions
Ask a store product question
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/questions" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/store/products/{slug}/questions/{questionId}/replies
Reply to store product question
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
questionId | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/store/products/$SLUG/questions/$QUESTION_ID/replies" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/products/{slug}/releases
List product releases
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/products/$SLUG/releases" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/products/{slug}/releases/{version}/download
Download product release .fpa
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
version | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/products/$SLUG/releases/$VERSION/download" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/products/{slug}/reviews
List product reviews (public)
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/products/$SLUG/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/products/{slug}/reviews
Create/update product review
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/products/$SLUG/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"DELETE/api/admin/cloud/data/products/{slug}/reviews/{reviewId}
Delete product review
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
reviewId | path | - | yes |
curl -X DELETE "$PANEL_URL/api/admin/cloud/data/products/$SLUG/reviews/$REVIEW_ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/download/{packageName}/{version}
Download premium package
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
packageName | path | - | yes | |
version | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/download/$PACKAGE_NAME/$VERSION" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/eggs
List Mythic egg catalog
curl -X GET "$PANEL_URL/api/admin/cloud/data/eggs" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/eggs/{id}
Get Mythic egg detail
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/eggs/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/eggs/{id}/download
Download Mythic egg JSON
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/eggs/$ID/download" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/eggs/{id}/reviews
List egg reviews (public)
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/eggs/$ID/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/eggs/{id}/reviews
Create/update egg review
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/eggs/$ID/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"DELETE/api/admin/cloud/data/eggs/{id}/reviews
Delete own egg review
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X DELETE "$PANEL_URL/api/admin/cloud/data/eggs/$ID/reviews" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/settings
Get Mythic translations client settings
curl -X GET "$PANEL_URL/api/admin/cloud/translations/settings" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/projects
List Mythic translation projects
curl -X GET "$PANEL_URL/api/admin/cloud/translations/projects" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/projects/{slug}
Get Mythic translation project
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/translations/projects/$SLUG" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/projects/{slug}/locales
List project locales
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/translations/projects/$SLUG/locales" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/projects/{slug}/locales/{locale}
Preview locale JSON
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
locale | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/translations/projects/$SLUG/locales/$LOCALE" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/translations/projects/{slug}/locales/{locale}/download
Download locale JSON file stream
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
locale | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/translations/projects/$SLUG/locales/$LOCALE/download" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/translations/projects/{slug}/locales/{locale}/install
Download Mythic locale and install into panel translations
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | - | yes | |
locale | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/translations/projects/$SLUG/locales/$LOCALE/install" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/pastes
Create Mythic paste/log
curl -X POST "$PANEL_URL/api/admin/cloud/data/pastes" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/pastes/{id}
Get Mythic paste metadata
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/pastes/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/issues/projects
List Mythic issue projects
curl -X GET "$PANEL_URL/api/admin/cloud/data/issues/projects" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/report
Report a FeatherPanel issue (always project featherpanel)
curl -X POST "$PANEL_URL/api/admin/cloud/data/report" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/suggestion
Submit a FeatherPanel feature suggestion (always project featherpanel)
curl -X POST "$PANEL_URL/api/admin/cloud/data/suggestion" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/issues/{project}
List Mythic issues
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/issues/$PROJECT" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/issues/{project}
Create Mythic issue with diagnostics
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/issues/$PROJECT" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"GET/api/admin/cloud/data/issues/{project}/{number}
Get Mythic issue
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | - | yes | |
number | path | - | yes |
curl -X GET "$PANEL_URL/api/admin/cloud/data/issues/$PROJECT/$NUMBER" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"POST/api/admin/cloud/data/issues/{project}/{number}/comments
Comment on Mythic issue
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | - | yes | |
number | path | - | yes |
curl -X POST "$PANEL_URL/api/admin/cloud/data/issues/$PROJECT/$NUMBER/comments" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"