---
title: "Create Multiple User Extensions"
method: POST
path: "/restapi/v2/accounts/{accountId}/batch-provisioning/users"
tags: ["User Settings"]
---

# Create Multiple User Extensions

`POST /restapi/v2/accounts/{accountId}/batch-provisioning/users`

Creates multiple user extensions with BYOD (customer provided) devices.
If "extensionNumber" is not specified, the next available extension number will be assigned.

## Path parameters

- `accountId` string, required

## Request body

- BatchProvisionUsersRequest — Describes request for user extension provisioning
  - `records` BatchProvisionUsersRequestItem[], required
    - `extensionNumber` string — Short number of an extension. Actual max length depends on system length limit for extension.
    - `status` 'Enabled', required — Extension status. Only "Enabled" can be specified
    - `contact` object, required — Personal contact information
      - `firstName` string, required — Given name
      - `lastName` string, required — Family name
      - `email` string, email, required — Contact email
      - `mobileNumber` string — Phone number in e.164 format (with '+' prefix)
      - `emailAsLoginName` boolean — Indicates that contact email is enabled as login name for this user. Please note that email must be unique in this case.
    - `costCenter` object
      - `id` string, required — Internal identifier of the Cost Center
    - `roles` object[]
      - `id` string, required — Internal identifier of a role to be assigned
    - `devices` object[]
      - `deviceInfo` DeviceDefinition, required
        - `type` 'OtherPhone' | 'WebRTC', required — Device type. Only "OtherPhone" and "WebRTC" device types are supported at the moment
        - `emergency` union, required — Only "address" is supported at the moment
          - object
            - `address` PostalAddress, required — Postal address/location
              - …
          - object
            - `location` object, required
              - …
        - `phoneInfo` union, required
          - PhoneNumberDefinitionTollType — To use as selection criteria when a number to be selected from the number pool.
            - `tollType` 'Toll' | 'TollFree', required — Indicates if a number is toll or toll-free
          - PhoneNumberDefinitionPreferredAreaCode — To use as selection hint when a "toll" number to be selected from the number pool.
            - `preferredAreaCode` string, required — Preferred area code to use if numbers available
          - PhoneNumberDefinitionDirectNumberWithReservationId — To be used for direct number assignment in case number pool is not supported
            - `phoneNumber` string, required — Phone number ID
            - `reservationId` string — Phone number reservation ID
          - PhoneNumberDefinitionNumberId — To be used to assign a number by ID
            - `phoneNumberId` string, required — Phone number ID
    - `sendWelcomeEmail` boolean — Specifies if a welcome/activation email is sent to the new users (within extension status changing from 'Unassigned' to 'NotActivated/Disabled')

## Response `200`

Successful response (partial success is possible)

- BatchProvisionUsersResponse
  - `results` union[], required
    - union
      - BatchProvisionUsersSuccessItem
        - `successful` boolean, required — Indicates if the provisioning operation was successful for this item, always `true` in this model
        - `extension` object, required
          - `id` string, required — The internal identifier of RingCentral extension created
          - `devices` object[], required
            - `id` string, required — The internal identifier of device created
            - `phoneNumber` string, required — Phone number in e.164 format (with '+' prefix)
      - BatchProvisionErrorItem
        - `successful` boolean, required — Indicates if the provisioning operation was successful for this item, always `false` in this model
        - `errors` ApiErrorWithParameter[], required
          - `errorCode` string, required — Logical error code (typically, 3 letters followed with number, dash separated)
          - `message` string, required — User-friendly error message
          - `parameterName` string — The name of the API parameter/attribute which caused the error
          - `parameterValue` string — The value of the API parameter/attribute which caused the error

## Other responses

- `400` — General response with **HTTP 400 "Bad request"** status.<br> Reasons: unparsable request, path, query or body parameters are invalid. The error description may contain reference to particular parameter(s) which haven't passed the validation.
- `403` — General response with **HTTP 403 "Forbidden"** status.<br> Reasons: the requested operation is forbidden because of certain resource state, lack of permissions, feature unavailability, etc.
- `404` — General response with **HTTP 404 "Not found"** status.<br> Reasons: the entity with given ID (typically specified in a path parameter), is not found or inaccessible
- `429` — General response with **HTTP 429 "Too many requests"** status.<br> Reasons: certain rate limit is exceeded.
- `500` — General response with **HTTP 500 "Internal Server Error"** status.<br> Reasons: general server-side error.
- `503` — General response with **HTTP 503 "Service not available"** status.<br> Reasons: server cannot process the request because of being overloaded, misconfiguration or other issues.

---

[API](https://skmtc.net/ringcentral/apis/ringcentral-api.md) · [All operations](https://skmtc.net/ringcentral/apis/ringcentral-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ringcentral/ringcentral-api/versions/8d602198ec97/schema)
