WP Engine Account User API

The Account User API from WP Engine — 2 operation(s) for account user.

Operations 5

GET /accounts/{account_id}/account_users List your account users #
POST /accounts/{account_id}/account_users Create a new account user #
GET /accounts/{account_id}/account_users/{user_id} Get an account user by ID #
PATCH /accounts/{account_id}/account_users/{user_id} Update an account user #
DELETE /accounts/{account_id}/account_users/{user_id} Delete an account user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wpengine-account-user-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wpengine-account-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'The API described in this document is subject to change.

    '
  version: 1.17.0
  title: WP Engine Hosting Platform Account Account User API
  termsOfService: https://wpengine.com/legal/terms-of-service/
servers:
- url: https://api.wpengineapi.com/v1
tags:
- name: Account User
paths:
  /accounts/{account_id}/account_users:
    get:
      tags:
      - Account User
      summary: List your account users
      description: ''
      operationId: listAccountUsers
      parameters:
      - $ref: '#/components/parameters/authorization'
      - name: account_id
        in: path
        description: ID of account
        required: true
        x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of account users
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/AccountUser'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
        '429':
          $ref: '#/components/schemas/TooManyRequestsOperation'
        '503':
          $ref: '#/components/schemas/ServiceUnavailableOperation'
      security:
      - basicAuth: []
      x-amazon-apigateway-integration:
        uri: https://my.wpengine.com/capi/v1/accounts/{account_id}/account_users
        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.path.account_id: method.request.path.account_id
        passthroughBehavior: when_no_match
        httpMethod: GET
        type: http
    post:
      tags:
      - Account User
      summary: Create a new account user
      description: ''
      operationId: createAccountUser
      parameters:
      - $ref: '#/components/parameters/authorization'
      - name: account_id
        in: path
        description: ID of account
        required: true
        x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        schema:
          type: string
          format: uuid
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Your change was successful.
                  account_user:
                    $ref: '#/components/schemas/AccountUser'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '429':
          $ref: '#/components/schemas/TooManyRequestsOperation'
        '503':
          $ref: '#/components/schemas/ServiceUnavailableOperation'
      security:
      - basicAuth: []
      x-amazon-apigateway-integration:
        uri: https://my.wpengine.com/capi/v1/accounts/{account_id}/account_users
        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
          integration.request.path.account_id: method.request.path.account_id
        passthroughBehavior: when_no_match
        httpMethod: POST
        type: http
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - user
              properties:
                user:
                  type: object
                  description: The user that will be created
                  required:
                  - account_id
                  - first_name
                  - last_name
                  - email
                  - roles
                  properties:
                    account_id:
                      type: string
                      format: uuid
                      example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
                      description: The account ID
                    first_name:
                      type: string
                      example: Joe
                    last_name:
                      type: string
                      example: Smith
                    email:
                      type: string
                      example: joe@gmail.com
                    roles:
                      type: string
                      example: full,billing
                      description: choose from 'owner', 'full,billing', 'full', 'partial,billing', and 'partial'
                    install_ids:
                      type: array
                      items:
                        type: string
                      example:
                      - ddda3227-9a39-46ae-9e14-20958bb4e6c9
                      - qada3227-9a39-46ae-9e14-20958bb4e45y
        description: "##### Properties\n* user - **required** - The user that will be created\n  * account_id - **required** - The ID of the account that the account_user will belong to\n  * first_name - **required** - The first name of the user\n  * last_name - **required** - The last name of the user\n  * email - **required** - The email of the user\n  * roles -- **required** - The roles the user is allowed. The following roles are valid\n    * owner\n    * full\n    * full,billing\n    * partial\n    * partial,billing\n  * install_ids - **optional** - Used with partial role selection. The ids of the installs the user will have access to.\n"
        required: true
  /accounts/{account_id}/account_users/{user_id}:
    get:
      tags:
      - Account User
      summary: Get an account user by ID
      description: Returns a single account user
      operationId: getAccountUser
      parameters:
      - $ref: '#/components/parameters/authorization'
      - name: account_id
        in: path
        description: ID of account
        required: true
        x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        schema:
          type: string
          format: uuid
      - name: user_id
        in: path
        description: ID of the user
        required: true
        x-example: a1b2c3d4-e5f6-41b2-b3d4-e5f6a1b2c3d4
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUser'
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          $ref: '#/components/schemas/TooManyRequestsOperation'
        '503':
          $ref: '#/components/schemas/ServiceUnavailableOperation'
      security:
      - basicAuth: []
      x-amazon-apigateway-integration:
        uri: https://my.wpengine.com/capi/v1/accounts/{account_id}/account_users/{user_id}
        responses:
          '200':
            statusCode: '200'
          '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.account_id: method.request.path.account_id
          integration.request.path.user_id: method.request.path.user_id
        passthroughBehavior: when_no_match
        httpMethod: GET
        type: http
    patch:
      tags:
      - Account User
      summary: Update an account user
      description: ''
      operationId: updateAccountUser
      parameters:
      - $ref: '#/components/parameters/authorization'
      - name: account_id
        in: path
        description: ID of account
        required: true
        x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        schema:
          type: string
          format: uuid
      - name: user_id
        in: path
        description: ID of the user
        required: true
        x-example: a1b2c3d4-e5f6-41b2-b3d4-e5f6a1b2c3d4
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Your change was successful.
                  account_user:
                    $ref: '#/components/schemas/AccountUser'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          $ref: '#/components/schemas/TooManyRequestsOperation'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
        '503':
          $ref: '#/components/schemas/ServiceUnavailableOperation'
      security:
      - basicAuth: []
      x-amazon-apigateway-integration:
        uri: https://my.wpengine.com/capi/v1/accounts/{account_id}/account_users/{user_id}
        responses:
          '200':
            statusCode: '200'
          '400':
            statusCode: '400'
          '401':
            statusCode: '401'
          '403':
            statusCode: '403'
          '404':
            statusCode: '404'
          '429':
            statusCode: '429'
          '500':
            statusCode: '500'
          '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.account_id: method.request.path.account_id
          integration.request.path.user_id: method.request.path.user_id
        passthroughBehavior: when_no_match
        httpMethod: PATCH
        type: http
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - roles
              properties:
                roles:
                  type: string
                  example: full,billing
                  description: choose from 'owner', 'full,billing', 'full', 'partial,billing', and 'partial'
                install_ids:
                  type: array
                  items:
                    type: string
                  example:
                  - ddda3227-9a39-46ae-9e14-20958bb4e6c9
                  - qada3227-9a39-46ae-9e14-20958bb4e45y
        description: "##### Properties\n* roles -- **required** - The roles the user is allowed. The following roles are valid\n  * owner\n  * full\n  * full,billing\n  * partial\n  * partial,billing\n* install_ids - **optional** - Used with partial role selection. The ids of the installs the user will have access to.\n"
        required: true
    delete:
      tags:
      - Account User
      summary: Delete an account user
      description: This will remove the association this user has to this account. This delete is permanent and there is no confirmation prompt.
      operationId: deleteAccountUser
      parameters:
      - $ref: '#/components/parameters/authorization'
      - name: account_id
        in: path
        description: ID of account
        required: true
        x-example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        schema:
          type: string
          format: uuid
      - name: user_id
        in: path
        description: ID of the user
        required: true
        x-example: a1b2c3d4-e5f6-41b2-b3d4-e5f6a1b2c3d4
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Deleted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          $ref: '#/components/schemas/TooManyRequestsOperation'
        '503':
          $ref: '#/components/schemas/ServiceUnavailableOperation'
      security:
      - basicAuth: []
      x-amazon-apigateway-integration:
        uri: https://my.wpengine.com/capi/v1/accounts/{account_id}/account_users/{user_id}
        responses:
          '204':
            statusCode: '204'
          '400':
            statusCode: '400'
          '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.account_id: method.request.path.account_id
          integration.request.path.user_id: method.request.path.user_id
        passthroughBehavior: when_no_match
        httpMethod: DELETE
        type: http
components:
  schemas:
    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
    ServiceUnavailableOperation:
      description: Service unavailable
    AccountUser:
      type: object
      required:
      - user_id
      - account_id
      - first_name
      - last_name
      - email
      - phone
      - invite_accepted
      - mfa_enabled
      - roles
      properties:
        user_id:
          type: string
          description: The user ID
          format: uuid
          example: 28c78b6d-c2da-4f09-85f5-1ad588089b2d
        account_id:
          type: string
          description: The account ID
          format: uuid
          example: eeda3227-9a39-46ae-9e14-20958bb4e6c9
        first_name:
          type: string
          description: The first name of the user
          example: Joe
        last_name:
          type: string
          description: The last name of the user
          example: Smith
        email:
          type: string
          description: The email of the user
          example: joeSmith@test.com
        phone:
          type:
          - string
          - 'null'
          description: The phone number of the user
          example: '1234567890'
        invite_accepted:
          type: boolean
          description: Whether or not the user has accepted their invitation
          example: false
        mfa_enabled:
          type: boolean
          description: Whether or not the user has multi-factor authentication enabled
          example: true
        roles:
          type: string
          description: The user roles
          example: billing, partial
        last_owner:
          type:
          - boolean
          - 'null'
          description: Whether or not this owner is the last on the account. Only shows with users that have owner level roles.
          example: false
        installs:
          type:
          - array
          - 'null'
          description: An array of installs tied to a partial user.
          items:
            type: object
            properties:
              id:
                type: string
                description: The ID of the install
                example: 3hda2d4h-9a39-o20x-9e14-20958bb4ekd8
              name:
                type: string
                description: The name of the install
                example: install1
    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)
    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
    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: '#/components/schemas/ResourceError'
    TooManyRequestsOperation:
      description: Too many requests
    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
  parameters:
    authorization:
      name: Authorization
      in: header
      schema:
        type: string
        format: uuid
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'API username and password from Portal''s API Access page: https://my.wpengine.com/api_access'