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

# List

> List devices.

| Scope          | Required |
| -------------- | -------- |
| `devices:read` | Yes      |


## OpenAPI

````yaml /references/platform-api/2026-03-09.yaml get /devices
openapi: 3.0.3
info:
  title: Miru Platform API
  description: The API between Miru and any external client
  version: 2026-03-09.tetons
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  x-release-version: 2026-03-09.tetons
  x-git-commit:
    sha: a33cf62e35e950971e3c223d746ae8e4e6464442
    url: >-
      https://github.com/mirurobotics/openapi/commit/a33cf62e35e950971e3c223d746ae8e4e6464442
    message: |-
      refactor(stainless): rename config instance content method to download

      Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    author: Benjamin Smidt
    branch: HEAD
    dirty: false
  x-build:
    built_at: '2026-03-08T22:30:32.695898+00:00'
servers:
  - url: https://api.mirurobotics.com/beta
    description: Miru Platform API
security:
  - ApiKeyAuth: []
paths:
  /devices:
    parameters:
      - $ref: '#/components/parameters/MiruVersion'
    get:
      tags:
        - Devices
      summary: List
      description: List devices.
      operationId: listDevices
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/device_order_bys'
        - $ref: '#/components/parameters/device_list_expansions'
        - $ref: '#/components/parameters/device_search_id'
        - $ref: '#/components/parameters/device_search_name'
        - $ref: '#/components/parameters/device_search_agent_version'
      responses:
        '200':
          description: Successfully listed the devices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceList'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from miru_platform_sdk import Miru

            client = Miru(
                api_key=os.environ.get("MIRU_API_KEY"),  # This is the default and can be omitted
            )
            device_list = client.devices.list()
            print(device_list)
components:
  parameters:
    MiruVersion:
      name: Miru-Version
      in: header
      required: true
      schema:
        type: string
        example: 2026-03-09.tetons
      description: The API version the client was built against.
    offset:
      name: offset
      in: query
      required: false
      description: >-
        The offset of the items to return. An offset of 10 with a limit of 10
        returns items 11-20.
      schema:
        type: integer
        default: 0
        minimum: 0
        example: 0
    limit:
      name: limit
      in: query
      required: false
      description: >-
        The maximum number of items to return. A limit of 15 with an offset of 0
        returns items 1-15.
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 100
        example: 10
    device_order_bys:
      name: order_by
      in: query
      required: false
      style: form
      explode: false
      description: Sort order for the device results.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/DeviceOrderBy'
        example:
          - created_at:desc
    device_list_expansions:
      name: expand
      in: query
      required: false
      description: Fields to expand on each device in the list.
      x-miru-example-exempt: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/DeviceListExpansion'
    device_search_id:
      name: id
      in: query
      required: false
      style: form
      explode: false
      description: The device IDs to filter by.
      schema:
        type: array
        items:
          type: string
        example:
          - dev_123
    device_search_name:
      name: name
      in: query
      required: false
      style: form
      explode: false
      description: The device names to filter by.
      schema:
        type: array
        items:
          type: string
        example:
          - My Device
    device_search_agent_version:
      name: agent_version
      in: query
      required: false
      style: form
      explode: false
      description: The agent versions to filter by.
      schema:
        type: array
        items:
          type: string
        example:
          - v1.0.0
  schemas:
    DeviceList:
      allOf:
        - $ref: '#/components/schemas/PaginatedList'
        - type: object
          required:
            - data
          properties:
            data:
              description: The list of devices.
              type: array
              items:
                $ref: '#/components/schemas/Device'
    DeviceOrderBy:
      type: string
      enum:
        - id:asc
        - id:desc
        - created_at:desc
        - created_at:asc
      x-enum-varnames:
        - DEVICE_ORDER_BY_ID_ASC
        - DEVICE_ORDER_BY_ID_DESC
        - DEVICE_ORDER_BY_CREATED_AT_DESC
        - DEVICE_ORDER_BY_CREATED_AT_ASC
      default: created_at:desc
    DeviceListExpansion:
      type: string
      enum:
        - total_count
      x-enum-varnames:
        - DEVICE_LIST_EXPAND_TOTAL_COUNT
    PaginatedList:
      title: Paginated List
      type: object
      required:
        - object
        - limit
        - offset
        - has_more
      properties:
        object:
          type: string
          enum:
            - list
          example: list
          x-stainless-const: true
          description: The object type, which is always `list`.
        total_count:
          type: integer
          format: int64
          description: >-
            The total number of items in the list. By default the total count is
            not returned. The total count must be expanded (using
            expand=total_count) to get the total number of items in the list.
        limit:
          type: integer
          description: >-
            The maximum number of items to return. A limit of 15 with an offset
            of 0 returns items 1-15.
          default: 10
          minimum: 1
          maximum: 100
        offset:
          type: integer
          description: >-
            The offset of the items to return. An offset of 10 with a limit of
            10 returns items 11-20.
          default: 0
          minimum: 0
        has_more:
          type: boolean
          description: >-
            True if there are more items in the list to return. False if there
            are no more items to return.
          example: false
    Device:
      allOf:
        - $ref: '#/components/schemas/BaseDevice'
      example:
        object: device
        id: dvc_123
        name: My Device
        status: online
        agent_version: v1.0.0
        last_connected_at: '2021-01-01T00:00:00Z'
        last_disconnected_at: null
        created_at: '2021-01-01T00:00:00Z'
        updated_at: '2021-01-01T00:00:00Z'
    BaseDevice:
      title: Base Device
      type: object
      required:
        - object
        - id
        - name
        - status
        - agent_version
        - last_connected_at
        - last_disconnected_at
        - created_at
        - updated_at
      properties:
        object:
          type: string
          enum:
            - device
          example: device
          x-stainless-const: true
          description: The object type, which is always `device`.
        id:
          type: string
          example: dvc_123
          description: ID of the device.
        name:
          type: string
          example: My Device
          description: Name of the device.
        status:
          $ref: '#/components/schemas/DeviceStatus'
        agent_version:
          type: string
          example: v1.0.0
          description: The version of the agent the device is running.
          nullable: true
        last_connected_at:
          type: string
          format: date-time
          example: '2021-01-01T00:00:00Z'
          nullable: true
          description: >-
            Timestamp of when the device was last made an initial connection
            (this is not the same as the last time the device was seen).
        last_disconnected_at:
          type: string
          format: date-time
          example: '2021-01-01T00:00:00Z'
          nullable: true
          description: >-
            Timestamp of when the device was last disconnected (this is not the
            same as the last time the device was seen).
        created_at:
          type: string
          format: date-time
          example: '2021-01-01T00:00:00Z'
          description: Timestamp of when the device was created.
        updated_at:
          type: string
          format: date-time
          example: '2021-01-01T00:00:00Z'
          description: Timestamp of when the device was last updated.
    DeviceStatus:
      type: string
      description: >
        The status of the device.

        - Inactive: The miru agent has not yet been installed / authenticated

        - Activating: The miru agent is currently being installed /
        authenticated (should only last for a few seconds)

        - Online: The miru agent has successfully pinged the server within the
        last 60 seconds.

        - Offline: The miru agent has not successfully pinged the server within
        the last 60 seconds (e.g. network issues, device is powered off, etc.)
      enum:
        - inactive
        - activating
        - online
        - offline
      x-enum-varnames:
        - DEVICE_STATUS_INACTIVE
        - DEVICE_STATUS_ACTIVATING
        - DEVICE_STATUS_ONLINE
        - DEVICE_STATUS_OFFLINE
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: The API key to use for authentication.

````