---
title: "Search devices for multiple apps"
method: POST
path: "/api/v1/org/{orgId}/perch/status"
tags: ["Perch"]
---

# Search devices for multiple apps

`POST /api/v1/org/{orgId}/perch/status`

## Search Devices

Searches for devices matching the provided application IDs within the specified organization.

This endpoint accepts a `SearchDevicesRequest` with a `queryAppIds` filter to retrieve the status of cloud-based security scan infrastructure for multiple applications in a single request. All requested application IDs must belong to the specified organization.

### Request

Provide a `SearchDevicesRequest` body with a `queryAppIds` filter in the `page.filters` field. If no `queryAppIds` filter is provided, the endpoint returns an empty response.

### Response



| Parameter | Default | Description |
|:---:|:---:|:---:|
|perchDevices|[]||
|totalCount|0||
|pageInfo|{}||

### Errors

- **403 Forbidden**: One or more application IDs do not belong to the specified organization.
- **404 Not Found**: Organization not found or user doesn't have access.


> Requires `read:device` permission.

## Path parameters

- `orgId` string, uuid, required

## Request body

- PerchSearchDevicesRequest
  - `orgId` string
  - `page` PaginationPage
    - `filters` PaginationFilter[] — Generic filters that each type can define for its needs (isConnected=true, hasMapping=false, etc)
      - `multi` PaginationMultiValue
        - `values` string[] — The values of a given filter to filter on.
      - `name` string — The name of the filter to apply.
      - `value` string — A single value to filter on.
    - `number` integer — The page number to retrieve - 0 based
    - `query` string — The query string to filter the results.
    - `size` integer — the page size to retrieve.
    - `sortOptions` PaginationSortOptions
      - `direction` 'ASC' | 'DESC' | 'UNSORTED' — The direction to sort the results.
      - `field` string — Generic here, each type should define its own Enums + Converters

## Response `200`

OK

- PerchSearchDevicesResponse
  - `pageInfo` PaginationPageInfo
    - `hasNext` boolean — Whether or not there is a next page.
    - `hasPrev` boolean — Whether or not there is a previous page.
    - `nextPage` PaginationPage
      - `filters` PaginationFilter[] — Generic filters that each type can define for its needs (isConnected=true, hasMapping=false, etc)
        - `multi` PaginationMultiValue
          - `values` string[] — The values of a given filter to filter on.
        - `name` string — The name of the filter to apply.
        - `value` string — A single value to filter on.
      - `number` integer — The page number to retrieve - 0 based
      - `query` string — The query string to filter the results.
      - `size` integer — the page size to retrieve.
      - `sortOptions` PaginationSortOptions
        - `direction` 'ASC' | 'DESC' | 'UNSORTED' — The direction to sort the results.
        - `field` string — Generic here, each type should define its own Enums + Converters
    - `prevPage` PaginationPage
      - `filters` PaginationFilter[] — Generic filters that each type can define for its needs (isConnected=true, hasMapping=false, etc)
        - `multi` PaginationMultiValue
          - `values` string[] — The values of a given filter to filter on.
        - `name` string — The name of the filter to apply.
        - `value` string — A single value to filter on.
      - `number` integer — The page number to retrieve - 0 based
      - `query` string — The query string to filter the results.
      - `size` integer — the page size to retrieve.
      - `sortOptions` PaginationSortOptions
        - `direction` 'ASC' | 'DESC' | 'UNSORTED' — The direction to sort the results.
        - `field` string — Generic here, each type should define its own Enums + Converters
    - `totalCount` integer — The total number of results.
  - `perchDevices` PerchPerchDevice[]
    - `applicationId` string
    - `command` PerchPerchCommand
      - `command` 'NOOP' | 'SCAN_START' | 'SCAN_STOP' | 'RESCAN_START' | 'SCREENR_START_BROWSER' | 'SCREENR_START_MCP' | 'SCREENR_START_SCREENR' | 'SCREENR_START_AUTH_ANALYSIS' | 'SCREENR_EXPORT_SESSION' | 'SCREENR_STOP' | 'CONFIG_VALIDATE' | 'AUTH_VALIDATE'
      - `config` string
      - `errors` PerchPerchError[]
        - `errorType` 'UNKNOWN' | 'AUTHENTICATION' | 'PROVISIONING' | 'DEVICE'
        - `message` string
      - `id` string
      - `name` string
    - `configValidationResult` PerchConfigValidationResult
      - `errors` string[]
      - `fieldErrors` PerchValidationFieldError[]
        - `fieldName` string
        - `jsonPath` string
        - `message` string
      - `message` string
      - `success` boolean
    - `createdDate` integer
    - `deviceAddress` string
    - `id` string
    - `name` string
    - `orgId` string
    - `podType` 'HAWKSCAN' | 'SCREENR' | 'PROFILE' | 'CONFIG_VALIDATION' | 'SCAN'
    - `scanId` string
    - `status` string
    - `updatedDate` integer
    - `userId` string
  - `totalCount` integer

## Other responses

- `400` — Bad Request
- `401` — Unauthorized

---

[API](https://skmtc.dev/stackhawk/apis/stackhawk-public-api.md) · [All operations](https://skmtc.dev/stackhawk/apis/stackhawk-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stackhawk/stackhawk-public-api/revisions/8252990ac9eb/schema)
