Skip to main content

Endpoint

Updates the running configuration for the Wings instance. This endpoint allows the Pterodactyl Panel to push configuration updates to Wings without requiring a restart. The new configuration is validated, written to disk, and applied to the running instance.

Authentication

This endpoint requires authentication using a Bearer token in the Authorization header.

Request Body

The request body should contain a complete Wings configuration object in JSON format. This follows the same structure as the config.yml file.
boolean
Enable debug mode for verbose logging
string
default:"Pterodactyl"
Application name for Wings
string
required
Unique identifier for this node in the Panel
string
required
Token identifier for authentication
string
required
Authentication token for API requests
object
required
API server configuration
object
required
System configuration settings
object
required
Docker configuration settings (see Docker Settings for details)
string
required
Panel URL for API communication
object
Remote query configuration
array
List of allowed host paths for server mounts
array
Additional CORS allowed origins
boolean
default:"false"
When enabled, configuration updates from the Panel are ignored

Response

boolean
Indicates whether the configuration update was applied. Returns false if ignore_panel_config_updates is enabled in the current configuration.

Behavior

Configuration Update Flow

  1. Validation: The incoming configuration is validated and merged with defaults
  2. SSL Certificate Handling: If SSL certificates use Let’s Encrypt default paths (/etc/letsencrypt/live/), the existing certificate paths are preserved to prevent overwriting manually configured locations
  3. Disk Write: The configuration is written to disk at the config file location
  4. Runtime Update: If the write succeeds, the global configuration state is updated
  5. Response: Returns whether the update was applied

Ignored Updates

When ignore_panel_config_updates is set to true in the Wings configuration file, this endpoint will:
  • Return {"applied": false}
  • Not write any changes to disk
  • Not update the runtime configuration
This is useful for Wings instances that need to maintain custom configurations independent of Panel updates.
Configuration updates are applied immediately to the running Wings instance without requiring a restart. However, some changes (like port bindings) may not take full effect until Wings is restarted.

Example Requests

Example Responses

Error Responses

SSL Certificate Handling

The endpoint includes special logic for SSL certificates to prevent accidental overwrites:
If you need to update SSL certificate paths, ensure they don’t use the default Let’s Encrypt location pattern, or manually update the configuration file.

Use Cases

Automated Panel Updates

The Pterodactyl Panel automatically calls this endpoint when node configuration is updated:

Manual Configuration Sync

You can manually sync configuration from your Panel to Wings:

Implementation Details

The configuration update process is implemented in router/router_system.go:122-158:
  1. Check ignore flag: If IgnorePanelConfigUpdates is true, return {"applied": false} immediately
  2. Parse JSON: Bind the incoming JSON to a Configuration struct
  3. Preserve SSL paths: Check for Let’s Encrypt default paths and preserve existing custom paths
  4. Write to disk: Call config.WriteToDisk() to persist the new configuration
  5. Update runtime: Call config.Set() to apply changes to the running instance
  6. Return result: Return {"applied": true} on success
The configuration file location is determined by the --config flag used when starting Wings. By default, this is /etc/pterodactyl/config.yml.

Security Considerations

This endpoint can modify critical Wings configuration. Ensure your authentication token is kept secure and only accessible by the Pterodactyl Panel.
  • The endpoint requires a valid Bearer token matching the configured AuthenticationToken
  • Configuration changes are written to disk with restricted file permissions
  • Invalid configurations will cause the request to fail without modifying the existing config
  • SSL certificate paths are validated and protected from accidental overwrites