---
title: "Preview what a screen would play"
method: GET
path: "/v1/screens/{id}/preview"
tags: ["screens"]
---

# Preview what a screen would play

`GET /v1/screens/{id}/preview`

## Request

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

Preview what a screen would play at a given time, without affecting the actual device. Pass `at` as an ISO timestamp to preview a different time; it defaults to now.

**Notes.**
- `data` is the player manifest. Content blocks are open objects in the player's own format; `v` versions it.

## Path parameters

- `id` string, required

## Query parameters

- `at` string

## Response `200`

Success.

- object
  - `data` ManifestPreview, required: What the screen would play: the player manifest, built as the device would receive it.
    - `v` integer, required: Manifest format version.
    - `screen` object, required
      - `id` string, required
      - `name` string, required
      - `rotation` integer, required
      - `tags` string[], required
    - `generatedAt` string, required: ISO-8601 timestamp (UTC).
    - `minPlayerVersion` string, required
    - `content` ManifestContentBlock, required: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
      - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
    - `standbyContent` ManifestContentBlock: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
      - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
    - `screensOff` boolean: True when the rules say the panel should be off now.
    - `operatingWindow` object, nullable: Weekly on-hours by weekday key (`mon`…`sun`), or null for always on.
      - `windows` object, required
      - `timeZone` string, nullable, required
    - `proofOfPlay` boolean
    - `dooh` boolean: True when the workspace has advertising on. Players ignore ad pods when this is false.
    - `playbackMode` 'sync' | 'unsync' | 'device-time', required
    - `clock` object
      - `timeZone` string, required
    - `language` string, required
    - `location` object, nullable, required
      - `label` string, required
      - `lat` number, required
      - `lng` number, required
    - `playerSettings` object, required: Effective player settings (volume, watermark, download policy, …).
    - `watermarkText` string, nullable
    - `accountHold` object: Present when the account is on hold: the screen shows a hold card, not content.
      - `status` string, required
      - `reason` string, required
    - `kiosk` object: Screen Lock. The device's PIN material is never returned here — only whether it is set.
      - `enabled` boolean, required
      - `graceSeconds` integer, required
      - `hasPin` boolean, required
      - `hasRecovery` boolean, required
    - `apkUpdatePolicy` object
      - `window` boolean, required
      - `hourLocal` integer, required
      - `forceAfterDays` integer, required
      - `windowMinutes` integer, required
      - `force` boolean, required
    - `apkUpdate` object
      - `version` string, required
      - `url` string, required
      - `sha256` string, required
      - `signature` string, nullable
    - `testMode` true
    - `testEligible` true
    - `mediaBenchClipUrl` string: A short public clip the player decodes off-screen for its media self-test. Absent unless configured.
    - `fonts` object[]
      - `family` string, required
      - `url` string, required
      - `weights` integer[], required
    - `upcomingBlocks` object[]: The next scheduled changes, so an offline device can pre-load them.
      - `activatesAt` string, required: ISO-8601 timestamp (UTC).
      - `content` ManifestContentBlock, required: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
        - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
      - `screensOff` boolean
    - `retiredMediaIds` string[]: Media this workspace deleted from its library in the last 30 days (newest first, at most 200). The device deletes its stored copies. Absent when there are none.
    - `nextRefreshAt` string: ISO-8601 timestamp (UTC).
    - `prestagedOverrides` object[]: Emergency templates pre-loaded on the device.
      - `id` string, required
      - `kind` 'emergency' | 'cast', required
      - `severity` 'info' | 'warning' | 'critical', required
      - `headline` string, required
      - `body` string, nullable, required
      - `content` ManifestContentBlock, required: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
        - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
      - `triggeredAt` string, nullable, required: ISO-8601 timestamp (UTC).
      - `expiresAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `cast` object
      - `id` string, required
      - `kind` 'emergency' | 'cast', required
      - `severity` 'info' | 'warning' | 'critical', required
      - `headline` string, required
      - `body` string, nullable, required
      - `content` ManifestContentBlock, required: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
        - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
      - `triggeredAt` string, nullable, required: ISO-8601 timestamp (UTC).
      - `expiresAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `emergency` object
      - `id` string, required
      - `kind` 'emergency' | 'cast', required
      - `severity` 'info' | 'warning' | 'critical', required
      - `headline` string, required
      - `body` string, nullable, required
      - `content` ManifestContentBlock, required: Resolved content: `kind` plus the fields for that kind (`media`, `playlist` + `items`, `app`, `layout` + `zones`, `creative`, `signage`). The inner shape is the player's format and grows with it.
        - `kind` 'none' | 'creative' | 'signage' | 'playlist' | 'app' | 'media' | 'layout', required
      - `triggeredAt` string, nullable, required: ISO-8601 timestamp (UTC).
      - `expiresAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `sealed` true
    - `brand` object
      - `partnerId` string, nullable, required
      - `productName` string, required
      - `logoUrl` string, nullable, required
      - `brandColor` string, required
      - `cmsHost` string, required
      - `supportEmail` string, required
      - `termsUrl` string, nullable, required
      - `privacyUrl` string, nullable, required
      - `isWhiteLabel` boolean, required

## 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.

---

[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)
