> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corbado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List devices for multiple users

> Returns a list of devices for multiple users at once



## OpenAPI

````yaml https://backendapi.cloud.corbado.io/v2/openapi.yaml post /devices
openapi: 3.0.3
info:
  version: 2.0.0
  title: Corbado Backend API
  description: >
    # Introduction

    This documentation gives an overview of all Corbado Backend API calls to
    implement passwordless authentication with Passkeys.
  contact:
    name: Corbado team
    email: support@corbado.com
    url: https://www.corbado.com
servers:
  - url: https://backendapi.corbado.io/v2
security:
  - basicAuth: []
  - bearerAuth: []
tags:
  - name: Users
    description: All API calls to manage users
  - name: Sessions
    description: All API calls to manage sessions
  - name: Challenges
    description: All API calls to manage challenges
  - name: Identifiers
    description: All API calls to manage login identifiers
  - name: Passkeys
    description: All API calls for passkey flows
  - name: SSO
    description: All API calls for SSO flows
  - name: AuthEvents
    description: All API calls to manage authentication events
  - name: PasskeyEvents
    description: All API calls to manage passkey events
  - name: ProjectConfig
    description: All API calls to manage project configurations
  - name: ConnectTokens
    description: All API calls to manage connectTokens
  - name: PasskeyChallenges
    description: All API calls to manage passkey challenges
  - name: WebhookEndpoints
    description: All API calls to manage webhook endpoints
  - name: PasswordManagers
    description: All API calls to manage password managers
  - name: ClientEnvs
    description: All API calls to manage client environments
  - name: Devices
    description: All API calls to manage devices
  - name: Exports
    description: All API calls to manage project export files
paths:
  /devices:
    post:
      tags:
        - Connect reads
      summary: List devices for multiple users
      description: Returns a list of devices for multiple users at once
      operationId: publicDeviceBatchList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectReadBackendDeviceBatchListReq'
      responses:
        '200':
          description: List of all devices for the provided users.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectReadBackendDeviceBatchList'
        '401':
          description: Authentication or API-key permission denied
        '403':
          description: Authentication or API-key permission denied
        default:
          description: Error
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    required:
                      - httpStatusCode
                      - message
                      - requestData
                      - runtime
                    properties:
                      httpStatusCode:
                        description: HTTP status code of operation
                        type: integer
                        format: int32
                      message:
                        type: string
                        example: OK
                      requestData:
                        description: >-
                          Data about the request itself, can be used for
                          debugging
                        type: object
                        required:
                          - requestID
                        properties:
                          requestID:
                            description: >-
                              Unique ID of request, you can provide your own
                              while making the request, if not the ID will be
                              randomly generated on server side
                            type: string
                            example: req-557...663
                          link:
                            description: Link to dashboard with details about request
                            type: string
                            example: >-
                              https://my.corbado.com/requests/req-xxxxxxxxxxxxxxxxxxx
                      runtime:
                        description: Runtime in seconds for this request
                        type: number
                        format: float
                        example: 0.06167686
                  - type: object
                    required:
                      - error
                    properties:
                      data:
                        type: object
                      error:
                        type: object
                        required:
                          - type
                        properties:
                          type:
                            description: Type of error
                            type: string
                          details:
                            description: Details of error
                            type: string
                          validation:
                            description: Validation errors per field
                            type: array
                            items:
                              type: object
                              required:
                                - field
                                - message
                              properties:
                                field:
                                  type: string
                                message:
                                  type: string
                          links:
                            description: Additional links to help understand the error
                            type: array
                            items:
                              type: string
      security:
        - basicAuth: []
        - bearerAuth: []
components:
  schemas:
    ConnectReadBackendDeviceBatchListReq:
      type: object
      required:
        - userIDs
      properties:
        userIDs:
          type: array
          items:
            type: string
          minItems: 1
          maxItems: 1000
          description: List of user IDs to fetch devices for
          example:
            - usr-4693224802260150919
            - usr-4693224802260150920
    ConnectReadBackendDeviceBatchList:
      type: object
      required:
        - devices
      properties:
        devices:
          type: array
          items:
            $ref: '#/components/schemas/ConnectReadBackendDevice'
    ConnectReadBackendDevice:
      type: object
      required:
        - id
        - userID
        - osName
        - classification
        - classificationScore
        - totalLoginCount
        - passkeyLoginsCompleted
        - abortedPKLoginsCompletedCount
        - abortedPKLoginsIncompleteCount
        - pureConventionalLoginsCompleted
        - pureConventionalLoginsIncomplete
        - completedAppendCount
        - abortedAppendCount
        - nativeAppInstalled
        - createdMs
        - clientEnvIDs
      properties:
        id:
          type: string
          description: Unique identifier of the device
          example: ndv-4693224802260150919
        userID:
          type: string
          description: ID of the user this device belongs to
          example: usr-4693224802260150919
        osName:
          type: string
          description: Operating system name
          example: iOS
        classification:
          type: string
          enum:
            - unclear
            - missing-pk-support
            - append-avoided
            - login-avoided
            - append-completed
            - login-completed
            - login-completed-repeated
            - login-completed-with-interruption
          description: Device classification based on passkey usage patterns
          x-enum-varnames:
            - ConnectReadBackendDevicePropertiesClassificationUnclear
            - ConnectReadBackendDevicePropertiesClassificationMissingpksupport
            - ConnectReadBackendDevicePropertiesClassificationAppendavoided
            - ConnectReadBackendDevicePropertiesClassificationLoginavoided
            - ConnectReadBackendDevicePropertiesClassificationAppendcompleted
            - ConnectReadBackendDevicePropertiesClassificationLogincompleted
            - >-
              ConnectReadBackendDevicePropertiesClassificationLogincompletedrepeated
            - >-
              ConnectReadBackendDevicePropertiesClassificationLogincompletedwithinterruption
        classificationScore:
          type: integer
          description: Calculated score based on classification and login frequency
          example: 75
        totalLoginCount:
          type: integer
        passkeyLoginsCompleted:
          type: integer
        abortedPKLoginsCompletedCount:
          type: integer
        abortedPKLoginsIncompleteCount:
          type: integer
        pureConventionalLoginsCompleted:
          type: integer
        pureConventionalLoginsIncomplete:
          type: integer
        completedAppendCount:
          type: integer
        abortedAppendCount:
          type: integer
        nativeAppInstalled:
          type: boolean
          description: Whether a native app client environment exists for this device
        createdMs:
          type: integer
          format: int64
          description: Timestamp when this device was calculated
        clientEnvIDs:
          type: array
          items:
            type: string
          description: List of client environment IDs grouped into this device
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >
        Basic authentication is used to authenticate requests to the Backend
        API. The username is the project ID and the password is the API secret.


        The project ID and API secret can be found in the [Developer
        Panel](https://app.corbado.com/settings/api-secrets).
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Use a raw versioned API key (corbado1_v2_<projectID>_<secret>), or the
        legacy base64 encoding of projectID:API-secret. Stored keys require the
        permission assigned to the endpoint in BAPI and must satisfy their
        expiry and IP restrictions. Project-derived internal credentials
        additionally require an allowed source IP.

````