---
title: "Devices report"
method: GET
path: "/api/reports/devices"
tags: ["Reports"]
---

# Devices report

`GET /api/reports/devices`

## Request

- Base URL: `https://go.urbanairship.com`
- URL: `https://go.urbanairship.com/api/reports/devices`
- Auth: one of:
  - HTTP basic
  - HTTP bearer
  - OAuth 2
    - Client credentials
    - Token URL: `http://oauth2.{domain}.com/token` scopes: `rpt`
- TypeScript: <https://skmtc.dev/airship/apis/airship-api/docs/api/reports/devices/get.ts> (a function with typed inputs; its response is checked against the schema)

Get an app's opted-in and installed device counts by device type.

## Query parameters

- `date` string, date-time, required

## Response `200`

Returned on success, with the JSON representation of the device counts in the body of the response.

- object: The response body for the device report.
  - `counts` object: The counts for each device type.
    - `amazon` DeviceCountObject: The count object for a device type.
      - `opted_in` integer: Opted in to receiving push notifications.
      - `opted_out` integer: Opted out of receiving push notifications.
      - `uninstalled` integer: Devices for which Reports has seen an uninstall event.
      - `unique_devices` integer: Devices considered by Airship Reports to have the app installed.
    - `android` DeviceCountObject: The count object for a device type.
      - `opted_in` integer: Opted in to receiving push notifications.
      - `opted_out` integer: Opted out of receiving push notifications.
      - `uninstalled` integer: Devices for which Reports has seen an uninstall event.
      - `unique_devices` integer: Devices considered by Airship Reports to have the app installed.
    - `ios` DeviceCountObject: The count object for a device type.
      - `opted_in` integer: Opted in to receiving push notifications.
      - `opted_out` integer: Opted out of receiving push notifications.
      - `uninstalled` integer: Devices for which Reports has seen an uninstall event.
      - `unique_devices` integer: Devices considered by Airship Reports to have the app installed.
  - `date_closed` string, date-time: All device events counted occurred before this [date-time](/developer/rest-api/ua/introduction/#date-time-format).
  - `date_computed` string, date-time: The [date-time](/developer/rest-api/ua/introduction/#date-time-format) the device event data was tallied and stored.
  - `total_unique_devices` integer: Sum of the unique devices for every device type.

## Other responses

- `400`: There was a parsing or validation error in the request. Bad Request errors typically include `path` and `location` in the response to help you find the cause of the error.
- `401`: Authentication information (the app key and secret or bearer token) was either incorrect or missing.
- `403`: Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.

## Changes

- **2025-08-28** `3304568aaadc`: 2 breaking
  - the `query` request parameter `date` became required
  - for the `query` request parameter `date`, the format changed from no format to `date-time`
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/airship/apis/airship-api/changes/api/reports/devices/get.md)

---

[API](https://skmtc.dev/airship/apis/airship-api.md) - [All operations](https://skmtc.dev/airship/apis/airship-api/llms.txt) - [OpenAPI document](https://skmtc.dev/airship/apis/airship-api/revisions/bd6ab947117a?raw)
