smart_url: name: Smart play URL description: RelayTV one-button URL handling via POST /smart. If RelayTV is already playing, the URL is enqueued; otherwise it starts immediate playback. target: entity: domain: media_player integration: relaytv fields: url: required: true example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" selector: text: play_now: name: Play now description: Play a URL immediately using RelayTV POST /play. This clears the queue and does not currently use RelayTV POST /play_now preserve-current semantics. target: entity: domain: media_player integration: relaytv fields: url: required: true example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" selector: text: use_ytdlp: required: false default: true selector: boolean: cec: required: false default: false selector: boolean: announce: name: Announce description: Alias for play_now. This currently uses RelayTV POST /play and does not use a distinct announcement endpoint. target: entity: domain: media_player integration: relaytv fields: url: required: true example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" selector: text: use_ytdlp: required: false default: true selector: boolean: cec: required: false default: false selector: boolean: play_temporary: name: Play temporary description: Temporarily interrupt playback and resume afterward (RelayTV POST /play_temporary). target: entity: domain: media_player integration: relaytv fields: url: required: true selector: text: timeout: required: false selector: number: min: 1 max: 300 mode: box volume: required: false selector: number: min: 0 max: 1 step: 0.01 mode: slider overlay: name: Overlay description: Display text/image overlay without interrupting playback (RelayTV POST /overlay). target: entity: domain: media_player integration: relaytv fields: text: required: false selector: text: duration: required: false selector: number: min: 1 max: 120 mode: box position: required: false selector: select: options: - top-left - top-right - bottom-left - bottom-right - center image_url: required: false selector: text: play_synced: name: Play synced description: Start the same URL on multiple RelayTV entities at the same target timestamp. fields: url: required: true selector: text: target_entities: required: true selector: entity: multiple: true domain: media_player integration: relaytv delay_buffer_sec: required: false default: 2 selector: number: min: 1 max: 20 mode: box snapshot: name: Snapshot description: Capture a snapshot from RelayTV and expose snapshot_url on the entity. Active playback is required by the RelayTV server. target: entity: domain: media_player integration: relaytv play_with_resume: name: Play with resume description: Play URL and resume from previously stored position when available. target: entity: domain: media_player integration: relaytv fields: url: required: true selector: text: use_ytdlp: required: false selector: boolean: cec: required: false selector: boolean: upload_media: name: Upload media description: Upload a local Home Assistant media file to RelayTV using POST /ingest/media. This stores the file and returns a RelayTV media URL without playing or queueing it. target: entity: domain: media_player integration: relaytv fields: file: required: false selector: media: accept: - video/* - audio/* file_path: required: false example: "/config/www/clip.mp4" selector: text: title: required: false selector: text: upload_media_play: name: Upload media and play description: Upload a local Home Assistant media file to RelayTV and start playback using POST /ingest/media/play. target: entity: domain: media_player integration: relaytv fields: file: required: false selector: media: accept: - video/* - audio/* file_path: required: false example: "/config/www/clip.mp4" selector: text: title: required: false selector: text: upload_media_enqueue: name: Upload media and enqueue description: Upload a local Home Assistant media file to RelayTV and append it to the queue using POST /ingest/media/enqueue. target: entity: domain: media_player integration: relaytv fields: file: required: false selector: media: accept: - video/* - audio/* file_path: required: false example: "/config/www/clip.mp4" selector: text: title: required: false selector: text: