File Manager
Upload file
Uploading a file is a two-step flow.
Step 1 - Get a signed URL
GET this endpoint to receive a short-lived signed URL (valid ~5 minutes) that points at the node's daemon, not the panel. The returned attributes.url already contains the auth token, so the upload in step 2 does not need an Authorization header.
Step 2 - POST the file(s) to that URL
Send the file(s) to the signed URL as a multipart/form-data request.
| Property | In | Required | Description |
|---|---|---|---|
files | form-data | yes | The file to upload. Repeat the field (files) to upload several files in one request. |
directory | query | no | Destination folder relative to the server root, e.g. /plugins. Defaults to the server root. |
token | query | yes | Auth token. Already included in the signed URL returned by step 1; do not add it yourself. |
A successful upload returns 200 with an empty body. Do not send an Authorization header to the daemon URL.
# Step 1: get the signed URL from the panel
URL=$(curl -s "{panel}/api/client/servers/1a7ce997/files/upload" \
-H "Authorization: Bearer ptlc_xxx" -H "Accept: application/json" | jq -r .attributes.url)
# Step 2: POST the file(s) to the daemon (no auth header needed)
curl -X POST "$URL&directory=/plugins" \
-F "files=@./myplugin.jar" \
-F "files=@./config.yml"GET
/api/client/servers/{server}/files/uploadAuthorization
ClientToken AuthorizationBearer <token>
Client API key (generated at /account/api)
In: header
Path Parameters
server*string
Server identifier (short 8-character ID)
Response Body
application/json
curl -X GET "https://pterodactyl.file.properties/api/client/servers/1a7ce997/files/upload" \ -H "Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Accept: application/json"{
"object": "signed_url",
"attributes": {
"url": "https://pterodactyl.file.properties:8080/upload/file?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjdkYzAxNzVjODU4MTE5MDRlMjJjNTcxNjBhMjkwMjgwZGFjMDMzM2I2ZmJhMTE3YTI4YjdhMDM5Y2U1OTg0YzcifQ.eyJpc3MiOiJodHRwczpcL1wvcHRlcm9kYWN0eWwuZmlsZS5wcm9wZXJ0aWVzIiwiYXVkIjoiaHR0cHM6XC9cL3B0ZXJvZGFjdHlsLmZpbGUucHJvcGVydGllczo4MDgwIiwianRpIjoiN2RjMDE3NWM4NTgxMTkwNGUyMmM1NzE2MGEyOTAyODBkYWMwMzMzYjZmYmExMTdhMjhiN2EwMzljZTU5ODRjNyIsImlhdCI6MTU5ODIyMTMyMSwibmJmIjoxNTk4MjIxMDIxLCJleHAiOjE1OTgyMjIyMjEsInNlcnZlcl91dWlkIjoiMWE3Y2U5OTctMjU5Yi00NTJlLThiNGUtY2VjYzQ2NDE0MmNhIiwidW5pcXVlX2lkIjoiNmM2OFdkSkJTVzg0RlBsUiJ9.GJ5681K9ehhPCcXevyxw-RO1jhv4UWg5T8b_P7r6s8Q"
}
}