Skip to main content

Fusion Signage API (1.0)

Download OpenAPI specification:Download

The Fusion Signage API powers the Fusion Signage digital signage platform. Use it to manage folders, media, playlists, schedules, screens and screen groups — and to deploy content to your screens.

Authentication

All endpoints require authentication with either a Personal Access Token (PAT) issued from your Fusion Signage account, or with an OAuth 2.0 access token. Pass the token in the Authorization header as a Bearer token:

Authorization: Bearer <your-token>

See our support site for details on how to generate a Personal Access Token.

Our OAuth 2.0 implementation supports the OpenID Connect Discovery Endpoint to find the correct OAuth 2.0 / OIDC configuration settings. You can use the oauth2.dev OpenID configuration validator tool to explore the settings further.

Getting started

A typical workflow is:

  1. Create or list folders to organise your content.
  2. Upload media (images, videos, web pages, etc.) into a folder.
  3. Build playlists from your media items.
  4. Optionally wrap playlists in a schedule to automate playback across different dates and times.
  5. Publish a playlist or schedule to one or more screens or screen groups.

Pagination

List endpoints return a paginated result. Use the offset and limit query parameters to page through results. The total field in the response indicates the total number of matching items.

Licence requirements

Some features - such as schedules, screen groups, tagging, and certain media types - require a specific licence level. Use the GET /licences/features endpoint to check which features are available for your account.

Rate limiting

Authenticated requests are limited to 20 requests per second per user. Exceeding this limit will result in a 429 Too Many Requests response. If you receive a 429, back off and retry after a short delay.

Folders

Folders are used to organise digital signage content, including media, playlists and schedules, for easier management.

List folders

Returns an object containing a list of folders and permissions for root folders.

Authorizations:
personal-access-tokenoauth2

Responses

Response samples

Content type
application/json
{
  • "folders": [
    ],
  • "rootPermissions": {
    }
}

Create folder

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
name
required
string [ 1 .. 250 ] characters
parentId
number or null

Leave null to create a root folder.

sortSequence
number

A comparable number representing the sortable sequence of this folder relative to its siblings. Does not need to be in a precise incremental order - e.g. 1, 2, 3 or 1, 10, 100 will be accepted.

If this matches the sort sequence of a sibling, then siblings will be shifted to achieve the desired sort order. There is no guarantee that the value you provide will be used exactly as-is.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": 0,
  • "sortSequence": 0
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

Update folder

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
name
string [ 1 .. 250 ] characters
parentId
number or null

Leave null to create a root folder.

sortSequence
number

A comparable number representing the sortable sequence of this folder relative to its siblings. Does not need to be in a precise incremental order - e.g. 1, 2, 3 or 1, 10, 100 will be accepted.

If this matches the sort sequence of a sibling, then siblings will be shifted to achieve the desired sort order. There is no guarantee that the value you provide will be used exactly as-is.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": 0,
  • "sortSequence": 0
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

Delete folder

The folder must be empty of assets and subfolders before it can be deleted.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Assets

Assets provide a unified, high-level representation of all supported digital signage content, such as media, playlists and schedules.

List assets

This API is intended to be used to build folder-based views of signage content. It will return any content that can be assigned to a folder. You can use the content-specific APIs (such as /playlists and /media) and aggregate the content yourself if you prefer.

Authorizations:
personal-access-tokenoauth2
query Parameters
folderId
required
number
type
string
Enum: "PLAYLIST" "SCHEDULE" "MEDIA" "SCREEN" "SCREEN_GROUP"
offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Bulk move assets

This API is a convenience API to move assets between folders. You can use the content-specific APIs (such as /playlists/:id and /media/:id) and move the assets directly if you prefer. Returns the destination folder that the assets were moved into.

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
folderId
required
number

The destination folder id to move the assets to.

required
Array of objects (AssetKey) non-empty

The assets to move.

Responses

Request samples

Content type
application/json
{
  • "folderId": 0,
  • "assets": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

Bulk delete assets

This API is a convenience API to delete assets. You can use the content-specific APIs (such as /playlists/:id and /media/:id) and delete the assets directly if you prefer.

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
folderId
number

If provided, performs a recursive delete of the folder and all of its contents — including media, playlists, schedules, and child folders. The assets array is ignored when folderId is set.

required
Array of objects (AssetKey) non-empty

The assets to delete. Required when folderId is not provided.

Responses

Request samples

Content type
application/json
{
  • "folderId": 0,
  • "assets": [
    ]
}

Get asset usages

Returns the usage graph for a given asset, walking up the hierarchy to show all parents that consume this asset. Each edge contains the child asset, the parent that uses it, and the depth from the starting asset.

Authorizations:
personal-access-tokenoauth2
path Parameters
type
required
string
id
required
number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Media

Media represents visual content such as images, videos, web pages and dynamic templates that can be added to playlists.

Create media

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
WebsiteOptions (object) or PowerBiOptions (object) or TableauOptions (object) or DesignOptions (object) or WidgetOptions (object) or CanvaOptions (object) or DocumentOptions (object)

Specific options related to the media type.

required
object

The origin of the media item. This includes the type of media and where it is located.

name
required
string <= 150 characters

The publicly visible name of the media item. This could be the file name or a human-readable name.

folderId
required
number

The folder to store the media item in.

tags
Array of strings

An optional list of tag names to assign to the media item. The tags must have already been created.

Responses

Request samples

Content type
application/json
{
  • "options": {
    },
  • "origin": {},
  • "name": "string",
  • "folderId": 0,
  • "tags": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

List media

Authorizations:
personal-access-tokenoauth2
query Parameters
folderId
number
mediaType
string
Enum: "IMAGE" "VIDEO" "WIDGET" "WEBSITE" "CANVA" "POWER_BI" "TABLEAU" "DESIGN" "ZONE" "DOCUMENT"
tags
Array of strings non-empty

Filter by a list of tags that all media items matching the filter must have.

name
string

Filter by a partial name match.

createdAfter
string <date-time>

Filter to media items created after this date (exclusive).

offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Start a media upload

Prepares and returns an upload URL that can be used to upload a file. Only use this for media items that have a PROVIDED source. Clients must PUT the file against the returned URL.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "uploadUrl": "string"
}

Complete a media upload

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
uploadUrl
required
string <uri>

The upload URL that was returned by the startUpload response. This is used to identify which upload is being confirmed as complete.

contentType
required
string

The MIME type of the uploaded file (e.g. image/jpeg, video/mp4, application/pdf).

Responses

Request samples

Content type
application/json
{}

Request a media import

Requests an import of an externally edited media file (e.g. a Canva design). The import will be processed asynchronously.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
correlationId
required
string

Responses

Delete media

This will also delete any files that were uploaded.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Update media

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
CanvaUpdateOptions (object) or DocumentUpdateOptions (object)
name
string <= 150 characters
folderId
number

The folder to move the media item to.

tags
Array of strings

An optional list of tag names to assign to the media item. Replaces all existing tags if provided. The tags must have already been created.

Responses

Request samples

Content type
application/json
{
  • "options": {
    },
  • "name": "string",
  • "folderId": 0,
  • "tags": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

Get media

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "origin": {},
  • "name": "string",
  • "folder": {
    },
  • "status": "CREATED",
  • "options": { },
  • "thumbnail": {
    },
  • "durationInSeconds": 0,
  • "dimensions": {
    },
  • "tags": [
    ],
  • "created": "2019-08-24T14:15:22Z"
}

Playlists

Playlists are collections of media items with specific playback settings. Playlists are used to deploy content to screens.

Create playlist

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
required
Array of MediaPlaylistItemRequestDTO (object) or SubPlaylistPlaylistItemRequestDTO (object)

The items to play in this playlist. These can be media items or another playlist.

The order of items in this list determines the order they will be played.

name
required
string <= 150 characters

The name of the playlist that provides context for the content or details about its purpose.

folderId
required
number

The folder to store playlist in.

object

An optional overlay to apply to the playlist. The configured media will overlay the entire playlist. Use this to display logos, clocks, tickers throughout your entire playlist.

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "name": "string",
  • "folderId": 0,
  • "overlay": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

List playlists

Authorizations:
personal-access-tokenoauth2
query Parameters
folderId
number
offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Duplicate playlist

Duplicates a playlist, including all of its items. The new playlist will be created in the same folder as the original and will have the same name with the suffix (duplicate).

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

Update playlist

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
Array of MediaPlaylistItemRequestDTO (object) or SubPlaylistPlaylistItemRequestDTO (object)

The items to play in this playlist. These can be media items or another playlist.

The order of items in this list determines the order they will be played.

name
string <= 150 characters

The name of the playlist that provides context for the content or details about its purpose.

folderId
number

The folder to store playlist in.

object or null

Pass null to remove the existing overlay.

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "name": "string",
  • "folderId": 0,
  • "overlay": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

Delete playlist

The deleted playlist will automatically be removed from playlists where it is a sub playlist, and any zones that reference it. The playlist will be unpublished from screens.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Get playlist

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    },
  • "items": [
    ],
  • "overlay": {
    },
  • "permissions": {
    }
}

Publish playlist

Publishes the playlist to the targeted screens or screen groups. This process is asynchronous and will return once the targets have been validated. The status of the publishing process can be queried using the returned job id.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
required
object

The target screens to publish the playlist to. At least one of identities, tags, or groupIds must be provided.

identities
Array of strings non-empty
tags
Array of strings non-empty
groupIds
Array of numbers non-empty

Responses

Request samples

Content type
application/json
{
  • "targets": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": "PENDING",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "screens": [
    ]
}

Schedules

Schedules are collections of playlists with specific timing and recurrence rules. Schedules are used to automate content playback on screens across different dates and times.

Create schedule

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
defaultPlaylistId
number

The ID of the playlist that will be played when no event is currently active.

name
required
string <= 250 characters

The name of the schedule that provides context for the content or details about its purpose.

folderId
required
number

The folder to store the schedule in.

required
Array of objects (Event)

A list of events associated with the schedule. Each event represents a specific playlist to be displayed at a particular date and time

Responses

Request samples

Content type
application/json
{
  • "defaultPlaylistId": 0,
  • "name": "string",
  • "folderId": 0,
  • "events": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

List schedules

Authorizations:
personal-access-tokenoauth2
query Parameters
folderId
number

Filter schedules to only those stored in the specified folder.

offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Update schedule

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
name
string <= 250 characters

The name of the schedule that provides context for the content or details about its purpose.

folderId
number

The folder to store the schedule in.

Array of objects (Event)

A list of events associated with the schedule. Each event represents a specific playlist to be displayed at a particular date and time

defaultPlaylistId
number or null

The ID of the playlist that will be played when no event is currently active. Set to null to clear out an existing default playlist.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "folderId": 0,
  • "events": [
    ],
  • "defaultPlaylistId": 0
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

Delete schedule

The deleted schedule will automatically be removed from any screens or screen groups that reference it.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Get schedule

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    },
  • "events": [
    ],
  • "defaultPlaylist": {
    },
  • "permissions": {
    }
}

Duplicate schedule

Duplicates a schedule, including all of its events. The new schedule will be created in the same folder as the original and will have the same name with the suffix (duplicate).

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "folder": {
    }
}

Publish schedule

Publishes the schedule to the targeted screens or screen groups. This process is asynchronous and will return once the targets have been validated. The status of the publishing process can be queried using the returned job id.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
required
object

The target screens to publish the schedule to. At least one of identities, tags, or groupIds must be provided.

identities
Array of strings non-empty
tags
Array of strings non-empty
groupIds
Array of numbers non-empty

Responses

Request samples

Content type
application/json
{
  • "targets": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": "PENDING",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "screens": [
    ]
}

Screens

Screens are the hardware devices running the signage player application to display your content.

Pair screen

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
pairingCode
required
string

The pairing code that is viewable on the screen.

licenceNumber
string

The licence to assign to the screen. If not provided, then the next available licence will be assigned.

displayName
required
string

The screen name viewable in the CMS.

ianaTimezone
required
string

The IANA timezone to assign to the screen.

object (Metadata)

Responses

Request samples

Content type
application/json
{
  • "pairingCode": "string",
  • "licenceNumber": "string",
  • "displayName": "string",
  • "ianaTimezone": "string",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "identity": "string",
  • "displayName": "string"
}

Configure screen

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string
Request Body schema: application/json
required
displayName
string

The screen name viewable in the CMS.

ianaTimezone
string

The IANA timezone to assign to the screen.

object (Metadata)

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "ianaTimezone": "string",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "identity": "string",
  • "displayName": "string"
}

Get screen

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string

Responses

Response samples

Content type
application/json
{
  • "identity": "string",
  • "configuration": {
    },
  • "deviceReport": {
    },
  • "content": {
    },
  • "state": {
    },
  • "permissions": {
    }
}

Delete screen

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string

Responses

Get screenshots

Returns the most recent live screenshots taken of the screen.

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List screens

Authorizations:
personal-access-tokenoauth2
query Parameters
applicationVersion
string
Example: applicationVersion=1.0.3

Filter by the application version.

runtime
string
Enum: "ANDROID" "TIZEN" "BRIGHTSIGN" "WEB" "WEBOS" "WINDOWS" "LINUX"

Filter by the application runtime - e.g. ANDROID or BRIGHTSIGN.

name
string

Filter by a partial name match.

tags
Array of strings non-empty

Filter by a list of tags that all screens matching the filter must have.

groupId
number

Filter by screens in a screen group.

offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Dispatch command

Dispatches a command to the screen. The screen must be online to receive and process the command. This API response will include the ID of the command, which can be used to query the status of the command.

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string
Request Body schema: application/json
required
type
required
string
Enum: "TAKE_SCREENSHOT" "UPGRADE_APPLICATION" "CLEAR_CACHE"
payload
object

Responses

Request samples

Content type
application/json
{
  • "type": "TAKE_SCREENSHOT",
  • "payload": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "targetIdentity": "string",
  • "type": "TAKE_SCREENSHOT",
  • "payload": { },
  • "status": "PENDING"
}

Get command

Authorizations:
personal-access-tokenoauth2
path Parameters
identity
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "targetIdentity": "string",
  • "type": "TAKE_SCREENSHOT",
  • "payload": { },
  • "status": "PENDING"
}

Screen groups

Screen groups are collections of screens that can be managed collectively.

Create screen group

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
name
required
string <= 250 characters

The name of the screen group that provides context about its purpose.

parentId
number or null

The parent screen group ID. Set to null for top-level screen groups.

screenIdentities
Array of strings

The identities of the screens to assign to this group.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": 0,
  • "screenIdentities": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

List screen groups

Authorizations:
personal-access-tokenoauth2
query Parameters
parentId
number or null
offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Update screen group

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
name
string <= 250 characters

The name of the screen group that provides context about its purpose.

parentId
number or null

The parent screen group ID. Set to null for top-level screen groups.

screenIdentities
Array of strings

The identities of the screens to assign to this group.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": 0,
  • "screenIdentities": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

Get screen group

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "parentId": 0,
  • "content": {
    },
  • "screens": [
    ],
  • "permissions": {
    }
}

Delete screen group

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Add a screen to a screen group

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
identity
required
string

The identity of the screen to add to the group.

Responses

Request samples

Content type
application/json
{
  • "identity": "string"
}

Remove a screen from a screen group

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
identity
required
string

Responses

Licences

Licences control access to platform features.

Get licence features

Returns the features available for the current user's account based on their licence level.

Authorizations:
personal-access-tokenoauth2

Responses

Response samples

Content type
application/json
{
  • "licenceLevel": "BASIC",
  • "features": [
    ]
}

Publishing

Publishing deploys content from playlists and schedules to screens.

Get publish job

Returns the current state of a publish job. Use this to poll for completion after calling POST /playlists/{id}/publish or POST /schedules/{id}/publish — the job ID is returned in those responses. Poll until status reaches COMPLETED or FAILED. The screens array provides per-screen granularity so you can identify which screens succeeded or failed individually. Access is permitted if the caller has read access to at least one screen targeted by the job.

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": "PENDING",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "screens": [
    ]
}

Tags

Tags are custom attributes that can be applied to media and screens to help organise and filter your digital signage content.

Create tag

Authorizations:
personal-access-tokenoauth2
Request Body schema: application/json
required
name
required
string

The name for the new tag. Must be unique within the company.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string"
}

List tags

Authorizations:
personal-access-tokenoauth2
query Parameters
name
string

Filter tags by name. Performs an exact, case-insensitive match.

offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

sort
string^[A-Za-z0-9_.]+:(asc|desc)$
Examples:
  • sort=id:desc -
  • sort=id:asc -

Optional sort in the format field:dir where dir is asc or desc.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Get tag

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "usageCount": 0
}

Update tag

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number
Request Body schema: application/json
required
name
required
string

The name for the new tag. Must be unique within the company.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "usageCount": 0
}

Delete tag

Authorizations:
personal-access-tokenoauth2
path Parameters
id
required
number

Responses

Proof of play

Coming soon - This API is still in development. Pro licence holders can still use the CMS to export proof of play data.

Proof of Play provides reporting on media playback events across your screens, including aggregated summaries and individual play records. Use it to verify that content was delivered and to analyse playback performance.

Get proof of play summary

Returns aggregated proof of play data grouped by the requested dimensions. The MEDIA dimension is always present in the output. Additional dimensions (SCREEN, PLAYLIST, DATE) can be requested via the groupBy parameter.

The date range must not exceed 90 days. Proof of play data older than 90 days is permanently deleted and cannot be queried.

Authorizations:
personal-access-token
query Parameters
startDate
required
string

Start of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-01T00:00:00Z.

endDate
required
string

End of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-31T23:59:59Z. Must be on or after startDate. The range must not exceed 90 days.

screenIdentities
Array of strings

Restrict results to the specified screen identities. When omitted, all screens accessible to the current user are included. Requesting a screen the caller cannot access returns 403 Forbidden.

groupBy
Array of strings
Items Enum: "MEDIA" "SCREEN" "PLAYLIST" "DATE"

Dimensions to group the results by. Defaults to ['MEDIA']. media is always present in the output regardless of whether it is explicitly listed here.

Responses

Response samples

Content type
application/json
{
  • "totalPlayCount": 0,
  • "totalDurationMs": 0,
  • "data": [
    ]
}

Get proof of play details

Returns a paginated list of individual play events. Each row represents a single play occurrence on a screen.

The date range must not exceed 90 days. Proof of play data older than 90 days is permanently deleted and cannot be queried.

Authorizations:
personal-access-token
query Parameters
startDate
required
string

Start of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-01T00:00:00Z.

endDate
required
string

End of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-31T23:59:59Z. Must be on or after startDate. The range must not exceed 90 days.

screenIdentities
Array of strings

Restrict results to the specified screen identities. When omitted, all screens accessible to the current user are included.

mediaIds
Array of numbers

Restrict results to plays of the specified media IDs. When omitted, plays of all media are included.

playlistIds
Array of numbers

Restrict results to plays that occurred within the specified playlist IDs. When omitted, plays from all playlists (and non-playlist plays) are included.

offset
required
number >= 0
Default: 0

Zero-based index of the first item to return.

limit
required
number >= 1
Default: 10

Maximum number of items to return per page.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "offset": 0,
  • "limit": 0,
  • "data": [
    ]
}

Export proof of play as CSV

Streams the full result set for the specified date range and filters as a downloadable CSV file. All matching rows are included.

When no data matches the filters, an empty CSV with headers only is returned.

The date range must not exceed 90 days. Proof of play data older than 90 days is permanently deleted and cannot be exported.

Authorizations:
personal-access-token
query Parameters
startDate
required
string

Start of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-01T00:00:00Z.

endDate
required
string

End of the reporting date range (inclusive), as an ISO 8601 datetime string, e.g. 2025-01-31T23:59:59Z. Must be on or after startDate. The range must not exceed 90 days.

screenIdentities
Array of strings

Restrict results to the specified screen identities. When omitted, all screens accessible to the current user are included.

mediaIds
Array of numbers

Restrict results to plays of the specified media IDs. When omitted, plays of all media are included.

playlistIds
Array of numbers

Restrict results to plays that occurred within the specified playlist IDs. When omitted, plays from all playlists (and non-playlist plays) are included.

Responses