---
title: "Provision a new device"
method: POST
path: "/devices"
tags: ["Devices"]
---

# Provision a new device

`POST /devices`

Requests a new device for the authenticated user from the device spec in the request body. Optional query parameters select the device type, target country, billing mode, and a profile to use as the base spec; the response returns the device and its stream token.

## Query parameters

- `deviceType` 'dedicated_physical_device' | 'dedicated_premium_device' | 'dedicated_ios_device' | 'dedicated_emulated_device' | 'ios_simulator'
- `country` string — ISO 3166-1 alpha-2 country code. If omitted the system picks the country with the most availability.
- `profileId` string — Profile ID to use as device spec
- `billing` 'auto' | 'subscription' | 'minute' — Billing mode. 'auto' uses a subscription slot when available and otherwise bills per minute; 'subscription' requires an available subscription slot; 'minute' bills per minute. Only cloud phone and cloud emulator devices support per-minute billing.

## Request body

- DeviceSpec
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `androidVersion` integer
  - `apps` string[], nullable
  - `carrier` DeviceCarrier
    - `GsmOperatorAlpha` string, required
    - `GsmOperatorNumeric` integer, required
    - `GsmSimOperatorAlpha` string, required
    - `GsmSimOperatorIsoCountry` string, required
    - `GsmSimOperatorNumeric` integer, required
    - `PersistSysTimezone` string, required
  - `country` string
  - `files` string[], nullable
  - `identifiers` DeviceIdentifiers
    - `BootloaderSerialNumber` string, required
    - `IdentifierAndroidID` string, required
    - `IdentifierAppSetID` string, required
    - `IdentifierBluetoothMAC` string, required
    - `IdentifierGAID` string, required
    - `IdentifierGSFID` string, required
    - `IdentifierICCID` string, required
    - `IdentifierIMEI` string, required
    - `IdentifierIMSI` string, required
    - `IdentifierMEID` string, required
    - `IdentifierMediaDRMID` string, required
    - `IdentifierPhoneNumber` string, required
    - `IdentifierSerial` string, required
    - `IdentifierWifiMAC` string, required
    - `SerialNumber` string, required
  - `locale` string
  - `location` Location
    - `$schema` string, uri — A URL to the JSON Schema for this object.
    - `latitude` number, double, required
    - `longitude` number, double, required
  - `name` string
  - `proxy` ProxyConfig1
    - `name` string
    - `smartIp` boolean
    - `socks5` SOCKS5
      - `host` string, required
      - `password` string, required
      - `port` integer, required
      - `user` string, required
  - `timezone` string

## Response `200`

OK

- DeviceInfo
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `activeTaskId` string, required
  - `assignedAt` string, date-time, nullable, required
  - `billingStrategy` string
  - `createdAt` string, date-time, required
  - `createdBy` string
  - `id` string, required
  - `name` string, required
  - `ownerId` string
  - `providerId` string
  - `state` string, required
  - `stateMessage` string, required
  - `streamToken` string
  - `streamUrl` string, required
  - `taskCount` integer, required
  - `terminatesAt` string, date-time, nullable, required
  - `type` string, required
  - `updatedAt` string, date-time, required
  - `userId` string — Deprecated: use ownerId/createdBy.

## Other responses

- `default` — Error

---

[API](https://skmtc.net/mobilerun/apis/workflows.md) · [All operations](https://skmtc.net/mobilerun/apis/workflows/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mobilerun/workflows/revisions/1bc499aa8f99/schema)
