---
title: "List screens"
method: GET
path: "/v1/screens"
tags: ["screens"]
---

# List screens

`GET /v1/screens`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/screens`
- Auth: HTTP bearer

List the screens in your workspace, including each screen's organization node, assigned content, online status, and player settings. Pass `limit` (and optionally `cursor`) to page through results; without `limit`, the full list is returned. Results are limited to the organization nodes you can see.

**Notes.**
- The `state` object is a lean subset here (connection, currentContent, cache, proof, sync, telemetry.identity/display); GET /v1/screens/{id} returns the full snapshot.
- `nextCursor` is a screen id (keyset by id), not the base64 cursor the shared resource routes use.

## Query parameters

- `limit` integer
- `cursor` string
- `q` string
- `nodeId` string

## Response `200`

Success.

- object
  - `data` Screen[], required
    - `id` string, required: Screen id.
    - `spaceId` string, required: Workspace id.
    - `nodeId` string, nullable, required: Location (org node) the screen belongs to; null = workspace root.
    - `name` string, required
    - `status` 'online' | 'offline' | 'pairing', required: `pairing` = no device has checked in yet.
    - `lastSeenAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `coreUpdateOfferedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `contentKind` 'playlist' | 'schedule' | 'layout' | 'creative' | 'app' | 'media' | 'signage', nullable, required: What is assigned. Null = nothing assigned.
    - `contentId` string, nullable, required
    - `contentFit` unknown, required
    - `deactivatedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `awaitingPaymentAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `tags` string[], required
    - `rotation` integer, required: 0, 90, 180 or 270 degrees.
    - `rotationCommandedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `timezone` string, nullable, required: IANA time zone; null = inherited.
    - `timezoneSource` 'operator' | 'device', nullable, required
    - `operatingHours` string, required: `default`, or a JSON-encoded weekly window.
    - `lastPanelCommand` string, nullable, required
    - `scheduleScreensOff` boolean, required
    - `displayPowerMode` 'always-on' | 'follow-schedule' | 'os-default', required
    - `playbackMode` 'sync' | 'unsync' | 'device-time', required
    - `locationLabel` string, nullable, required
    - `locationLat` number, nullable, required
    - `locationLng` number, nullable, required
    - `ipCity` string, nullable, required
    - `ipRegion` string, nullable, required
    - `ipCountry` string, nullable, required
    - `ipLat` number, nullable, required
    - `ipLng` number, nullable, required
    - `ipTimezone` string, nullable, required
    - `ipGeoAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `playerSettings` string, nullable, required: Player settings as a JSON-ENCODED string (not an object).
    - `kioskEnabled` boolean, required
    - `kioskPinMode` 'workspace' | 'custom', required
    - `kioskGraceSeconds` integer, required
    - `activeEmergencyId` string, nullable, required: The live emergency overriding this screen, if any.
    - `activeCastId` string, nullable, required: The live cast overriding this screen, if any.
    - `playerVersionHold` string, nullable, required
    - `sealed` boolean, required
    - `sealedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `powerPolicyId` string, nullable, required
    - `importSourceId` string, nullable, required
    - `billingGroupId` string, nullable, required
    - `customFields` string, nullable, required: Custom fields as a JSON-ENCODED string.
    - `lanSecretAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `createdAt` string, required: ISO-8601 timestamp (UTC).
    - `updatedAt` string, required: ISO-8601 timestamp (UTC).
    - `deletedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `location` object, nullable, required
      - `label` string, required
      - `lat` number, required
      - `lng` number, required
    - `deviceClaimed` boolean, required: Status is `pairing` but a device has claimed it and not yet checked in.
    - `nodeName` string, nullable, required
    - `groupIds` string[], required: Screen groups this screen is in.
    - `contentName` string, nullable, required
    - `contentSharedFrom` string, nullable, required: Name of the workspace that shared the assigned content in; null when it is this workspace's own.
    - `thumbnailUrl` string, nullable, required: Preview of the assigned content.
    - `contentAppKey` string, nullable, required
    - `contentMediaKind` string, nullable, required
    - `contentState` object, nullable, required: Assigned media that is not playable yet (processing, failed, needs_action); null otherwise.
      - `state` string, required
      - `reason` string, nullable, required
    - `contentOrientation` 'portrait' | 'landscape' | 'adaptive', nullable, required
    - `liveThumbnailAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `liveThumbnailFreshAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `currentContentKind` 'image' | 'video' | 'stream', nullable, required
    - `currentContentPosterUrl` string, nullable, required
    - `emergencyHeadline` string, nullable, required
    - `castHeadline` string, nullable, required
    - `castStartedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `castExpiresAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `castContentKind` string, nullable, required
    - `castContentId` string, nullable, required
    - `kioskHasCustomPin` boolean, required
    - `kioskHasRecovery` boolean, required
    - `obscuredSince` string, nullable, required: ISO-8601 timestamp (UTC).
    - `pixelHealth` 'ok' | 'frozen' | 'blank', nullable, required
    - `displayOffSince` string, nullable, required: ISO-8601 timestamp (UTC).
    - `displayOffReason` 'standby' | 'wrong-input' | 'disconnected' | 'input-unconfirmed', nullable, required
    - `expectedDark` object, required
      - `dark` boolean, required: True when the rules say the panel should be off now.
      - `reason` 'schedule-block' | 'power-policy' | 'operating-hours', nullable, required
      - `nextOpen` object, nullable, required
        - `at` string, required
        - `day` string, required
        - `inMinutes` number, required
      - `minutesSinceOpen` number, nullable, required
      - `minutesSinceClose` number, nullable, required
    - `accountHold` object, nullable, required
      - `status` 'suspended' | 'cancelled' | 'deactivated' | 'trial_expired' | 'awaiting_payment', required
      - `reason` string, required
    - `outageSummary30d` object, nullable, required
      - `windowDays` integer, required
      - `count` integer, required
      - `topCause` string, nullable, required
      - `topCauseShare` number, required
      - `hedgedShare` number, required
      - `lastCause` object, nullable, required
        - `cause` string, required: Outage cause key, e.g. `wifi-dropped`, `power-loss`, `unknown`.
        - `confident` boolean, required
      - `lastKnownCause` object, nullable, required
        - `cause` string, required: Outage cause key, e.g. `wifi-dropped`, `power-loss`, `unknown`.
        - `confident` boolean, required
      - `insight` string, nullable, required
    - `linkFlaps10m` integer: Socket link flips in the last ten minutes; present only when > 0 (list and get).
    - `state` object, nullable, required: The device's last reported state (`updatedAt` plus the heartbeat snapshot). The list returns a lean subset; get and PATCH return it all. Null before the first heartbeat.
  - `nextCursor` string, nullable: Present only when `limit` was passed; null on the last page.

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `403`: The token lacks the permission this operation needs (see `x-brix-permission`).
- `5XX`: Server error. The body carries a `requestId` to quote to support.

## Changes

- **2026-10-20** `02fd3665dc7d`: 1 warning, 1 info
  - added the new `awaiting_payment` enum value to the `data/items/accountHold/anyOf[subschema #1]/status` response property for the response status `200`
  - added the required property `data/items/awaitingPaymentAt` to the response with the `200` status

[Operation history](https://skmtc.dev/brixsignage/apis/brix-api/changes/v1/screens/get.md)

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
