ScreenCloud

ScreenCloud is a cloud digital signage platform that turns any screen into a managed display for content, dashboards, and apps. Its developer surface is the ScreenCloud Studio API - a single public GraphQL endpoint (bearer-token authenticated, region-specific, copied from the DEVELOPER tab in Studio) that lets you automate anything you can do in Studio by hand - pairing and managing screens, building playlists and channels, uploading media and files, casting content, installing and configuring signage apps, and exporting playback logs and QR metrics. ScreenCloud also runs a Developer Platform / App framework for building custom HTML/JavaScript signage apps that can be published (with approval) to the App Store. There is no documented public WebSocket API - the Studio API is request/response GraphQL over HTTPS.

6 APIs 0 Features
Digital SignageScreensContent ManagementGraphQLMediaPlaylistsDisplays

APIs

ScreenCloud Studio Screens API

GraphQL operations for managing screens - pair and depair devices (pairScreen, depairScreen), list and search screens (allScreens, screen, screenByDeviceId, searchScreen), organ...

ScreenCloud Studio Playlists API

GraphQL operations for building and maintaining playlists - the ordered sequences of content shown on screens. Create, update, and delete playlists (createPlaylist, updatePlayli...

ScreenCloud Studio Media and Files API

GraphQL operations for uploading and organizing the media library - images, videos, and documents. Create and manage files (createFile, updateFileById, deleteFileById) and folde...

ScreenCloud Studio Channels and Casts API

GraphQL operations for channels - the multi-zone layouts that compose playlists, apps, and media into a single screen experience - and for casting. Create, update, publish, and ...

ScreenCloud Studio Apps API

GraphQL operations for signage apps and their instances - list the app catalog and categories (allApps, allAppCategories, appBySlug), create and configure app instances (createA...

ScreenCloud Studio Playback Logs API

GraphQL operations for proof-of-play and engagement reporting - fetch and export what played on which screen and when (getPlaybackLogs, exportPlaybackLogs), query logs and scree...

Collections

GraphQL

ScreenCloud Studio API (GraphQL)

ScreenCloud is a cloud digital signage platform. Its documented public developer

GRAPHQL

Pricing Plans

Rate Limits

Screencloud Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
TrustCenter
TrustCenter
🔗
DomainSecurity
DomainSecurity
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
📝
SignUp
SignUp
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: ScreenCloud Studio API (GraphQL)
  version: '1.0'
  description: GraphQL operations for the ScreenCloud Studio API. Set graphqlEndpoint to the region-specific endpoint from
    Studio > Account Settings > DEVELOPER, and bearerToken to a token created on that same tab. All requests are HTTP POST
    with a GraphQL body.
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
variables:
- name: graphqlEndpoint
  value: https://studio.screencloud.com
  description: Region-specific Studio GraphQL endpoint copied from the DEVELOPER tab.
- name: bearerToken
  value: ''
  description: Studio API token (Account Settings > DEVELOPER > New Token).
items:
- info:
    name: Session
    type: folder
  items:
  - info:
      name: Connectivity test (currentOrgId)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { currentOrgId }"}'
    docs: Simplest query to confirm the endpoint and token work.
  - info:
      name: Current org and user
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { currentOrg { id name } currentUser { id email } }"}'
    docs: Returns the org and user the token is scoped to.
- info:
    name: Screens
    type: folder
  items:
  - info:
      name: List screens (allScreens)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { allScreens { id name deviceId } }"}'
    docs: Lists screens in the account.
  - info:
      name: Pair a screen (pairScreen)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($code: String!, $name: String, $spaceId: UUID) { pairScreen(pairingCode: $code, name: $name,
          spaceId: $spaceId) { id name deviceId } }","variables":{"code":"","name":"Lobby","spaceId":null}}'
    docs: Pairs a device using the pairing code shown on the screen.
  - info:
      name: Depair a screen (depairScreen)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($id: UUID!) { depairScreen(id: $id) { id } }","variables":{"id":""}}'
    docs: Unpairs a screen, freeing its license.
  - info:
      name: Assign playlist to screen (setScreenContentByPlaylistId)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($screenId: UUID!, $playlistId: UUID!) { setScreenContentByPlaylistId(screenId: $screenId,
          playlistId: $playlistId) { id } }","variables":{"screenId":"","playlistId":""}}'
    docs: Sets a screen to play a playlist.
  - info:
      name: Refresh screen (refreshScreen)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($id: UUID!) { refreshScreen(id: $id) { id } }","variables":{"id":""}}'
    docs: Forces a screen to reload its content.
- info:
    name: Playlists
    type: folder
  items:
  - info:
      name: List playlists (allPlaylists)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { allPlaylists { id name isPublished } }"}'
    docs: Lists playlists in the account.
  - info:
      name: Create playlist (createPlaylist)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($name: String!, $spaceId: UUID!) { createPlaylist(name: $name, spaceId: $spaceId) { id name
          } }","variables":{"name":"New Playlist","spaceId":""}}'
    docs: Creates a playlist in a space.
  - info:
      name: Add file to playlist (addFileToPlaylist)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($playlistId: UUID!, $fileId: UUID!, $durationMs: Int) { addFileToPlaylist(playlistId: $playlistId,
          fileId: $fileId, durationMs: $durationMs) { id } }","variables":{"playlistId":"","fileId":"","durationMs":10000}}'
    docs: Adds a media file to a playlist with a display duration.
- info:
    name: Media & Files
    type: folder
  items:
  - info:
      name: List files (allFiles)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { allFiles { id name mimeType fileSize } }"}'
    docs: Lists media files in the library.
  - info:
      name: Create folder (createFolder)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($name: String!, $parentId: UUID) { createFolder(name: $name, parentId: $parentId) { id name
          } }","variables":{"name":"Campaign Assets","parentId":null}}'
    docs: Creates a folder to organize media.
- info:
    name: Channels & Casts
    type: folder
  items:
  - info:
      name: List channels (allChannels)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { allChannels { id name isPublished } }"}'
    docs: Lists channels in the account.
  - info:
      name: Create channel (createChannel)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($name: String!, $spaceId: UUID!) { createChannel(name: $name, spaceId: $spaceId) { id name
          } }","variables":{"name":"Lobby Channel","spaceId":""}}'
    docs: Creates a multi-zone channel.
  - info:
      name: Start cast (castStart)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($screenId: UUID!, $contentType: String!, $contentId: UUID!) { castStart(screenId: $screenId,
          contentType: $contentType, contentId: $contentId) { id startedAt } }","variables":{"screenId":"","contentType":"PLAYLIST","contentId":""}}'
    docs: Temporarily casts content to a screen.
- info:
    name: Apps
    type: folder
  items:
  - info:
      name: List apps (allApps)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query { allApps { id name slug } }"}'
    docs: Lists the signage app catalog available to the org.
  - info:
      name: Create app instance (createAppInstance)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"mutation($appId: UUID!, $name: String!, $spaceId: UUID!, $config: JSON) { createAppInstance(appId:
          $appId, name: $name, spaceId: $spaceId, config: $config) { id name status } }","variables":{"appId":"","name":"Weather
          NYC","spaceId":"","config":{}}}'
    docs: Creates a configured instance of an app to place in playlists/channels.
- info:
    name: Playback Logs
    type: folder
  items:
  - info:
      name: Get playback logs (getPlaybackLogs)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query($screenId: UUID, $from: Datetime, $to: Datetime) { getPlaybackLogs(screenId: $screenId, from:
          $from, to: $to) { screenId contentType contentId startedAt endedAt durationMs } }","variables":{"screenId":null,"from":null,"to":null}}'
    docs: 'Proof-of-play: what played on which screen and when.'
  - info:
      name: Export playback logs (exportPlaybackLogs)
      type: http
    http:
      method: POST
      url: '{{graphqlEndpoint}}'
      body:
        type: json
        data: '{"query":"query($from: Datetime, $to: Datetime) { exportPlaybackLogs(from: $from, to: $to) }","variables":{"from":null,"to":null}}'
    docs: Returns an export (e.g. a download URL) of playback logs for a period.