curl --request GET \
--url https://app.sandywp.com/api/app/sites/{id}/php-config \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sandywp.com/api/app/sites/{id}/php-config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sandywp.com/api/app/sites/{id}/php-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.sandywp.com/api/app/sites/{id}/php-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sandywp.com/api/app/sites/{id}/php-config"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.sandywp.com/api/app/sites/{id}/php-config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sandywp.com/api/app/sites/{id}/php-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"phpConfig": {
"maxExecutionTime": 155,
"maxInputTime": 155,
"maxInputVars": 5050,
"memoryLimitMb": 288,
"allowUrlFopen": true,
"postMaxSizeMb": 2564,
"uploadMaxFilesizeMb": 2561,
"sessionGcMaxlifetime": 43350,
"outputBufferingBytes": 32768
},
"defaults": {
"maxExecutionTime": 155,
"maxInputTime": 155,
"maxInputVars": 5050,
"memoryLimitMb": 288,
"allowUrlFopen": true,
"postMaxSizeMb": 2564,
"uploadMaxFilesizeMb": 2561,
"sessionGcMaxlifetime": 43350,
"outputBufferingBytes": 32768
},
"limits": {
"memoryLimitMaxMb": 123
},
"pending": true,
"lastJob": {
"id": "<string>",
"status": "pending",
"lastError": "<string>"
},
"phpVersion": "<string>",
"phpVersionOptions": [
"<string>"
],
"versionSwitch": {
"pending": true,
"lastJob": {
"id": "<string>",
"status": "pending",
"lastError": "<string>",
"phpVersion": "<string>"
}
}
}{
"error": {
"code": "auth_required",
"message": "A logged-in user is required.",
"details": {}
}
}{
"error": {
"code": "capability_required",
"message": "Your role does not allow this.",
"details": {
"capability": "internals"
}
}
}{
"error": {
"code": "site_not_found",
"message": "Site not found.",
"details": {}
}
}Get PHP ini configuration
Returns the sandbox’s current PHP ini values, defaults, memory-limit ceiling, PHP version, and any pending change.
curl --request GET \
--url https://app.sandywp.com/api/app/sites/{id}/php-config \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sandywp.com/api/app/sites/{id}/php-config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sandywp.com/api/app/sites/{id}/php-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.sandywp.com/api/app/sites/{id}/php-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sandywp.com/api/app/sites/{id}/php-config"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.sandywp.com/api/app/sites/{id}/php-config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sandywp.com/api/app/sites/{id}/php-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"phpConfig": {
"maxExecutionTime": 155,
"maxInputTime": 155,
"maxInputVars": 5050,
"memoryLimitMb": 288,
"allowUrlFopen": true,
"postMaxSizeMb": 2564,
"uploadMaxFilesizeMb": 2561,
"sessionGcMaxlifetime": 43350,
"outputBufferingBytes": 32768
},
"defaults": {
"maxExecutionTime": 155,
"maxInputTime": 155,
"maxInputVars": 5050,
"memoryLimitMb": 288,
"allowUrlFopen": true,
"postMaxSizeMb": 2564,
"uploadMaxFilesizeMb": 2561,
"sessionGcMaxlifetime": 43350,
"outputBufferingBytes": 32768
},
"limits": {
"memoryLimitMaxMb": 123
},
"pending": true,
"lastJob": {
"id": "<string>",
"status": "pending",
"lastError": "<string>"
},
"phpVersion": "<string>",
"phpVersionOptions": [
"<string>"
],
"versionSwitch": {
"pending": true,
"lastJob": {
"id": "<string>",
"status": "pending",
"lastError": "<string>",
"phpVersion": "<string>"
}
}
}{
"error": {
"code": "auth_required",
"message": "A logged-in user is required.",
"details": {}
}
}{
"error": {
"code": "capability_required",
"message": "Your role does not allow this.",
"details": {
"capability": "internals"
}
}
}{
"error": {
"code": "site_not_found",
"message": "Site not found.",
"details": {}
}
}Authorizations
Personal API token, sent as Authorization: Bearer <SANDYWP_API_KEY>. Obtain one from the dashboard account menu (API keys), sandywp auth login, or POST /api/account/tokens. A missing or invalid token returns 401 auth_required. Scoped OAuth tokens are limited to the Imports family and GET /api/account/me; see the top-level conventions.
Headers
Selects which of the caller's workspaces to act in, for accounts belonging to more than one (legacy alias: X-SandyWP-Organization). Defaults to the caller's own personal workspace when omitted. Every id in this API (sandboxes, Templates, repositories) is scoped to a single workspace, so this header changes which set of resources is visible.
Path Parameters
The sandbox id.
Response
The sandbox's PHP configuration status.
The response of GET /api/app/sites/{id}/php-config.
A sandbox's PHP ini overrides. All fields are required both when read back from GET .../php-config and when written via PUT .../php-config (the PUT endpoint replaces the whole object — see that operation's description for why this differs from what the hand-written API guide says).
Show child attributes
Show child attributes
A sandbox's PHP ini overrides. All fields are required both when read back from GET .../php-config and when written via PUT .../php-config (the PUT endpoint replaces the whole object — see that operation's description for why this differs from what the hand-written API guide says).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
True while an apply_php_config job is queued/running for this sandbox.
A minimal pointer to the most recent job of a given kind, or null if none has ever run.
Show child attributes
Show child attributes
The sandbox's current PHP runtime version.
The PHP versions this server supports switching to. The live value is authoritative when the supported runtime list changes.
Show child attributes
Show child attributes

