---
title: "Fetch device details by ID"
method: GET
path: "/enterprise/{enterprise_id}/device/{device_id}/"
tags: ["esper_cloud_api_AndroidDevice"]
---

# Fetch device details by ID

`GET /enterprise/{enterprise_id}/device/{device_id}/`

⚠️ Android only. This endpoint applies exclusively to Android-managed devices enrolled in Esper. 

Alternative Available

Use the v2 endpoint /v2/devices/{id} for an updated and forward-compatible device model, especially in multi-OS environments.

Retrieves the full DeviceInfo record for a single enrolled device by its UUID.
Returns comprehensive device metadata including hardware identifiers, enrollment state, group membership, applied and assigned blueprint versions, and status information. Use when you already have a device_id and need complete, authoritative device detail.

About Get Device

The DeviceInfo object is Esper's full representation of an enrolled Android device. It includes all fields returned in list results, plus any additional status and configuration detail associated with the device's current enrollment state. Device IDs are stable UUIDs and do not change after enrollment; they are the primary reference for all device-specific API operations — commands, app installs, event feeds, and status queries.

Key Fields

device_id — path parameter UUID; Esper's stable internal identifier for this device

Blueprint fields — reflect the gap between assigned_blueprint_id (what's intended) and current_blueprint_id / current_blueprint_version_id (what's applied)

Enrollment state — current device lifecycle state (see DeviceStateEnum)

**Common Use Cases**

Retrieve full device details after discovering a device_id from a list or event payload

Confirm current enrollment state before issuing a command or checking compliance

Inspect blueprint assignment vs. applied blueprint to detect configuration drift

**Best Practices**

Use this endpoint for authoritative single-device lookups rather than scanning list results — it avoids pagination overhead and returns a complete record.
Check state before dispatching commands; commands may not execute on devices in offline or unenrolled states.
Store the device_id UUID in your system — it is the stable key for all downstream device operations and does not change.

**Workflow**

Obtain device_id from a device list call, enrollment event, or stored reference.
Call this endpoint to retrieve the full DeviceInfo record.
Use the returned state and configuration data to determine the appropriate next action (command, install, group operation).

## Path parameters

- `enterprise_id` string, uuid, required
- `device_id` string, uuid, required

## Response `200`

successful operation

- EsperCloudApiDeviceInfo
  - `id` string, uuid
  - `url` string, url
  - `device_name` string
  - `alias_name` string — Device friendly name
  - `policy_name` string
  - `status` integer — Current status of device
  - `state` 0 | 1 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 | 180 | 190 | 200 — Following are the Device States and their description ``` * 0 = Device State is Unspecified * 1 = Online * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 30 = Beginning Provisioning * 40 = Configuring Google Play (still provisioning) * 50 = Applying Policies and Installing Applications (still provisioning) * 60 = Offline * 70 = Device is undergoing a Factory Reset (reset started from Dashboard) * 80 = Device Onboarding in Progress * 90 = Device Onboarding Failed * 100 = Device Onboarded in Esper * 110 = Android For Work Account added * 120 = Apps installed * 130 = Branding Processed * 140 = Permission Policy Processed * 150 = Device Policy Processed * 160 = Device Settings Processed * 170 = Security Policy Processed * 180 = Phone Policy Processed * 190 = Custom Settings Processed * 200 = Registered ```
  - `current_command` string, uuid — Current command associated with device
  - `suid` string — Device generated unique id
  - `directory_record_id` string, uuid — ID of Directory Record associated with the device (if available)
  - `fcm_id` string
  - `enterprise` string, url
  - `policy` string, url
  - `user` string, url
  - `groups` string[]
  - `tags` string[]
  - `api_level` integer
  - `template_name` string
  - `mqtt_id` string
  - `softwareInfo` object
  - `hardwareInfo` object
  - `displays` object
  - `networkInfo` object
  - `memoryInfo` object
  - `esper_cient` string
  - `device_type` string
  - `audioConstraints` object
  - `provisioned_on` string, date-time
  - `created_on` string, date-time
  - `current_app_mode` integer
  - `kiosk_app_name` string
  - `lockdown_state` integer
  - `timezone_string` string
  - `initialtemplate` string
  - `updated_on` string, date-time
  - `emm_device` EsperCloudApiEmmDevice
    - `id` integer
    - `google_device_id` string
    - `managementType` string
    - `device` string, uuid
    - `google_user` integer
    - `policy` integer
    - `created_on` string, date-time
    - `updated_on` string, date-time
    - `is_active` boolean
  - `is_gms` boolean
  - `is_active` boolean
  - `has_seamlessInfo` boolean

## Other responses

- `400` — Bad request

---

[API](https://skmtc.net/esper/apis/esper-api-reference.md) · [All operations](https://skmtc.net/esper/apis/esper-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/esper/esper-api-reference/revisions/e1f64cbb488e/schema)
