# Create Cloud Phone

Purchase and provision one or more Cloud Phones.
- **Preconditions**: the plan must have remaining capacity and the daily creation quota must not be exhausted. `country`, `timezone` and `language` are validated against the list the selected device model supports, so an unsupported combination is rejected rather than silently adjusted. Coordinates are bounded to ±180 longitude, ±90 latitude. A phone number is discarded when the chosen SKU does not support one. Monthly SKUs are supported when returned by [`/api/cloudphone/monthly/skus`](./local-api.yaml#operation/listMonthlyCloudPhoneSkus); they currently use a 30-day term.
- **Effect**: creates the Cloud Phone records. Pay-per-minute SKUs become usable after provisioning; monthly SKUs are created inactive. Creation never charges the wallet. Monthly phones are charged only by [`/api/cloudphone/monthly/activate`](./local-api.yaml#operation/activateMonthlyCloudPhones); pay-per-minute phones begin consuming balance or quota when powered on.
- **Completion**: **accepted, not complete.** The Cloud Phone instance is not ready yet, and powering on too early is rejected. Poll [`/api/cloudphone/info`](./local-api.yaml#operation/infoUsingPOST) or [`/api/cloudphone/page`](./local-api.yaml#operation/pageUsingPOST) until `envStatus` reports the phone as powered off. For a monthly SKU, also complete [`/api/cloudphone/monthly/activate`](./local-api.yaml#operation/activateMonthlyCloudPhones) before powering it on.
- **Retry**: not idempotent and not serialized. There is no idempotency key. Do not retry blindly after a timeout — query state first.

Documented business errors: `19064`, `20018`, `33338`, `33339`, `33340`, `33341`, `33342`, `33343`, `33344`, `33345`, `33398`, `33399`, `33400`, `33408`. See [Error Codes](../Getting%20Started/error-codes.md) for what each code means. Any operation can additionally return the common codes.

Endpoint: POST /api/cloudphone/create
Version: 2026-09-05

## Request fields (application/json):

  - `skuId` (string, required)
    Cloud Phone model
| Cloud Phone model | SKU ID (`skuId`) |
|  --- | --- |
| Android 12 | `10002` |
| Android 13 | `10013` |
| Android 14 | `10005` |
| Android 15 | `10004` |
| Android 15A | `10014` |
| Android 16 | `10015` |
| Android 17 | `10105` |

See [Country Time Zone Table](/api-reference/appendix/country-time-zone) for supported regions and timezone mappings

  - `quantity` (integer, required)
    Number of cloud phone created. Range of values:[1-10]

  - `envRemark` (string)
    Profile Remarks (Length limit 1500 characters)

  - `groupId` (string)
    Group ID. Use `"0"` for ungrouped.

  - `groupName` (string)
    Existing group name, or a new group name to create when no matching group exists.

  - `automaticGeo` (boolean)
    Whether to automatically match the geographic location. Default:true

  - `automaticLanguage` (boolean)
    Whether to automatically match the language. Default:true

  - `automaticLocation` (boolean)
    Whether to auto-match location (time zone, country). Default:true

  - `country` (string)
    Country code (e.g. `us`). See [Country Time Zone Table](/api-reference/appendix/country-time-zone) for the full list

  - `timezone` (string)
    Time zone, e.g. America/New_York

  - `language` (string)
    Language, e.g. en-US

  - `altitude` (number)
    Altitude

  - `latitude` (number)
    Latitude. Example:22.309182

  - `longitude` (number)
    Longitude. Example:114.176817

  - `speed` (number)
    Movement speed

  - `bearing` (number)
    Direction of movement

  - `accuracy` (number)
    Horizontal accuracy

  - `phoneNumber` (string)
    Customize your phone number. Format requirements:Must begin with a + sign, country code must be 1-3 digits (excluding 86), total length 8-14 digits, and contain only + and numbers.

  - `brand` (string)
    device brand,You can query via the https://guide.morelogin.com/api-reference/open-api/open-api/cloud-phone/paths/~1cloudphone~1brand~1models/post interface.

  - `modelId` (number)
    device model id,You can query via the https://guide.morelogin.com/api-reference/open-api/open-api/cloud-phone/paths/~1cloudphone~1brand~1models/post interface.

  - `proxyId` (string)
    Proxy ID

  - `tags` (array)
    Tag names. Blank values are ignored.

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `code` (integer, required)

  - `msg` (string | null, required)

  - `data` (array)
    This is Cloud phone IDS

  - `requestId` (string, required)

  - `error` (object)

