---
title: "GET /v1/projects/{projectOrProductUID}/devices"
method: GET
path: "/v1/projects/{projectOrProductUID}/devices"
tags: ["device"]
---

# GET /v1/projects/{projectOrProductUID}/devices

`GET /v1/projects/{projectOrProductUID}/devices`

Get Devices of a Project

## Path parameters

- `projectOrProductUID` string, required

## Query parameters

- `pageSize` integer
- `pageNum` integer
- `deviceUID` string[]
- `tag` string[]
- `serialNumber` string[]
- `fleetUID` string[]
- `notecardFirmware` string[]
- `location` string[]
- `hostFirmware` string[]
- `productUID` string[]
- `sku` string[]

## Response `200`

List of Devices

- object
  - `devices` Device[], required
    - `best_id` string — The best ID for the device, preference for the serial number over device UID
    - `best_location` Location, nullable
      - `country` string, required
      - `latitude` number, double, required
      - `longitude` number, double, required
      - `name` string, required
      - `timezone` string, required
      - `when` string, required
    - `cellular_usage` SimUsage[]
      - `iccid` string — ICCID of the SIM card
      - `last_updated` integer — Time this usage information was last updated
      - `lifetime_used` integer — Total number of bytes used by SIM
      - `limit` integer — Limit in bytes of the SIMs current data plan
      - `used` integer — Bytes used on the SIMs current data plan
    - `contact` Contact, nullable
      - `email` string
      - `name` string
      - `organization` string
      - `role` string
    - `dfu` DFUEnv, nullable
      - `card` DFUState, nullable
        - `began` integer — The time when the DFU began
        - `crc32` integer — Used for image verification
        - `errors` integer — The number of consecutive errors the DFU process has encountered
        - `file` string — Firmware filename
        - `length` integer — Length of firmware file
        - `md5` string — Used for image verification
        - `mode` 'idle' | 'error' | 'downloading' | 'sideloading' | 'ready' | 'ready-retry' | 'updating' | 'completed' — * "idle" - nothing downloading or downloaded * "error" - halted and in the error state * "downloading" - transferring data from cloud to module * "sideloading" - transferring data via request to module * "ready" - DFU data is ready/verified and waiting on external storage * "ready-retry" - DFU data is ready/verified and retrying * "updating" - currently updating * "completed" - DFU is done successfully
        - `read` integer — The amount the notecard has read of the image from notehub
        - `retry` integer — Value of _fw_retry environment var at time of DFU initialization
        - `status` string — Status message
        - `type` 'card' | 'user'
        - `updated` integer — Last updated timestamp
        - `version` string — Last known version, which is generally a JSON object contained within the firmware image
      - `user` DFUState, nullable
        - `began` integer — The time when the DFU began
        - `crc32` integer — Used for image verification
        - `errors` integer — The number of consecutive errors the DFU process has encountered
        - `file` string — Firmware filename
        - `length` integer — Length of firmware file
        - `md5` string — Used for image verification
        - `mode` 'idle' | 'error' | 'downloading' | 'sideloading' | 'ready' | 'ready-retry' | 'updating' | 'completed' — * "idle" - nothing downloading or downloaded * "error" - halted and in the error state * "downloading" - transferring data from cloud to module * "sideloading" - transferring data via request to module * "ready" - DFU data is ready/verified and waiting on external storage * "ready-retry" - DFU data is ready/verified and retrying * "updating" - currently updating * "completed" - DFU is done successfully
        - `read` integer — The amount the notecard has read of the image from notehub
        - `retry` integer — Value of _fw_retry environment var at time of DFU initialization
        - `status` string — Status message
        - `type` 'card' | 'user'
        - `updated` integer — Last updated timestamp
        - `version` string — Last known version, which is generally a JSON object contained within the firmware image
    - `disabled` boolean
    - `firmware_host` string
    - `firmware_notecard` string
    - `fleet_uids` string[], required
    - `gps_location` Location, nullable
      - `country` string, required
      - `latitude` number, double, required
      - `longitude` number, double, required
      - `name` string, required
      - `timezone` string, required
      - `when` string, required
    - `last_activity` string, date-time, nullable
    - `product_uid` string, required
    - `provisioned` string, date-time, required
    - `serial_number` string
    - `sku` string
    - `temperature` number, double, required
    - `tower_info` object, nullable
      - `cell_id` integer
      - `lac` integer
      - `mcc` integer
      - `mnc` integer
    - `tower_location` Location, nullable
      - `country` string, required
      - `latitude` number, double, required
      - `longitude` number, double, required
      - `name` string, required
      - `timezone` string, required
      - `when` string, required
    - `triangulated_location` Location, nullable
      - `country` string, required
      - `latitude` number, double, required
      - `longitude` number, double, required
      - `name` string, required
      - `timezone` string, required
      - `when` string, required
    - `uid` string, required
    - `voltage` number, double, required
  - `has_more` boolean, required

## Other responses

- `default` — The response body in case of an API error.

---

[API](https://skmtc.net/notefile/apis/notehub-api.md) · [All operations](https://skmtc.net/notefile/apis/notehub-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/notefile/notehub-api/versions/9c5b2b63a991/schema)
