WP Engine Install API
The Install API from WP Engine — 3 operation(s) for install.
The Install API from WP Engine — 3 operation(s) for install.
swagger: '2.0'
info:
description: 'The API described in this document is subject to change.
'
version: 1.17.0
title: WP Engine Hosting Platform Account Install API
termsOfService: https://wpengine.com/legal/terms-of-service/
host: api.wpengineapi.com
basePath: /v1
schemes:
- https
tags:
- name: Install
paths:
/installs:
get:
tags:
- Install
summary: List your WordPress installations
description: ''
operationId: listInstalls
produces:
- application/json
parameters:
- $ref: '#/parameters/authorization'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/offsetParam'
- $ref: '#/parameters/account_id'
responses:
'200':
description: List of WordPress installations
schema:
type: object
properties:
previous:
$ref: '#/definitions/PreviousPage'
next:
$ref: '#/definitions/NextPage'
count:
$ref: '#/definitions/ResultsCount'
results:
type: array
items:
$ref: '#/definitions/Installation'
'400':
description: Bad Request
schema:
$ref: '#/definitions/BadRequestErrorResponse'
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'429':
$ref: '#/definitions/TooManyRequestsOperation'
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/installs
responses:
'200':
statusCode: '200'
'400':
statusCode: '400'
'401':
statusCode: '401'
'429':
statusCode: '429'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
integration.request.querystring.offset: method.request.querystring.offset
integration.request.querystring.limit: method.request.querystring.limit
integration.request.querystring.account_id: method.request.querystring.account_id
passthroughBehavior: when_no_match
httpMethod: GET
type: http
post:
tags:
- Install
summary: Create a new WordPress installation
description: ''
operationId: createInstall
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: '#/parameters/authorization'
- in: body
name: body
description: '##### Properties
* name - **required** - The name of the install
* account_id - **required** - The ID of the account that the install will belong to
* site_id - **required for accounts with sites enabled** - The ID of the site that the install will belong to
* environment - **required for accounts with sites enabled** - The site environment that the install will fill
'
required: true
schema:
type: object
required:
- name
- account_id
properties:
name:
type: string
description: The name of the install
account_id:
type: string
description: The ID of the account that the install will belong to
format: uuid
site_id:
type: string
description: The ID of the site that the install will belong to
format: uuid
x-nullable: true
environment:
type: string
description: The site environment that the install will fill
x-nullable: true
enum:
- production
- staging
- development
- null
example:
name: torquemag
account_id: eeda3227-9a39-46ae-9e14-20958bb4e6c9
site_id: 28c78b6d-c2da-4f09-85f5-1ad588089b2d
environment: staging
responses:
'201':
description: Created
schema:
$ref: '#/definitions/Installation'
'400':
description: Bad Request
schema:
$ref: '#/definitions/BadRequestErrorResponse'
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'403':
description: Not authorized
schema:
$ref: '#/definitions/ForbiddenErrorResponse'
'429':
description: Too many requests
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/installs
responses:
'201':
statusCode: '201'
'400':
statusCode: '400'
'401':
statusCode: '401'
'403':
statusCode: '403'
'429':
statusCode: '429'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
passthroughBehavior: when_no_match
httpMethod: POST
type: http
/installs/{install_id}:
get:
tags:
- Install
summary: Get an install by ID
description: Returns a single Install
operationId: getInstall
produces:
- application/json
parameters:
- $ref: '#/parameters/authorization'
- name: install_id
in: path
format: uuid
description: ID of install
required: true
type: string
x-example: 294deacc-d8b8-4005-82c4-0727ba8ddde0
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Installation'
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'404':
description: Not found
schema:
$ref: '#/definitions/NotFoundErrorResponse'
'429':
$ref: '#/definitions/TooManyRequestsOperation'
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/installs/{install_id}
responses:
'200':
statusCode: '200'
'401':
statusCode: '401'
'404':
statusCode: '404'
'429':
statusCode: '429'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
integration.request.path.install_id: method.request.path.install_id
passthroughBehavior: when_no_match
httpMethod: GET
type: http
delete:
tags:
- Install
summary: Delete an install by ID
description: This will delete the install, The delete is permanent and there is no confirmation prompt.
operationId: deleteInstall
parameters:
- $ref: '#/parameters/authorization'
- name: install_id
in: path
format: uuid
description: ID of install
required: true
type: string
x-example: 294deacc-d8b8-4005-82c4-0727ba8ddde0
responses:
'204':
description: Deleted
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'403':
description: Not authorized
schema:
$ref: '#/definitions/ForbiddenErrorResponse'
'404':
description: Not found
schema:
$ref: '#/definitions/NotFoundErrorResponse'
'429':
$ref: '#/definitions/TooManyRequestsOperation'
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/installs/{install_id}
responses:
'204':
statusCode: '204'
'401':
statusCode: '401'
'403':
statusCode: '403'
'404':
statusCode: '404'
'429':
statusCode: '429'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
integration.request.path.install_id: method.request.path.install_id
passthroughBehavior: when_no_match
httpMethod: DELETE
type: http
patch:
tags:
- Install
summary: Update a WordPress installation
description: ''
operationId: updateInstall
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: '#/parameters/authorization'
- name: install_id
in: path
description: The install ID
required: true
type: string
format: uuid
x-example: 294deacc-d8b8-4005-82c4-0727ba8ddde0
- in: body
name: body
description: '##### Properties
* site_id - **optional** - The ID of the site that the install will belong to *(For accounts with sites enabled)*
* environment - **optional** - The site environment that the install will fill *(For accounts with sites enabled)*
'
required: true
schema:
type: object
properties:
site_id:
type: string
description: The site ID
format: uuid
example: 28c78b6d-c2da-4f09-85f5-1ad588089b2d
environment:
type: string
x-nullable: true
enum:
- production
- staging
- development
- null
example:
site_id: 28c78b6d-c2da-4f09-85f5-1ad588089b2d
environment: development
responses:
'200':
description: Updated
schema:
$ref: '#/definitions/Installation'
'400':
description: Bad Request
schema:
$ref: '#/definitions/BadRequestErrorResponse'
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'403':
description: Not authorized
schema:
$ref: '#/definitions/ForbiddenErrorResponse'
'429':
$ref: '#/definitions/TooManyRequestsOperation'
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/installs/{install_id}
responses:
'200':
statusCode: '200'
'400':
statusCode: '400'
'401':
statusCode: '401'
'403':
statusCode: '403'
'429':
statusCode: '429'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
integration.request.path.install_id: method.request.path.install_id
passthroughBehavior: when_no_match
httpMethod: PATCH
type: http
/install_copy:
post:
tags:
- Install
summary: Copy the full file system and database from one WordPress installation to another
description: ''
operationId: copyInstall
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: '#/parameters/authorization'
- in: body
name: body
description: "##### Properties\n* source_environment_id - **required** - The ID of the environment to copy from. Must be on the same account as destination_environment_id\n* destination_environment_id - **required** - The ID of the environment to copy to. The contents of this environment will be overwritten. Must be on the same account as source_environment_id\n* notification_emails - **optional** - An array of email addresses to notify when the copy is complete\n* custom_options - **optional** - Optional fields to customize how the install should be copied\n * include_files - **optional** - Should files be copied? Boolean where true means include files in the copy. Default is true.\n * include_db - **optional** - Should the database be copied? Boolean where true means include the database in the copy. Default is true.\n * db_tables - **optional** - A list of tables to include in the copy. If unspecified, the full database will be copied. Cannot specifiy tables if `include_db` is `false`.\n"
required: true
schema:
type: object
required:
- source_environment_id
- destination_environment_id
properties:
source_environment_id:
type: string
description: The ID of the environment to copy from
format: uuid
example: 8f14e45f-ceea-4b5b-9f6d-8f14e45fceea
destination_environment_id:
type: string
description: The ID of the environment to copy to
format: uuid
example: c9f0f895-fb98-4f3c-9f0f-c9f0f895fb98
notification_emails:
type: array
description: An array of email addresses to notify when the copy is complete
items:
type: string
custom_options:
type: object
description: Optional fields to customize how the install should be copied
properties:
include_files:
type: boolean
description: Should files be included in the copy. True means include files. Default is true.
include_db:
type: boolean
description: Should the database be included in the copy. True means include the database. Default is true.
db_tables:
type: array
description: A list of tables to include in the copy. If unspecified, the full database will be copied. Cannot specifiy tables if `include_db` is `false`.
example:
- wp_posts
- wp_comments
items:
type: string
responses:
'202':
description: Accepted
'400':
description: Bad Request
schema:
$ref: '#/definitions/BadRequestErrorResponse'
'401':
description: Authentication Error
schema:
$ref: '#/definitions/AuthenticationErrorResponse'
'403':
description: Not authorized
schema:
$ref: '#/definitions/ForbiddenErrorResponse'
'404':
description: Not found
schema:
$ref: '#/definitions/NotFoundErrorResponse'
'429':
description: Too many requests
schema:
$ref: '#/definitions/TooManyRequestsOperation'
'500':
description: Internal server error
schema:
$ref: '#/definitions/InternalServerErrorResponse'
'502':
$ref: '#/definitions/BadGatewayOperation'
'503':
$ref: '#/definitions/ServiceUnavailableOperation'
security:
- basicAuth: []
x-amazon-apigateway-integration:
uri: https://my.wpengine.com/capi/v1/install_copy
responses:
'202':
statusCode: '202'
'400':
statusCode: '400'
'401':
statusCode: '401'
'403':
statusCode: '403'
'404':
statusCode: '404'
'429':
statusCode: '429'
'500':
statusCode: '500'
'502':
statusCode: '502'
'503':
statusCode: '503'
default:
statusCode: '500'
requestParameters:
integration.request.header.X-Request-ID: context.requestId
integration.request.header.sourceIp: context.identity.sourceIp
integration.request.header.authorization: method.request.header.Authorization
passthroughBehavior: when_no_match
httpMethod: POST
type: http
definitions:
Installation:
type: object
required:
- id
- name
- account
- php_version
properties:
id:
type: string
format: uuid
example: 294deacc-d8b8-4005-82c4-0727ba8ddde0
name:
type: string
example: torquemag
pattern: ^[a-z][a-z0-9]{2,13}$
account:
type: object
properties:
id:
type: string
format: uuid
example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
description: The account ID
php_version:
type: string
description: The PHP version used to run WordPress (read-only)
example: '7.0'
x-nullable: true
status:
type: string
enum:
- active
- pending
site:
type: object
x-nullable: true
properties:
id:
type: string
format: uuid
example: 28c78b6d-c2da-4f09-85f5-1ad588089b2d
cname:
type: string
description: Returns the CNAME of the install
example: mywebsite.wpengine.com
stable_ips:
type: array
items:
type: string
description: A list of stable IPs bound to the install. This will only apply to some premium/enterprise plans
example:
- 1.2.3.2
- 1.1.1.2
x-nullable: true
environment:
type: string
x-nullable: true
enum:
- production
- staging
- development
- null
primary_domain:
type: string
x-nullable: true
description: The primary domain for the install.
example: mywebsite.wpengine.com
is_multisite:
type: boolean
x-nullable: true
example: false
created_at:
type: string
format: date-time
description: The date and time the install was created in UTC.
example: '2025-06-12T09:56:42.386Z'
wp_version:
type: string
x-nullable: true
description: The WordPress version installed on the install. Only returned when requesting an individual install.
example: 6.8.1
defer_wordpress_upgrades_until:
type: string
format: date-time
x-nullable: true
description: If set, automatic WordPress core major updates will be deferred until this date. Only returned when requesting an individual install.
example: '2025-12-31T23:59:59.999Z'
InternalServerErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message regarding the error that occurred on the server
example: An unexpected error occurred, please try again in a few minutes
NotFoundErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message regarding the error that occurred on the server
example: Not Found
documentation_url:
type: string
description: (Optional) A URL where documentation regarding this specific error can be found
PreviousPage:
type: string
example: https://api.wpengineapi.com/v1/example-endpoint?limit=100&offset=0
x-nullable: true
description: Path to the previous page of results
NextPage:
type: string
example: https://api.wpengineapi.com/v1/example-endpoint?limit=100&offset=200
x-nullable: true
description: Path to the next page of results
TooManyRequestsOperation:
description: Too many requests
BadRequestErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message regarding the error that occurred on the server
example: 'Invalid Site: Name cannot be empty.'
documentation_url:
type: string
description: (Optional) A URL where documentation regarding this specific error can be found
errors:
type: array
description: An array of error objects describing specific errors that arose when servicing the request
items:
$ref: '#/definitions/ResourceError'
ResourceError:
type: object
required:
- resource
- field
- type
- code
- message
properties:
resource:
type: string
description: The name of the resource that was being processed when the error occurred
example: Site
field:
type: string
description: (Optional) The specific field associated with the error
example: name
type:
type: string
description: (Optional) A type associated with the error. `invalid_value`, `access_error`, `value_unavailable`
example: invalid_value
code:
type: string
description: (Optional) A machine code relating to the error that occurred with the field and resource
example: too_long
message:
type: string
description: (Optional) A human-readable message relating to the error that occurred with the field and resource
example: Name is too long (maximum is 40 characters)
ServiceUnavailableOperation:
description: Service unavailable
BadGatewayOperation:
description: An invalid response was received from an upstream server
ResultsCount:
type: integer
example: 225
description: The total number of results
ForbiddenErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message regarding the error that occurred on the server
example: You don't have permission to perform that action
documentation_url:
type: string
description: (Optional) A URL where documentation regarding this specific error can be found
AuthenticationErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message regarding the error that occurred on the server
example: Bad Credentials
documentation_url:
type: string
description: (Optional) A URL where documentation regarding this specific error can be found
parameters:
offsetParam:
name: offset
in: query
type: integer
required: false
default: 0
minimum: 0
description: (Optional) The first record of the result set to be retrieved
account_id:
name: account_id
in: query
type: string
format: uuid
required: false
description: (Optional) The uuid of an account
x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
authorization:
name: Authorization
in: header
type: string
format: uuid
limitParam:
name: limit
in: query
type: integer
required: false
default: 100
minimum: 0
maximum: 100
description: (Optional) The number of records to return
securityDefinitions:
basicAuth:
type: basic
description: 'API username and password from Portal''s API Access page: https://my.wpengine.com/api_access'