Create a new site
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.wpengineapi.com/v1/sites"
payload := strings.NewReader("{ \"name\": \"Torque Magazine\", \"account_id\": \"eeda3227-9a39-46ae-9e14-20958bb4e6c9\" }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <credentials>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://api.wpengineapi.com/v1/sites';const options = { method: 'POST', headers: {Authorization: 'Basic <credentials>', 'Content-Type': 'application/json'}, body: '{"name":"Torque Magazine","account_id":"eeda3227-9a39-46ae-9e14-20958bb4e6c9"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.wpengineapi.com/v1/sites \ --header 'Authorization: Basic <credentials>' \ --header 'Content-Type: application/json' \ --data '{ "name": "Torque Magazine", "account_id": "eeda3227-9a39-46ae-9e14-20958bb4e6c9" }'Authorizations
Section titled “Authorizations ”Request Body
Section titled “Request Body ”Properties
- name - required - The name of the site
- account_id - required - The ID of the account that the site will belong to
object
Example
Torque MagazineThe account ID
Example
eeda3227-9a39-46ae-9e14-20958bb4e6c9Responses
Section titled “ Responses ”Created
object
object
The account ID
The date and time the site was created in UTC
Whether the site is a sandbox site
Whether the site is transferable
object
Returns the CNAME of the install
The PHP version used to run WordPress
Example
{ "id": "28c78b6d-c2da-4f09-85f5-1ad588089b2d", "name": "Torque Magazine", "account": { "id": "eeda3227-9a39-46ae-9e14-20958bb4e6c9" }, "group_name": "Overdue", "tags": [ "tag1", "tag2", "tag3" ], "created_at": "2025-07-10T09:59:58.684Z", "sandbox": false, "transferable": false, "installs": [ { "id": "294deacc-d8b8-4005-82c4-0727ba8ddde0", "name": "torquemag", "environment": "production", "cname": "mywebsite.wpengine.com", "php_version": "7.3", "is_multisite": false } ]}Bad Request
object
A message regarding the error that occurred on the server
(Optional) A URL where documentation regarding this specific error can be found
An array of error objects describing specific errors that arose when servicing the request
object
The name of the resource that was being processed when the error occurred
(Optional) The specific field associated with the error
(Optional) A type associated with the error. invalid_value, access_error, value_unavailable
(Optional) A machine code relating to the error that occurred with the field and resource
(Optional) A human-readable message relating to the error that occurred with the field and resource
Example
{ "message": "Invalid Site: Name cannot be empty.", "errors": [ { "resource": "Site", "field": "name", "type": "invalid_value", "code": "too_long", "message": "Name is too long (maximum is 40 characters)" } ]}Authentication Error
object
A message regarding the error that occurred on the server
(Optional) A URL where documentation regarding this specific error can be found
Example
{ "message": "Bad Credentials"}Not authorized
object
A message regarding the error that occurred on the server
(Optional) A URL where documentation regarding this specific error can be found
Example
{ "message": "You don't have permission to perform that action"}Too many requests
Service unavailable