Skip to content
WP EngineDocumentation

Create multiple domains

POST
/installs/{install_id}/domains/bulk
curl --request POST \
--url https://api.wpengineapi.com/v1/installs/294deacc-d8b8-4005-82c4-0727ba8ddde0/domains/bulk \
--header 'Authorization: Basic <credentials>' \
--header 'Content-Type: application/json' \
--data '{ "domains": [ { "name": "example.com" }, { "name": "www.example.com", "redirect_to": "example.com" } ] }'

Adds multiple domains or redirects to the install in a single request.

Limitations & Warnings

  • Between 1 and 20 domains per request.
  • The domains are created, but doesn’t serve traffic until its ownership is verified. Verification status is in the ownership_status field (TXT_VERIFIED or TXT_VERIFICATION_PENDING).
  • To verify a domains, add a DNS TXT record to your domain registry using the txt_verification_key and txt_verification_value fields on the created domain. Then POST to /installs/{install_id}/domains/{domain_id}/verification to complete verification.
install_id
required
string format: uuid

ID of install

Example
294deacc-d8b8-4005-82c4-0727ba8ddde0
Properties
  • domains - required - array of domains to be created, min size: 1, max size: 20
    • items:
      • name - required - The name of the new domain (or redirect)
      • redirect_to - optional - Name of the domain to set redirect to
Media typeapplication/json
object
domains
required
Array<object>
>= 1 items <= 20 items
object
name
required
string
redirect_to
string
Example
{
"domains": [
{
"name": "example.com"
},
{
"name": "www.example.com",
"redirect_to": "example.com"
}
]
}

Returns a list of DomainOrRedirect objects.

Media typeapplication/json
object
domains
required
Array<object>
object
id
required
string format: uuid
name
required
string
duplicate
required
boolean
primary
required
boolean
redirects_to
object
id
string format: uuid
name
string
txt_verified_time

The time when the TXT record was verified

string
nullable
txt_verified_domain

The domain that the TXT record was verified for

string
txt_verification_key

The TXT record verification key. Null if the domain is already verified.

string
nullable
txt_verification_value

The TXT record verification value. Null if the domain is already verified.

string
nullable
ownership_status

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.

string
Allowed values: TXT_VERIFIED TXT_VERIFICATION_PENDING
Example
{
"domains": [
{
"id": "e41fa98f-ea80-4654-b229-a9b765d0863a",
"name": "example.com",
"duplicate": false,
"primary": true,
"redirects_to": {
"id": "e41fa98f-ea80-4006-b229-a9b765d0863a",
"name": "redirect.com"
},
"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

Media typeapplication/json
object
message
required

A message regarding the error that occurred on the server

string
documentation_url

(Optional) A URL where documentation regarding this specific error can be found

string
errors

An array of error objects describing specific errors that arose when servicing the request

Array<object>
object
resource
required

The name of the resource that was being processed when the error occurred

string
field
required

(Optional) The specific field associated with the error

string
type
required

(Optional) A type associated with the error. invalid_value, access_error, value_unavailable

string
code
required

(Optional) A machine code relating to the error that occurred with the field and resource

string
message
required

(Optional) A human-readable message relating to the error that occurred with the field and resource

string
Example
{
"message": "Invalid request.",
"errors": [
{
"resource": "Resource",
"field": "field_name",
"type": "invalid_value",
"code": "invalid",
"message": "The value is invalid."
}
]
}

Authentication Error

Media typeapplication/json
object
message
required

A message regarding the error that occurred on the server

string
documentation_url

(Optional) A URL where documentation regarding this specific error can be found

string
Example
{
"message": "Bad Credentials"
}

Not authorized

Media typeapplication/json
object
message
required

A message regarding the error that occurred on the server

string
documentation_url

(Optional) A URL where documentation regarding this specific error can be found

string
Example
{
"message": "You don't have permission to perform that action"
}

Not found

Media typeapplication/json
object
message
required

A message regarding the error that occurred on the server

string
documentation_url

(Optional) A URL where documentation regarding this specific error can be found

string
Example
{
"message": "Not Found"
}

Too many requests

Internal Server Error

Media typeapplication/json
object
message
required

A message regarding the error that occurred on the server

string
Example
{
"message": "An unexpected error occurred, please try again in a few minutes"
}

Service unavailable