Mobile Farm API (1.1.0)
Managing real mobile devices: adding and deleting devices, getting detailed device information, managing ADB keys, and more.
Store ADB key
Stores an ADB public key, enabling debug access.
Authorizations:
Request Body schema: application/jsonrequired
| publicKey required | string non-empty The public key associated with the ADB key. |
| title | string [ 1 .. 255 ] characters The title associated with the ADB key. |
Responses
Request samples
- Payload
{- "publicKey": "string",
- "title": "string"
}Response samples
- 200
- 400
- 401
- 409
{- "fingerprint": "string",
- "title": "string"
}Delete ADB key
Deletes an ADB public key associated with the provided fingerprint.
Authorizations:
path Parameters
| fingerprint required | string Fingerprint of the ADB key. |
Responses
Response samples
- 400
- 401
- 404
{- "error": {
- "message": "string"
}
}Manages RSA keys for Android Debug Bridge (ADB) of a specific user. Applicable only to user administrators.
List ADB keys for specified user
Retrieves a list of ADB keys associated with a specific user, including their fingerprints and titles.
Authorizations:
path Parameters
| userId required | string User identifier. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
[- {
- "fingerprint": "string",
- "title": "string"
}
]Store ADB key for specified user
Stores an ADB public key for a specified user, enabling debug access.
Authorizations:
path Parameters
| userId required | string User identifier. |
Request Body schema: application/jsonrequired
| publicKey required | string non-empty The public key associated with the ADB key. |
| title | string [ 1 .. 255 ] characters The title associated with the ADB key. |
Responses
Request samples
- Payload
{- "publicKey": "string",
- "title": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
{- "fingerprint": "string",
- "title": "string"
}Delete ADB key for specified user
Deletes a specific ADB key for a specified user based on the provided fingerprint.
Authorizations:
path Parameters
| userId required | string User identifier. |
| fingerprint required | string Fingerprint of the ADB key. |
Responses
Response samples
- 400
- 401
- 403
- 404
{- "error": {
- "message": "string"
}
}List available devices
Returns a list of available mobile devices that you can add to a project.
Authorizations:
query Parameters
| fields | Array of strings Fields of filters to return in response |
Responses
Response samples
- 200
- 400
- 401
- 403
[- {
- "count": 0,
- "manufacturer": "string",
- "marketName": "string",
- "osVersion": "string",
- "platform": "string",
- "sdk": "string",
- "abi": "string",
- "cpuPlatform": "string",
- "resolution": "string"
}
]Add devices to project
Adds devices to the project based on the provided filters.
Authorizations:
Request Body schema: application/jsonrequired
Body
| billingType | string The tariffication type for the device. Available values are minutes, hours, and months. |
Array of objects (entity.Filter) |
Responses
Request samples
- Payload
{- "billingType": "string",
- "filters": [
- {
- "count": 0,
- "manufacturer": "string",
- "marketName": "string",
- "osVersion": "string",
- "platform": "string",
- "sdk": "string",
- "abi": "string",
- "cpuPlatform": "string",
- "resolution": "string"
}
]
}Response samples
- 200
- 400
- 401
- 402
- 403
- 409
{- "devices": [
- {
- "adminStatus": "string",
- "cpuPlatform": "string",
- "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "osVersion": "string",
- "owner": {
- "name": "string"
}, - "platform": "string",
- "present": true,
- "ready": true,
- "resolution": "string",
- "sdk": "string",
- "serial": "string",
- "status": {
- "ACTIVE": 0,
- "IN_USE": 0,
- "BUSY": 0,
- "MAINTENANCE": 0,
- "ERROR": 0
}
}
]
}List devices
Returns a list of devices in a project.
Authorizations:
Responses
Response samples
- 200
- 401
- 403
[- {
- "adminStatus": "string",
- "cpuPlatform": "string",
- "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "osVersion": "string",
- "owner": {
- "name": "string"
}, - "platform": "string",
- "present": true,
- "ready": true,
- "resolution": "string",
- "sdk": "string",
- "serial": "string",
- "status": {
- "ACTIVE": 0,
- "IN_USE": 0,
- "BUSY": 0,
- "MAINTENANCE": 0,
- "ERROR": 0
}
}
]Remove device from project
Removes a device from the project using its serial number.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Request Body schema: application/jsonrequired
Body
| slotID | string The slot identifier. |
Responses
Request samples
- Payload
{- "slotID": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 429
{- "adminStatus": "string",
- "cpuPlatform": "string",
- "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "osVersion": "string",
- "owner": {
- "name": "string"
}, - "platform": "string",
- "present": true,
- "ready": true,
- "resolution": "string",
- "sdk": "string",
- "serial": "string",
- "status": {
- "ACTIVE": 0,
- "IN_USE": 0,
- "BUSY": 0,
- "MAINTENANCE": 0,
- "ERROR": 0
}
}Get device information
Returns information about a device by its serial number.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Responses
Response samples
- 200
- 400
- 401
- 403
{- "abi": "string",
- "adminStatus": "string",
- "airplaneMode": true,
- "battery": {
- "health": "string",
- "level": 0,
- "scale": 0,
- "source": "string",
- "status": "string",
- "temp": 0,
- "voltage": 0
}, - "browser": {
- "apps": [
- {
- "id": "string",
- "name": "string",
- "selected": true,
- "system": true,
- "type": "string"
}
]
}, - "channel": "string",
- "cpuPlatform": "string",
- "display": {
- "density": 0,
- "fps": 0,
- "height": 0,
- "rotation": 0,
- "secure": true,
- "size": 0,
- "url": "string",
- "width": 0,
- "xdpi": 0,
- "ydpi": 0
}, - "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "mfProxy": true,
- "network": {
- "connected": true,
- "failover": true,
- "roaming": true,
- "subtype": "string",
- "type": "string"
}, - "openGLESVersion": "string",
- "operator": "string",
- "osVersion": "string",
- "owner": {
- "name": "string"
}, - "phone": {
- "iccid": "string",
- "imei": "string",
- "imsi": "string",
- "network": "string",
- "phoneNumber": "string"
}, - "platform": "string",
- "presenceChangedAt": "string",
- "present": true,
- "product": "string",
- "ready": true,
- "remoteConnect": true,
- "remoteConnectUrl": "string",
- "resolution": "string",
- "reverseForwards": [
- "string"
], - "sdk": "string",
- "serial": "string",
- "status": 0,
- "statusChangedAt": "string",
- "usage": "string",
- "usageChangedAt": "string",
- "wifiAutoConnectFeatureAvailable": true
}Replace device
Replaces the device based on the provided filters.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Request Body schema: application/jsonrequired
Body
object (entity.FilterReplace) | |
| slotId | string The slot identifier. |
Responses
Request samples
- Payload
{- "filter": {
- "manufacturer": "string",
- "marketName": "string",
- "osVersion": "string",
- "platform": "string",
- "sdk": "string",
- "abi": "string",
- "cpuPlatform": "string",
- "resolution": "string"
}, - "slotId": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 429
{- "adminStatus": "string",
- "cpuPlatform": "string",
- "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "osVersion": "string",
- "owner": {
- "name": "string"
}, - "platform": "string",
- "present": true,
- "ready": true,
- "resolution": "string",
- "sdk": "string",
- "serial": "string",
- "status": {
- "ACTIVE": 0,
- "IN_USE": 0,
- "BUSY": 0,
- "MAINTENANCE": 0,
- "ERROR": 0
}
}Change device settings
Updates settings on the specified device. This operation is asynchronous. The response indicates that the change request has been accepted for processing.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Request Body schema: application/jsonrequired
object (entity.DeviceProxySettings) Proxy tunnel configuration for the device. | |
| wifi | boolean Indicates whether the Wi-Fi configuration should be added or removed on the device. If true, the Wi-Fi configuration is added or enabled. If false, it is removed or disabled. |
Responses
Request samples
- Payload
{- "proxy": {
- "enable": true,
- "token_fingerprint": "fp_someformat"
}, - "wifi": true
}Response samples
- 400
- 401
- 403
- 404
- 405
- 409
{- "error": {
- "message": "string"
}
}Update device tariffication
Updates a tariffication of the device.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Request Body schema: application/jsonrequired
Body
| autoPayDateTime | string The next payment date. Applicable only to a monthly subscription. |
| type | string The tariffication type for the device. Available values are minutes, hours, and months. |
object (entity.Update) |
Responses
Request samples
- Payload
{- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 429
{- "adminStatus": "string",
- "cpuPlatform": "string",
- "manufacturer": "string",
- "marketName": "string",
- "meta": {
- "billing": {
- "autoPayDateTime": "string",
- "type": "string",
- "updates": {
- "at": "string",
- "type": "string"
}
}, - "slot": {
- "id": "string"
}
}, - "osVersion": "string",
- "owner": {
- "name": "string"
}, - "platform": "string",
- "present": true,
- "ready": true,
- "resolution": "string",
- "sdk": "string",
- "serial": "string",
- "status": {
- "ACTIVE": 0,
- "IN_USE": 0,
- "BUSY": 0,
- "MAINTENANCE": 0,
- "ERROR": 0
}
}Assign device to user
Assigns a device to a user. Works only for Android devices.
Authorizations:
Request Body schema: application/jsonrequired
| serial required | string The serial number of the device. |
| timeout | integer Device timeout in milliseconds. If the device remains idle for this period, it will be automatically disconnected. The default timeout is 9 hours (32,400,000 milliseconds). |
Responses
Request samples
- Payload
{- "serial": "string",
- "timeout": 0
}Response samples
- 400
- 401
- 403
- 404
- 504
{- "error": {
- "message": "string"
}
}Remove device from user
Removes a device from the user and makes it available for other users. Works only for Android devices.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Responses
Response samples
- 401
- 403
- 404
- 504
"string"Start ADB remote connect session
Starts an ADB remote connect session. Works only for Android devices.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 504
{- "remoteConnectUrl": "string"
}End ADB remote connect session
Ends an ADB remote connect session. Works only for Android devices.
Authorizations:
path Parameters
| serial required | string The serial number of the device. |
Responses
Response samples
- 400
- 401
- 403
- 404
{- "error": {
- "message": "string"
}
}List proxy tokens
Returns a list of proxy tokens belonging to the current user. Each token includes metadata such as fingerprint, name, active status, and associated device serial numbers. Token secrets are not exposed in this response.
Authorizations:
Responses
Response samples
- 200
- 401
[- {
- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "serials": [
- "384408c62079441faf74b7adcd9336b5",
- "863e94cb8ae3481a9e0f279981cb7104"
]
}
]Create proxy token
Creates a proxy token for the current user. The generated token secret is returned in the response body and cannot be retrieved afterwards. The token name must be unique per user.
Authorizations:
Request Body schema: application/jsonrequired
| name required | string Human-readable name for the proxy token. Must be unique per user (case-insensitive). Length: 1–255 characters (trimmed). |
Responses
Request samples
- Payload
{- "name": "My VPN Token"
}Response samples
- 200
- 400
- 401
- 409
{- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "token": "daxyz789..."
}Delete proxy token
Deletes the specified proxy token using its unique fingerprint. Any active connections that rely on this token are immediately terminated.
Authorizations:
path Parameters
| fingerprint required | string Unique fingerprint of the proxy token to delete. |
Responses
Response samples
- 200
- 401
- 404
{- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "serials": [
- "384408c62079441faf74b7adcd9336b5",
- "863e94cb8ae3481a9e0f279981cb7104"
]
}Manages proxy tokens that are used for routing device traffic to a specific user's client. Accessible only to iam_admin.
List proxy tokens for user
Returns a list of proxy tokens belonging to the specified user. Each token includes metadata such as fingerprint, name, active status, and associated device serial numbers. Token secrets are not exposed in this response. This method is available only to user administrators.
Authorizations:
path Parameters
| user_id required | string Unique identifier of the user whose proxy tokens are being listed. |
Responses
Response samples
- 200
- 401
- 403
- 404
[- {
- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "serials": [
- "384408c62079441faf74b7adcd9336b5",
- "863e94cb8ae3481a9e0f279981cb7104"
]
}
]Create proxy token for user
Creates a new proxy token for the specified user. The generated token secret is returned in the response body and is not retrievable afterwards. The token name must be unique per user. This method is available only to user administrators.
Authorizations:
path Parameters
| user_id required | string Unique identifier of the user for whom the proxy token is being created. |
Request Body schema: application/jsonrequired
| name required | string Human-readable name for the proxy token. Must be unique per user (case-insensitive). Length: 1–255 characters (trimmed). |
Responses
Request samples
- Payload
{- "name": "My VPN Token"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 429
{- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "token": "daxyz789..."
}Delete user proxy token
Deletes the specified proxy token belonging to the specified user. Any active connections that rely on this token are immediately terminated. This method is available only to user administrators.
Authorizations:
path Parameters
| user_id required | string Unique identifier of the user whose proxy token is being deleted. |
| fingerprint required | string Unique fingerprint of the proxy token to delete. |
Responses
Response samples
- 200
- 401
- 403
- 404
{- "active": true,
- "fingerprint": "fp_someformat",
- "name": "My VPN Token",
- "serials": [
- "384408c62079441faf74b7adcd9336b5",
- "863e94cb8ae3481a9e0f279981cb7104"
]
}Create firewall rule
Creates a new firewall rule in the current project. The maximum number of rules per project is 100.
Authorizations:
Request Body schema: application/jsonrequired
| action | string Enum: "allow" "deny" Specifies whether to permit (allow) or block (deny) traffic matching this rule. |
| address | string Destination address. Available values are IPv4, IPv6, subnet, domain, or "*". |
| ports | string Destination port. Available values are a single port, a range (e.g., "8000:9000"), or "*". |
Responses
Request samples
- Payload
{- "action": "allow",
- "address": "192.168.1.0/24",
- "ports": "443"
}Response samples
- 200
- 201
- 400
- 401
- 403
- 409
{- "id": "fwr-7f9a1b2c",
- "action": "allow",
- "address": "192.168.1.0/24",
- "ports": "443"
}Update firewall rule
Updates one or more fields of a firewall rule. Only the fields provided in the request body are modified.
Authorizations:
path Parameters
| id required | string Unique identifier of the firewall rule to update. |
Request Body schema: application/jsonrequired
| action | string Enum: "allow" "deny" Specifies whether to permit (allow) or block (deny) traffic matching this rule. |
| address | string Destination address. Available values are IPv4, IPv6, subnet, domain, or "*". |
| ports | string Destination port. Available values are a single port, a range (e.g., "8000:9000"), or "*". |
Responses
Request samples
- Payload
{- "action": "allow",
- "address": "192.168.1.0/24",
- "ports": "443"
}Response samples
- 200
- 400
- 401
- 403
- 404
{- "id": "fwr-7f9a1b2c",
- "action": "allow",
- "address": "192.168.1.0/24",
- "ports": "443"
}Reorder firewall rules
Updates the execution priority of firewall rules by submitting an ordered list of rule identifiers. The first identifier in the list receives the highest priority.
Authorizations:
Request Body schema: application/jsonrequired
| ids required | Array of strings List of rule identifiers in the desired order of execution priority.
The first rule in the list has the highest priority.
Priority is important only for IP-based rules when overlapping subnets exist (e.g., denying |
Responses
Request samples
- Payload
{- "ids": [
- "fwr-test-rule",
- "fwr-test-2-rule"
]
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
[- {
- "id": "fwr-7f9a1b2c",
- "action": "allow",
- "address": "192.168.1.0/24",
- "ports": "443"
}
]