---
title: "Get all devices in the tenant"
method: GET
path: "/v2/devices/"
tags: ["device_Device"]
---

# Get all devices in the tenant

`GET /v2/devices/`

Retrieves a paginated list of all devices enrolled in the tenant, across all platforms, using the V2 device schema.

Returns richer device records than the v0 equivalent, with expanded filter support including managed_by, policy_multi, template_multi, is_locked_down, extended search coverage, and esper_agent_version_name for Esper agent version filtering.

**About List All Devices (V2)**

This is the current recommended device list endpoint. Compared to /api/device/v0/devices/, V2 adds several filters valuable for fleet management at scale: managed_by distinguishes blueprint-managed from template-managed devices; policy_multi and template_multi allow multi-value policy/template filtering; is_locked_down targets locked-down devices; and the search field covers more Android-specific identifiers including WiFi MAC address, SIM operator, network operator, and IP address. Results are returned as device objects.

**Key Query Parameters**

managed_by — Filter by management mode: BLUEPRINT or TEMPLATE

policy_multi — CSV list of policy names to filter by

template_multi — CSV list of template names to filter by

is_locked_down — Filter to locked-down devices only

esper_agent_version_name — Filter by Esper agent (DPC) version name

foundation_version — Full Foundry OS version string (e.g., os_version.major.minor.build or eea_version)

search — Extended Android search: name, serial, IMEI, model, ICCID, phone, brand, WiFi, manufacturer, WiFi MAC, SIM operator, network operator, IP address

All v0 filters are also available: platform, os, group_multi, group_multi_immediate, assigned_blueprint_id, current_blueprint_id, current_blueprint_version_id_net, state, battery_level_gte/lte, tags, device_source, udid, serial

**Common Use Cases**

Identifying all devices not yet on the latest blueprint version for targeted update campaigns

Filtering by managed_by=TEMPLATE to locate devices still on legacy template management

Querying all locked-down devices by group for compliance auditing

**Best Practices**

Prefer this endpoint over /api/device/v0/devices/ for all new integrations

Use platform as a CSV list (e.g., ANDROID,APPLE) to query multiple platforms in one call

For Foundry OS fleet management, use foundation_version or the granular foundation_major_version, foundation_minor_version, foundation_build_number filters

**Workflow**

Choose filters appropriate to the use case (group, platform, blueprint version, policy, etc.)

Call with limit and offset for pagination

Iterate results, using next for subsequent pages; branch on the platform field to handle per-platform schema differences

## Query parameters

- `limit` integer
- `offset` integer
- `cursor` string
- `ordering` 'alias' | 'created_at' | 'last_seen' | 'model' | 'os_version' | 'name' | 'serial' | 'provisioned_on' | 'battery_level' | 'dpc_version' | 'eea_version' | 'is_gms' | 'security_state' | 'wifi_ssid' | 'platform' | 'template_name' | 'policy_name' | 'state'
- `serial` string
- `udid` string
- `android_version` string
- `ios_version` string
- `ipados_version` string
- `tvos_version` string
- `windows_version` string
- `state` string
- `battery_level_gte` string
- `battery_level_lte` string
- `is_gms` boolean
- `active_connection` string
- `group_multi` string, uuid
- `group_multi_immediate` string, uuid
- `assigned_blueprint_id` string, uuid
- `current_blueprint_id` string, uuid
- `current_blueprint_version_id` string, uuid
- `current_blueprint_version_id_net` string, uuid
- `platform` string
- `os` 'iOS' | 'iPadOS' | 'tvOS' | 'Android' | 'Linux' | 'Windows'
- `device_source` string
- `managed_by` 'BLUEPRINT' | 'TEMPLATE'
- `template_multi` string
- `policy_multi` string
- `search` string
- `foundation_device_model_id` string, uuid
- `android_version_exact` string
- `foundation_major_version` integer
- `foundation_minor_version` integer
- `foundation_build_number` integer
- `airwave_tenant_model_id` string
- `airwave_build_id` string
- `airwave_build_number` integer
- `foundation_version` string
- `esper_agent_version_name` string
- `tags` string
- `is_locked_down` boolean
- `global_device_id` string
- `ungrouped_only` boolean
- `fields` string

## Response `200`

Device information for the Tenant.
Response format depends on pagination type used:
- **Offset-based**: Returns `count`, `prev`, `next` (URLs), `results`
- **Cursor-based**: Returns `results`, `next_cursor`, `prev_cursor`

- object
  - `content` union
    - DeviceOffsetPaginatedDeviceList — Response format for offset-based pagination
      - `count` integer — Total number of devices matching the query
      - `previous` string, nullable — URL to the previous page of results
      - `next` string, nullable — URL to the next page of results
      - `results` union[]
        - union
          - DeviceAndroidDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'Android' — Operating system for the device
            - `state` 0 | 1 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 | 180 | 190 | 200 — The following are the device states and their descriptions: ``` * 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 = Device is Registered ```
            - `platform` 'ANDROID' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceHardwareInfo
              - …
            - `software_info` DeviceSoftwareInfo
              - …
            - `network_info` DeviceNetworkInfo
              - …
            - `memory_info` DeviceMemoryInfo
              - …
            - `network_stats` DeviceNetworkStatsV2
              - …
            - `location_stats` DeviceLocationStats
              - …
            - `memory_stats` DeviceMemoryStats
              - …
            - `blueprint_info` DeviceBlueprintInfo
              - …
            - `battery_stats` object
              - …
            - `mqtt_topic` string — MQTT topic
            - `fcm_id` string
            - `is_gms` boolean
            - `dpc_version` string, nullable — DPC (Device Policy Controller) version / Esper agent version name
            - `eea_version` string, nullable — EEA (Esper Enterprise Android) version
            - `policy` object, nullable — Policy associated with the device
              - …
            - `managed_by` 'BLUEPRINT' | 'TEMPLATE' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' | 'TEMPLATE' — Whether the device was provisioned with blueprint or template
            - `template_name` string, nullable — Name of the template the device is managed by
            - `is_seamless` boolean
            - `is_esper_managed` boolean, nullable — Indicates if the device is Esper managed
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
          - DeviceAppleDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'iOS' | 'iPadOS' | 'tvOS' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 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 * 200 = Device is Registered ```
            - `platform` 'APPLE' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceHardwareInfo
              - …
            - `software_info` DeviceSoftwareInfo
              - …
            - `network_info` DeviceNetworkInfo
              - …
            - `memory_info` DeviceMemoryInfo
              - …
            - `blueprint_info` DeviceBlueprintInfo
              - …
            - `udid` string — UDID as provided by apple
            - `dep_profile` string — DEP profile applied to device
            - `dep_profile_push_time` string, date-time
            - `dep_profile_assign_time` string, date-time
            - `dep_profile_status` 'empty' | 'assigned' | 'pushed' | 'removed' — DEP profile applied to device
            - `enrolment_info` object
              - …
            - `last_seen` string, date-time
            - `tokens` object
              - …
            - `is_supervised` boolean
            - `device_source` 'ABM' | 'NON_ABM' — Source of device onboarding
            - `managed_by` 'BLUEPRINT' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `provisioned_on` string, date-time
            - `is_seamless` boolean
            - `is_locked_down` boolean
            - `is_ddm_enabled` boolean — Whether Declarative Device Management is enabled for this device
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `memory_stats` object
              - …
            - `battery_stats` object
              - …
            - `updated_at` string, date-time
          - DeviceLinuxDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'ubuntu' | 'Ubuntu' | 'Linux' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 70 = Device Wipe in Progress * 80 = Device Onboarding in Progress * 90 = Device Onboarding Failed * 100 = Device Onboarded in Esper * 200 = Device is Registered ```
            - `platform` 'LINUX' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` object
              - …
            - `software_info` object
              - …
            - `network_info` object
              - …
            - `memory_info` object
              - …
            - `network_stats` object
              - …
            - `memory_stats` object
              - …
            - `cpu_stats` object
              - …
            - `battery_stats` object
              - …
            - `location_stats` object
              - …
            - `blueprint_info` DeviceLinuxBlueprintInfo
              - …
            - `managed_by` 'BLUEPRINT' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `is_seamless` boolean
            - `last_seen` string, date-time
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
          - DeviceWindowsDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'Windows' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 70 = Device Wipe in Progress * 80 = Device Onboarding in Progress * 90 = Device Onboarding Failed * 100 = Device Onboarded in Esper * 200 = Device is Registered ```
            - `platform` 'WINDOWS' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Windows generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceWindowsHardwareInfo
              - …
            - `software_info` DeviceWindowsSoftwareInfo
              - …
            - `network_info` DeviceWindowsNetworkInfo
              - …
            - `memory_info` DeviceWindowsMemoryInfo
              - …
            - `network_stats` object
              - …
            - `memory_stats` object
              - …
            - `cpu_stats` object
              - …
            - `last_seen` string, date-time — Last time the device was seen
            - `blueprint_info` DeviceWindowsBlueprintInfo
              - …
            - `battery_stats` object
              - …
            - `background_scripts_stats` object — Telemetry for Windows background scripts; object keys are background script UUIDs
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `is_seamless` boolean
            - `windows_config` object
              - …
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
    - DeviceCursorPaginatedDeviceList — Response format for cursor-based pagination
      - `results` union[]
        - union
          - DeviceAndroidDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'Android' — Operating system for the device
            - `state` 0 | 1 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 | 180 | 190 | 200 — The following are the device states and their descriptions: ``` * 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 = Device is Registered ```
            - `platform` 'ANDROID' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceHardwareInfo
              - …
            - `software_info` DeviceSoftwareInfo
              - …
            - `network_info` DeviceNetworkInfo
              - …
            - `memory_info` DeviceMemoryInfo
              - …
            - `network_stats` DeviceNetworkStatsV2
              - …
            - `location_stats` DeviceLocationStats
              - …
            - `memory_stats` DeviceMemoryStats
              - …
            - `blueprint_info` DeviceBlueprintInfo
              - …
            - `battery_stats` object
              - …
            - `mqtt_topic` string — MQTT topic
            - `fcm_id` string
            - `is_gms` boolean
            - `dpc_version` string, nullable — DPC (Device Policy Controller) version / Esper agent version name
            - `eea_version` string, nullable — EEA (Esper Enterprise Android) version
            - `policy` object, nullable — Policy associated with the device
              - …
            - `managed_by` 'BLUEPRINT' | 'TEMPLATE' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' | 'TEMPLATE' — Whether the device was provisioned with blueprint or template
            - `template_name` string, nullable — Name of the template the device is managed by
            - `is_seamless` boolean
            - `is_esper_managed` boolean, nullable — Indicates if the device is Esper managed
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
          - DeviceAppleDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'iOS' | 'iPadOS' | 'tvOS' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 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 * 200 = Device is Registered ```
            - `platform` 'APPLE' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceHardwareInfo
              - …
            - `software_info` DeviceSoftwareInfo
              - …
            - `network_info` DeviceNetworkInfo
              - …
            - `memory_info` DeviceMemoryInfo
              - …
            - `blueprint_info` DeviceBlueprintInfo
              - …
            - `udid` string — UDID as provided by apple
            - `dep_profile` string — DEP profile applied to device
            - `dep_profile_push_time` string, date-time
            - `dep_profile_assign_time` string, date-time
            - `dep_profile_status` 'empty' | 'assigned' | 'pushed' | 'removed' — DEP profile applied to device
            - `enrolment_info` object
              - …
            - `last_seen` string, date-time
            - `tokens` object
              - …
            - `is_supervised` boolean
            - `device_source` 'ABM' | 'NON_ABM' — Source of device onboarding
            - `managed_by` 'BLUEPRINT' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `provisioned_on` string, date-time
            - `is_seamless` boolean
            - `is_locked_down` boolean
            - `is_ddm_enabled` boolean — Whether Declarative Device Management is enabled for this device
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `memory_stats` object
              - …
            - `battery_stats` object
              - …
            - `updated_at` string, date-time
          - DeviceLinuxDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'ubuntu' | 'Ubuntu' | 'Linux' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 70 = Device Wipe in Progress * 80 = Device Onboarding in Progress * 90 = Device Onboarding Failed * 100 = Device Onboarded in Esper * 200 = Device is Registered ```
            - `platform` 'LINUX' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Esper generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` object
              - …
            - `software_info` object
              - …
            - `network_info` object
              - …
            - `memory_info` object
              - …
            - `network_stats` object
              - …
            - `memory_stats` object
              - …
            - `cpu_stats` object
              - …
            - `battery_stats` object
              - …
            - `location_stats` object
              - …
            - `blueprint_info` DeviceLinuxBlueprintInfo
              - …
            - `managed_by` 'BLUEPRINT' — Whether the device is managed by blueprint or template
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `is_seamless` boolean
            - `last_seen` string, date-time
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
          - DeviceWindowsDeviceV2
            - `id` string, uuid
            - `name` string — Esper generated name for the device
            - `alias` string — Alias/alternate name for the device
            - `os` 'Windows' — Operating system for the device
            - `state` 0 | 1 | 20 | 70 | 80 | 90 | 100 | 200 — The following are the device states and their descriptions: ``` * 0 = Device State is Unspecified * 1 = Online/Active * 20 = Disabled (device has been factory reset or removed from the Esper Dashboard) * 70 = Device Wipe in Progress * 80 = Device Onboarding in Progress * 90 = Device Onboarding Failed * 100 = Device Onboarded in Esper * 200 = Device is Registered ```
            - `platform` 'WINDOWS' — Platform for the device
            - `serial` string — Serial number the device
            - `os_version` string — OS version the device
            - `global_device_id` string — Windows generated unique id for the device
            - `tenant_id` string, uuid
            - `group_id` string, uuid
            - `provisioned_on` string, date-time
            - `tags` string[] — Array of UUIDs representing tags associated with the device
            - `hardware_info` DeviceWindowsHardwareInfo
              - …
            - `software_info` DeviceWindowsSoftwareInfo
              - …
            - `network_info` DeviceWindowsNetworkInfo
              - …
            - `memory_info` DeviceWindowsMemoryInfo
              - …
            - `network_stats` object
              - …
            - `memory_stats` object
              - …
            - `cpu_stats` object
              - …
            - `last_seen` string, date-time — Last time the device was seen
            - `blueprint_info` DeviceWindowsBlueprintInfo
              - …
            - `battery_stats` object
              - …
            - `background_scripts_stats` object — Telemetry for Windows background scripts; object keys are background script UUIDs
            - `provisioned_with` 'BLUEPRINT' — Whether the device was provisioned with blueprint or template
            - `is_seamless` boolean
            - `windows_config` object
              - …
            - `app_mode_meta` union
              - …
            - `created_by` string
            - `updated_by` string
            - `created_at` string, date-time
            - `updated_at` string, date-time
      - `next_cursor` string, nullable — Opaque cursor token for fetching the next page. Null if no more results.
      - `prev_cursor` string, nullable — Opaque cursor token for navigating to the previous page. Pass this value as the `cursor` query parameter to paginate backward. Null when already on the first page.
      - `has_more` boolean — Indicates if there are more results after the current page
      - `has_prev` boolean — Indicates if there are results before the current page

## Other responses

- `400` — Bad Request.
- `401` — Authorization information is missing or invalid.
- `500` — Internal Server Error

---

[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)
