Update an existing domain for an install
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.wpengineapi.com/v1/installs/example/domains/example"
payload := strings.NewReader("{ \"primary\": true, \"redirect_to\": \"6977805b-1f65-4a5d-8d36-6fe609a4d9f3\", \"secure_all_urls\": false }")
req, _ := http.NewRequest("PATCH", 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/example';const options = { method: 'PATCH', headers: {Authorization: 'Basic <credentials>', 'Content-Type': 'application/json'}, body: '{"primary":true,"redirect_to":"6977805b-1f65-4a5d-8d36-6fe609a4d9f3","secure_all_urls":false}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.wpengineapi.com/v1/installs/example/domains/example \ --header 'Authorization: Basic <credentials>' \ --header 'Content-Type: application/json' \ --data '{ "primary": true, "redirect_to": "6977805b-1f65-4a5d-8d36-6fe609a4d9f3", "secure_all_urls": false }'Updates an existing domain for an install. Cannot set a duplicate, wildcard, or redirected domain as the primary. For domain verification, see the Adding and Verifying Domains guide.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The install ID
ID of domain
Request Body
Section titled “Request Body ”Properties
- primary - optional - Boolean value to make the domain primary on the given install
- redirect_to - optional - The UUID of another Domain record, or “nil” to remove an existing redirect.
- secure_all_urls - optional - Boolean value to force all URLs to use HTTPS
object
Example
trueExample
6977805b-1f65-4a5d-8d36-6fe609a4d9f3Example
falseResponses
Section titled “ Responses ”Updated
Domain will be updated, 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 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"}Not found
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": "Not Found"}Too many requests
Service unavailable