Add a new domain or redirect to an existing install
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.wpengineapi.com/v1/installs/example/domains"
payload := strings.NewReader("{ \"name\": \"example.com\", \"primary\": true }")
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/installs/example/domains';const options = { method: 'POST', headers: {Authorization: 'Basic <credentials>', 'Content-Type': 'application/json'}, body: '{"name":"example.com","primary":true}'};
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/installs/example/domains \ --header 'Authorization: Basic <credentials>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example.com", "primary": true }'Adds a domain or redirect to a specific install and optionally sets it as the primary domain. For domain verification, see the Adding and Verifying Domains guide.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”ID of install
Request Body
Section titled “Request Body ”Properties
- name - required - The name of the new domain
- primary - optional - Sets the domain as the primary domain on the install
- redirect_to - optional - ID of a domain to create a redirect to
object
Example
{ "name": "example.com", "primary": true}Responses
Section titled “ Responses ”Created
Domain will be created, but not serving traffic unless it is verified. Verification status is
provided in the ownership_status field:
- TXT_VERIFIED indicates the domain ownership has been verified.
- TXT_VERIFICATION_PENDING indicates the domain ownership still requires verification using TXT record.
NOTE: To verify the domain, a DNS TXT record must be added to your domain registry using the txt_verification_key
and txt_verification_value fields provided on the newly created domain. After the TXT record is in place, POST to
/installs/{install_id}/domains/{domain_id}/verification to complete verification.
object
The WP Engine network type configured for the domain. Possible values are ‘AN’ (Advanced Network) ‘GES’ (Global Edge Security) and ‘LEGACY’.
Details about the network configuration for the domain.
object
DNS configuration information for the domain.
object
The CNAME value to use to configure a DNS CNAME record for the domain.
IP addresses that can be used to configure a DNS A record for the domain.
object
The status of the network configuration for the domain.
SSL configuration status
object
object
The time when the TXT record was verified
The domain that the TXT record was verified for
The TXT record verification key. Null if the domain is already verified.
The TXT record verification value. Null if the domain is already verified.
Ownership verification status of the domain.
- TXT_VERIFIED indicates the domain ownership has been verified.
- TXT_VERIFICATION_PENDING indicates the domain ownership still requires verification using TXT record.
NOTE: To verify the domain, a DNS TXT record must be added to your domain registry using the txt_verification_key
and txt_verification_value fields provided with the domain. After the TXT record is in place, POST to
/installs/{install_id}/domains/{domain_id}/verification to complete verification.
Example
{ "name": "torquemag.io", "duplicate": true, "primary": true, "id": "e41fa98f-ea80-4654-b229-a9b765d0863a", "network_type": "AN", "network_details": { "dns_config_info": { "cname": "wp.wpenginepowered.com", "a_records": [ "127.0.0.1" ] }, "network_info": { "status": "ACTIVE", "ssl": { "status": "active" } } }, "redirects_to": [ { "id": "e41fa98f-ea80-4006-b229-a9b765d0863a", "name": "redirect.com" } ], "secure_all_urls": false, "txt_verified_time": "2026-04-20T16:00:00.007Z", "txt_verified_domain": "example.com", "txt_verification_key": "_wpe_verification", "ownership_status": "TXT_VERIFIED"}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