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

# Push Devices

> Find registered devices and inspect app-side integration state.

## Endpoints

* `GET /push/devices`
* `GET /push/devices/:id`

Filter devices by `app_id`, platform, environment, subscription state, or a
device/external ID search. Responses include permission state, SDK/app/OS
versions, registration presence, recent activity, contact linkage, and the
latest provider error without exposing APNs, FCM, or Web Push credentials.

Device initialization, provider registration, permission changes, login, tags,
and client events continue to use the app-facing Push API through the device
SDKs. These API-key routes are diagnostic and read-only.


## OpenAPI

````yaml api-reference/openapi.json GET /push/devices
openapi: 3.0.1
info:
  title: Sendrealm API
  description: >-
    API for email, push, audience resources, domains, campaign drafts,
    templates, events, topics, and automations
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.sendrealm.com
security:
  - bearerAuth: []
paths:
  /push/devices:
    get:
      summary: List push devices
      description: >-
        List redacted device registration and diagnostic state. Raw provider
        tokens are never returned.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/After'
        - name: app_id
          in: query
          schema:
            type: string
        - name: platform
          in: query
          schema:
            type: string
            enum:
              - android
              - ios
              - web
        - name: environment
          in: query
          schema:
            type: string
            enum:
              - production
              - development
        - name: subscribed
          in: query
          schema:
            type: boolean
        - name: search
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Push devices returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PushDevicesListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    Limit:
      name: limit
      in: query
      description: Maximum number of records to return. Defaults to 20.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    After:
      name: after
      in: query
      description: Opaque cursor from the previous page's metadata.next value.
      schema:
        type: string
  schemas:
    PushDevicesListResponse:
      type: object
      required:
        - status
        - data
        - metadata
      properties:
        status:
          type: integer
          description: HTTP response status code
        data:
          type: array
          items:
            $ref: '#/components/schemas/PushDevice'
        metadata:
          $ref: '#/components/schemas/PaginationMetadata'
    PushDevice:
      type: object
      required:
        - id
        - device_id
        - app_id
        - app_name
        - platform
        - environment
        - external_id
        - app_version
        - sdk_version
        - os_version
        - device_model
        - locale
        - region
        - permission_status
        - subscribed
        - registration_token_present
        - apns_environment
        - last_registration_at
        - last_active_at
        - last_provider_error
        - contact
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
        device_id:
          type: string
        app_id:
          type: string
          nullable: true
        app_name:
          type: string
          nullable: true
        platform:
          type: string
        environment:
          type: string
        external_id:
          type: string
          nullable: true
        app_version:
          type: string
          nullable: true
        sdk_version:
          type: string
          nullable: true
        os_version:
          type: string
          nullable: true
        device_model:
          type: string
          nullable: true
        locale:
          type: string
          nullable: true
        region:
          type: string
          nullable: true
        permission_status:
          type: string
          nullable: true
        subscribed:
          type: boolean
        registration_token_present:
          type: boolean
        apns_environment:
          type: string
          nullable: true
        last_registration_at:
          type: string
          format: date-time
          nullable: true
        last_active_at:
          type: string
          format: date-time
          nullable: true
        last_provider_error:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PushDeviceProviderError'
        contact:
          type: object
          required:
            - id
            - email
          properties:
            id:
              type: string
              format: uuid
            email:
              type: string
              format: email
              nullable: true
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    PaginationMetadata:
      type: object
      required:
        - total
        - items
        - limit
        - after
        - next
        - has_more
      properties:
        total:
          type: integer
        items:
          type: integer
        limit:
          type: integer
        after:
          type: string
          nullable: true
        next:
          type: string
          nullable: true
        has_more:
          type: boolean
    Error:
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: integer
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
            details:
              $ref: '#/components/schemas/JsonValue'
            issues:
              type: array
              items:
                $ref: '#/components/schemas/ValidationIssue'
    PushDeviceProviderError:
      type: object
      required:
        - code
        - message
        - occurred_at
      properties:
        code:
          type: string
        message:
          type: string
          nullable: true
        occurred_at:
          type: string
          format: date-time
          nullable: true
    JsonValue:
      oneOf:
        - type: string
          nullable: true
        - type: number
        - type: boolean
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
        - type: array
          items:
            $ref: '#/components/schemas/JsonValue'
    ValidationIssue:
      type: object
      required:
        - code
        - path
        - message
      properties:
        code:
          type: string
        path:
          type: string
          nullable: true
        message:
          type: string
  responses:
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````