---
title: "Put a playlist. Replaces a playlist with the one provided."
method: PUT
path: "/playlists/{id}"
tags: ["Playlists"]
---

# Put a playlist. Replaces a playlist with the one provided.

`PUT /playlists/{id}`

## Path parameters

- `id` string, required

## Request body

- Playlist — Represents a playlist containing an ordered collection of content sources for playback on digital signage devices. Playlists define what content plays and in what order within a template module or schedule.
  - `id` string, nullable — The playlist id
  - `name` string, nullable — The playlist name
  - `group_name` string, nullable — The group name
  - `group_id` string, nullable — The group id
  - `tags` string, nullable — The tags associated with this playlist
  - `type` 'Multimedia' | 'Slideshow' | 'Template' | 'Marquee'
  - `duration` integer, nullable — User-defined fixed duration for this playlist in seconds. Used in conjunction with loop policy to control how sources are looped or truncated to fit within this fixed duration. This is different from CalculatedDuration which represents the sum of all source durations.
  - `calculated_duration` integer, nullable — The total calculated duration of the playlist in seconds, based on the sum of all source intervals. This is a read-only property computed from individual source durations and cannot be updated via PUT/POST.
  - `is_random_start` boolean, nullable — Randomize the order of the playlist
  - `created_on` string, date-time, nullable — The date the playlist was created
  - `created_by_id` string, nullable — The user id that created the playlist
  - `modified_on` string, date-time, nullable — The date the playlist was last modified
  - `modified_by_id` string, nullable — The user id that last modified the playlist
  - `sources` Source[], nullable — The sources associated with this playlist
    - `id` string, nullable — The source id
    - `name` string, nullable — The source name
    - `type` 'Audio' | 'Command' | 'Flash' | 'Gadget' | 'Image' | 'Pdf' | 'PlaceExchange' | 'Playlist' | 'PowerPoint' | 'Rss' | 'Svg' | 'Template' | 'Text' | 'Twitter' | 'Url' | 'Video' | 'VistarMedia' | 'WebPage' | 'YouTube' | 'VistarMediaEx' | 'DataTable' — Specifies the content type of a RevelDigital.Core.PublicApi.Models.Source item within a playlist. Each source type determines how the content is rendered and what properties are relevant.
    - `sequence` integer, nullable — The sequence. Lower numbers are displayed first.
    - `media_id` string, nullable — The media file id
    - `template_id` string, nullable — The template id
    - `playlist_id` string, nullable — The playlist id
    - `value` string, nullable — The value
    - `interval` integer, nullable — The duration in seconds
    - `media` Media — Represents a media asset (image, video, audio, document) in the RevelDigital content library. Media files are uploaded to the platform and referenced by playlists and templates for playback on devices.
      - `name` string, nullable — The media name
      - `group_id` string, nullable — The group id
      - `tags` string, nullable — The tags associated with this media
      - `advertiser_id` string, nullable — The advertiser id. Optional
      - `is_shared` boolean, nullable — Is this media shared with other accounts
      - `start_date` string, date-time, nullable — The start date for this media
      - `end_date` string, date-time, nullable — The end date for this media
      - `id` string, nullable — The media id
      - `group_name` string, nullable — The group name
      - `mime_type` string, nullable — The MIME type for this media
      - `file_size` integer — The file size in bytes
      - `file_name` string, nullable — The file name
      - `file_url` string, nullable — The file URL
      - `thumbnail_url` string, nullable — The thumbnail URL
      - `uploaded_on` string, date-time, nullable — The date the media was uploaded
      - `uploaded_by_id` string, nullable — The user id that uploaded the media
      - `sha_512` string, nullable — The SHA512 hash of the media file
      - `width` integer, nullable — The width of the media
      - `height` integer, nullable — The height of the media
      - `is_approved` boolean, nullable — Approval state. True = approved for playback, false = declined, null = pending review.
      - `approved_on` string, date-time, nullable — Timestamp the media was approved, if applicable.
      - `declined_on` string, date-time, nullable — Timestamp the media was declined, if applicable.
      - `declined_reason` string, nullable — Reason recorded when the media was declined, if any.
    - `loop_policy_type` 'Default' | 'OverSaturate2x' | 'OverSaturate3x' | 'OverSaturate4x' | 'OverSaturate5x' | 'Random' | 'UnderSaturate2x' | 'UnderSaturate3x' | 'UnderSaturate4x' | 'UnderSaturate5x' | 'Prefill' | 'Postfill' | 'Spreadfill' — Loop policy type determines how a source is to generatively positioned within a loop. IMPORTANT: Playlist duration must be set for this to take effect. If no playlist duration is specified, then source loop policy should not be assigned.
    - `conditions` Condition[], nullable — The conditions for this source
      - `type` 'AfterDate' | 'AfterTime' | 'Always' | 'BeaconActive' | 'BeforeDate' | 'BeforeTime' | 'Command' | 'DateRange' | 'DayOfMonth' | 'DaysOfWeek' | 'DeviceByGroup' | 'DeviceByNestedGroup' | 'DeviceByName' | 'DeviceByTag' | 'DeviceByOrg' | 'Everywhere' | 'GeoLocation' | 'GpsWithinRadius' | 'KeyEvent' | 'MonthOfYear' | 'Motion' | 'Never' | 'Nowhere' | 'PctAdult' | 'PctChild' | 'PctFemale' | 'PctMale' | 'PctSenior' | 'PctYoung' | 'PctYoungAdult' | 'PlaylistByName' | 'PlaylistByTag' | 'SendCommand' | 'SpecificDevice' | 'SpecificPlaylist' | 'SpecificTemplate' | 'SpecificZone' | 'TemplateByName' | 'TemplateByTag' | 'TimeRange' | 'TopicSet' | 'TotalViewersGreaterThan' | 'TotalViewersLessThan' | 'TouchEvent' | 'WeekOfMonth' | 'WeekOfYear' — The following enum represents the different types of conditions that can be used in scheduling logic. Important usage notes specific to ConditionType: - ConditionType: "TimeRange" Value1: "01/01/1970 12:00:00 AM" # Start time. Starts at this time. Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: "01/01/1970 12:00:00 AM" # End time. Stops at this time. Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value3: null Value4: null - ConditionType: "TopicSet" Value1: "sports,news,weather" # Comma separted list of topics Value2: null Value3: null Value4: null - ConditionType: "TotalViewersGreaterThan" Value1: "50" Value2: null Value3: null Value4: null - ConditionType: "TotalViewersLessThan" Value1: "100" Value2: null Value3: null Value4: null - ConditionType: "TouchEvent" Value1: "tap" Value2: "screen1" Value3: null Value4: null - ConditionType: "WeekOfMonth" Value1: "2" Value2: null Value3: null Value4: null - ConditionType: "WeekOfYear" Value1: "25" Value2: null Value3: null Value4: null - ConditionType: "GpsWithinRadius" Value1: "40.7128" Value2: "-74.0060" Value3: "50" Value4: "miles" - ConditionType: "KeyEvent" Value1: "ENTER" Value2: null Value3: null Value4: null - ConditionType: "MonthOfYear" Value1: "12" Value2: null Value3: null Value4: null - ConditionType: "Motion" Value1: "detected" Value2: "5" Value3: null Value4: null - ConditionType: "Never" Value1: null Value2: null Value3: null Value4: null - ConditionType: "PctAdult" Value1: "60" Value2: ">=" Value3: null Value4: null - ConditionType: "PctChild" Value1: "25" Value2: "<=" Value3: null Value4: null - ConditionType: "PctFemale" Value1: "40" Value2: ">=" Value3: null Value4: null - ConditionType: "PctMale" Value1: "60" Value2: "<=" Value3: null Value4: null - ConditionType: "PctSenior" Value1: "15" Value2: ">=" Value3: null Value4: null - ConditionType: "PctYoung" Value1: "30" Value2: "<=" Value3: null Value4: null - ConditionType: "PctYoungAdult" Value1: "35" Value2: ">=" Value3: null Value4: null - ConditionType: "AfterDate" Value1: "01/01/1970 12:00:00 AM" # Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: null Value3: null Value4: null - ConditionType: "AfterTime" Value1: "01/01/1970 12:00:00 AM" # Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: null Value3: null Value4: null - ConditionType: "Always" Value1: null Value2: null Value3: null Value4: null - ConditionType: "BeaconActive" Value1: "Beacon Name" # Name of the beacon Value2: "UUID / Namespace" # UUID or Namespace identifier Value3: "Major / Instance" # Major ID or Instance identifier Value4: "Minor" # Minor ID - ConditionType: "BeforeDate" Value1: "01/01/1970 12:00:00 AM" # Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: null Value3: null Value4: null - ConditionType: "BeforeTime" Value1: "01/01/1970 12:00:00 AM" # Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: null Value3: null Value4: null - ConditionType: "Command" Value1: "Command Name" Value2: "Command Arg" Value3: null Value4: null - ConditionType: "DateRange" Value1: "01/01/1970 12:00:00 AM" # Start date. Starts ON this date. Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value2: "01/01/1970 12:00:00 AM" # End date. Stops AFTER this date. Date/time format: "MM/dd/yyyy hh:mm:ss aa" Value3: null Value4: null - ConditionType: "DayOfMonth" Value1: "15" Value2: null Value3: null Value4: null - ConditionType: "DaysOfWeek" Value1: "10" # Integer Bitfield starting with Sunday as the least significant bit Value2: null Value3: null Value4: null - ConditionType: "DeviceByGroup" # Selects all devices in a group by the groups unique identifier Value1: 0 # Unique device group ID Value2: null Value3: null Value4: null - ConditionType: "DeviceByName" # Selects a device by its name. Supports regular expressions for advanced matching Value1: "Device Name" # Supports regular expressions Value2: null Value3: null Value4: null - ConditionType: "DeviceByNestedGroup" # Selects all devices in a group by the groups unique identifier. Includes all devices in this group and all nested groups Value1: 0 # Unique device group ID Value2: null Value3: null Value4: null - ConditionType: "DeviceByOrg" # Selects all devices in an organization Value1: 0 # Unique organization ID Value2: null Value3: null Value4: null - ConditionType: "DeviceByTag" # Selects devices by their associated tags Value1: "critical_infrastructure" # Newline separted list of tags Value2: null Value3: null Value4: null - ConditionType: "Everywhere" Value1: null Value2: null Value3: null Value4: null - ConditionType: "GeoLocation" Value1: "37.7749" # Latitude of the location Value2: "-122.4194" # Longitude of the location Value3: "50" # Distance in miles from geolocation" Value4: "123 5th St. N" # Street address of the location - ConditionType: "Nowhere" Value1: null Value2: null Value3: null Value4: null - ConditionType: "SpecificDevice" Value1: 0 # Unique device ID Value2: null Value3: null Value4: null
      - `operator` 'And' | 'Or' | 'AndNot' | 'OrNot'
      - `value_1` string, nullable — Value 1. See ConditionType documentation for usage notes.
      - `value_2` string, nullable — Value 2. See ConditionType documentation for usage notes.
      - `value_3` string, nullable — Value 3. See ConditionType documentation for usage notes.
      - `value_4` string, nullable — Value 4. See ConditionType documentation for usage notes.

## Response `204`

No Content

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/reveldigital/apis/revel-digital-rest-api.md) · [All operations](https://skmtc.net/reveldigital/apis/revel-digital-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/reveldigital/revel-digital-rest-api/versions/f23a94aea621/schema)
