add_jingle_to_bundle
ChatGPTAdd a jingle of the caller's library (GET /v1/jingles, or the jingle_id of a completed generation request) to a bundle. Jingles longer than 60 seconds are refused. Tunio public API: POST /v1/jingle-bundles/{bundle_id}/items
apply_schedule_profile_to_stream
ChatGPTReplaces the selected schedules on the target stream with the profile's. The chosen layers are fully replaced, not merged. Slots whose playlist or content no longer exists are skipped and reported instead of failing the request. Tunio public API: POST /v1/schedule-profiles/{profile_id}/apply
clear_music_override
ChatGPTRemoves the stream's customer-driven override; the station falls back to its base music schedule. Tunio public API: DELETE /v1/stream/{stream_id}/override
copy_public_schedule_profile_into_library
ChatGPTImports a profile from the shared catalog as a private copy owned by the current user. Returns the copied profile; re-importing the same source returns the existing copy. Tunio public API: POST /v1/schedule-profiles-public/copy/{profile_id}
create_announcement
ChatGPTCreate a voiced announcement: Tunio renders the message with the chosen TTS voice (and the background, if any) in the background. The response has state voice_pending; poll GET /v1/announcements/{announcement_id}/status until the state is completed, then audio_url links to the finished audio on the CDN. Schedule it on a stream with POST /v1/announcements/schedules. Tunio public API: POST /v1/announcements
create_announcement_schedule
ChatGPTCreate a new schedule for an announcement Tunio public API: POST /v1/announcements/schedules
create_content_schedule_time_slot
ChatGPTCreate a single content schedule entry with conflict checking and force option Tunio public API: POST /v1/stream-schedule/content/slot
create_jingle_bundle
ChatGPTCreate an empty jingle bundle in the caller's library. Tunio public API: POST /v1/jingle-bundles
create_jingle_generation_request
ChatGPTQueue a jingle for the generator the control panel uses: a voice over a generated music bed (full), music only (instrumental) or voice only (voice). Poll GET /v1/jingles/requests/{request_id} until the state is completed; the jingle is then a file of the caller's library (jingle_id, also listed by GET /v1/jingles) that can be added to bundles. Credits are charged once, only when generation succeeds (ledger type jingle_generation); a failed request costs nothing. Up to 20 requests may be pending or processing per account. Rate limited to 60 calls per minute per account across the jingle request endpoints. Tunio public API: POST /v1/jingles/requests
create_music_schedule_slot
ChatGPTAdds a playlist to the stream music schedule Tunio public API: POST /v1/stream-music-schedule/slot
create_playlist
ChatGPTCreates a new playlist (dynamic or static) Tunio public API: POST /v1/playlists
create_stream
ChatGPTCreates a new stream for the API key owner Tunio public API: POST /v1/streams
create_tts_request
ChatGPTQueue text for speech synthesis with a catalog voice or one of the caller's cloned voices. Poll GET /v1/tts/requests/{request_id} until the state is completed, then download audio_url. Credits are charged only when synthesis succeeds; up to 20 requests may be pending or processing per account. Rate limited to 60 calls per minute per account across the TTS request endpoints. Tunio public API: POST /v1/tts/requests
delete_announcement
ChatGPTDelete an announcement by UUID Tunio public API: DELETE /v1/announcements/{announcement_id}
delete_announcement_schedule
ChatGPTDelete an existing announcement schedule Tunio public API: DELETE /v1/announcements/schedules/{schedule_id}
delete_content_schedule_time_slot
ChatGPTDelete a single content schedule entry by UUID Tunio public API: DELETE /v1/stream-schedule/content/slot/{slot_id}
delete_jingle_bundle
ChatGPTDelete a jingle bundle, as the control panel does: its jingles are taken out of every bundle and music slot, and content schedule slots playing the bundle or its jingles are removed. The jingle files stay in the library. Tunio public API: DELETE /v1/jingle-bundles/{bundle_id}
delete_jingle_generation_request
ChatGPTDelete a jingle request. A completed request's jingle is deleted with it, from the library and from every bundle. A request that is processing cannot be deleted until it finishes. Tunio public API: DELETE /v1/jingles/requests/{request_id}
delete_playlist
ChatGPTDeletes a playlist by UUID Tunio public API: DELETE /v1/playlists/{playlist_id}
delete_podcast_episode
ChatGPTMark a podcast episode for deletion by UUID Tunio public API: DELETE /v1/podcast/{podcast_id}/episode/{episode_id}
delete_restream
ChatGPTStops the restream if it runs and deletes it. Tunio public API: DELETE /v1/stream/{stream_id}/restreams/{restream_id}
delete_schedule_profile
ChatGPTDeletes a profile of the caller's library, including automatic snapshots. Streams keep their schedules. Tunio public API: DELETE /v1/schedule-profiles/{profile_id}
delete_tts_request
ChatGPTDelete a TTS request and its audio file. A request deleted while processing is not charged. Tunio public API: DELETE /v1/tts/requests/{request_id}
get_announcement
ChatGPTGet a single announcement by UUID Tunio public API: GET /v1/announcements/{announcement_id}
get_announcement_schedule
ChatGPTGet a single announcement schedule by UUID Tunio public API: GET /v1/announcements/schedules/{schedule_id}
get_announcement_status
ChatGPTGet the current state of an announcement. Once the voice is generated, audio_url links to the audio on the CDN: the finished mix, or the voice alone while there is no mix yet. Tunio public API: GET /v1/announcements/{announcement_id}/status
get_content_schedule_by_stream_uuid
ChatGPTGet content schedule for specified radio stream Tunio public API: GET /v1/stream-schedule/content/{stream_id}
get_genres
ChatGPTReturns all available genres Tunio public API: GET /v1/genres
get_jingle_bundle
ChatGPTGet a jingle bundle with its jingles. Tunio public API: GET /v1/jingle-bundles/{bundle_id}
get_jingle_generation_request
ChatGPTGet the state of a jingle request. Once completed, jingle_id and audio_url point at the generated jingle in the caller's library; it stays there until deleted. Tunio public API: GET /v1/jingles/requests/{request_id}
get_music_override
ChatGPTReturns the override currently steering the stream (a manual override wins over automated ones), or null when none is active. Tunio public API: GET /v1/stream/{stream_id}/override
get_music_schedule
ChatGPTReturns every music slot of the stream, ordered by day and start time. Times are in the stream's timezone. Tunio public API: GET /v1/stream-music-schedule/{stream_id}
get_playlist
ChatGPTReturns a playlist by UUID Tunio public API: GET /v1/playlists/{playlist_id}
get_playlists
ChatGPTReturns playlists for the current user (supports query/title search) Tunio public API: GET /v1/playlists
get_podcast_episodes
ChatGPTGet list of episodes for a specific podcast Tunio public API: GET /v1/podcast/{podcast_id}/episodes
get_recognition_request_status
ChatGPTReturns status for a recognition request by UUID Tunio public API: GET /v1/music-recognition/{request_id}/status
get_saved_schedule_profiles
ChatGPTReturns every saved schedule profile available to the current user. A profile holds a music schedule, a content schedule, or both, and can be applied to any of the user's streams. Tunio public API: GET /v1/schedule-profiles
get_stream_air_report
ChatGPTSummarises what aired on a stream over a period (default: the last 24 hours, at most 31 days). Use it to answer questions such as "how often does each jingle play", "are tracks repeating", "were there pauses on air" or "what share of the air is music". The report has: totals (plays, aired seconds, unique tracks, AI and uploaded music, skips); by_kind (music, jingle, announcement, weather, news, time, podcast, story...); timeline in the stream's time zone, hourly for up to 3 days and daily beyond; top_tracks and top_jingles with plays and the shortest / mean interval between repeats in seconds; repeats (music tracks played more than once, and how many came back within an hour); genres; transitions (crossfade, beatmatch, cut, skip...); gaps. A gap is time between the expected end of an item (its start plus its length) and the start of the next one, at least gap_seconds long: dead air, a stopped station, or a missing schedule. not_recorded lists what never reaches the history: overlay jingles (mixed on top of music) and silence filler. Tunio public API: GET /v1/stream/{stream_id}/air-report
get_stream_rotation_history
ChatGPTReturns paginated rotation history for the provided stream Tunio public API: GET /v1/stream/{stream_id}/history
get_streams
ChatGPTReturns user streams Tunio public API: GET /v1/streams
get_tts_models
ChatGPTGet available TTS models for public use Tunio public API: GET /v1/tts/models
get_tts_request
ChatGPTGet the state of a TTS request. audio_url is present only while the state is completed; the file is deleted and the state becomes expired 7 days after completion. Tunio public API: GET /v1/tts/requests/{request_id}
get_tuniospot_device_reports
ChatGPTGet a paginated list of failover/restore reports submitted by the TunioSpot devices paired with a link, newest first. The link is addressed by its pin and must belong to the authenticated account. Each item carries the player's diagnostic payload expanded under extra with snake_case keys, for example extra.ping_ms and extra.audio_state. Tunio public API: GET /v1/spot-reports
get_user_context
ChatGPTReturns user plan limits and accessible stations Tunio public API: GET /v1/user/context
list_announcement_backgrounds
ChatGPTList the music beds an announcement can be mixed over. Pass background_id as background_uuid when creating or updating an announcement. With tts_duration, only backgrounds long enough for speech of that many seconds (plus the announcement padding) are returned. Tunio public API: GET /v1/announcements/backgrounds
list_announcement_schedules
ChatGPTGet a list of announcement schedules for a specific announcement Tunio public API: GET /v1/announcements/list/{announcement}/schedules
list_announcements
ChatGPTGet a paginated list of announcements with optional filters Tunio public API: GET /v1/announcements
list_jingle_bundles
ChatGPTList the jingle bundles (jingle playlists) of the caller's library, newest first. bundle_id is the jingle_playlist_id the schedule and instant-playlist endpoints take. Tunio public API: GET /v1/jingle-bundles
list_jingle_generation_requests
ChatGPTList the jingle requests of the caller's library, newest first, including the ones made in the control panel. Tunio public API: GET /v1/jingles/requests
list_library_jingles
ChatGPTList the jingle files of the caller's library, newest first: uploaded in the control panel or generated with POST /v1/jingles/requests. Use jingle_id to add them to bundles. Tunio public API: GET /v1/jingles
list_public_schedule_profiles
ChatGPTReturns every schedule profile published to the shared catalog. Copy one into your library with the copy endpoint, then apply it to a stream. Tunio public API: GET /v1/schedule-profiles-public
list_restream_backgrounds
ChatGPTLooped video backgrounds a restream can show under the station's audio: the catalogue and the account's own uploads. resolutions are those a restream may send under the plan; pass uuid as background_id. Tunio public API: GET /v1/restream-backgrounds
list_station_restreams
ChatGPTThe station's restreams to external platforms (YouTube, Twitch, Kick, Facebook, VK, Rutube, Telegram, any RTMP server) with their live state: status is inactive, starting or running. A failing restream keeps status starting and carries error_code (target_rejected: the platform refuses the stream, usually a wrong or inactive stream key; target_unreachable: wrong server URL; audio_unavailable; video_unavailable; unknown), failed_attempts and last_running_at. The stream key is never returned, only key_hint (its last 4 characters). limits tells how many restreams the plan allows and the highest background resolution. Tunio public API: GET /v1/stream/{stream_id}/restreams
list_tts_requests
ChatGPTGet the caller's TTS requests, newest first. Tunio public API: GET /v1/tts/requests
public_station_listing
ChatGPTOne page of the stations anyone may listen to - not private, online, with a cover - live broadcasts first and then by listeners. With stream_id, that one station if it is in the listing. Tunio public API: GET /v1/streams/public
remove_jingle_from_bundle
ChatGPTRemove a jingle from a bundle; content schedule slots playing that bundle entry are removed too. The jingle file stays in the library. Tunio public API: DELETE /v1/jingle-bundles/{bundle_id}/items/{jingle_id}
rename_jingle_bundle
ChatGPTChange the title of a jingle bundle. Tunio public API: PATCH /v1/jingle-bundles/{bundle_id}
replace_content_schedule
ChatGPTReplaces every content slot of the stream with the given set, atomically. Every referenced item must belong to the caller's library, and no two slots of the set may start at the same time on the same day (the rule of the single-slot endpoint, applied to the whole set). With dry_run=true nothing is written: the response says whether the set is valid, lists the conflicts and the diff against the current schedule. With dry_run=false a conflicting set is refused with 409 and nothing is written. A valid set is applied after the stream's current schedule (music and content) is saved as a private schedule profile, returned as snapshot_profile_id; apply it with POST /v1/schedule-profiles/{profile_id}/apply to roll back. The last 20 automatic snapshots per stream are kept. Slots that do not change keep their slot_id. Tunio public API: PUT /v1/stream-schedule/content/{stream_id}
replace_music_schedule
ChatGPTReplaces every music slot of the stream with the given set, atomically. Every playlist and jingle bundle must belong to the caller's library, and no two slots of the set may overlap on the same day (the rule of the single-slot endpoint, applied to the whole set). With dry_run=true nothing is written: the response says whether the set is valid, lists the conflicts and the diff against the current schedule. With dry_run=false a conflicting set is refused with 409 and nothing is written. A valid set is applied after the stream's current schedule (music and content) is saved as a private schedule profile, returned as snapshot_profile_id; apply it with POST /v1/schedule-profiles/{profile_id}/apply to roll back. The last 20 automatic snapshots per stream are kept. Slots that do not change keep their slot_id. Tunio public API: PUT /v1/stream-music-schedule/{stream_id}
save_stream_schedule_as_profile
ChatGPTCaptures the stream's current music and/or content schedule into a new private profile of the caller's library, with self-contained playlist snapshots. Apply it later with POST /v1/schedule-profiles/{profile_id}/apply, for example to roll a schedule back. Tunio public API: POST /v1/schedule-profiles
set_instant_playlist
ChatGPTSets the instant playlist for a stream Tunio public API: POST /v1/stream/{stream_id}/instant-playlist
set_music_override
ChatGPTOverrides the current music selection with an ad-hoc dynamic filter spec (genres, BPM range, languages, instrumental, music source, collection) for an optional TTL in minutes (clamped to 10..1440, default 60). It supersedes the base music schedule until it expires or is cleared; announcements and jingles keep running. Any subset of filters may be set, but at least one is required. A manual override wins over automated (POS) ones. Tunio public API: POST /v1/stream/{stream_id}/override
skip_current_track
ChatGPTSkip the currently playing track on a stream Tunio public API: POST /v1/stream/{stream_id}/skip
start_restream
ChatGPTStarts a saved restream that is switched off. Tunio public API: POST /v1/stream/{stream_id}/restreams/{restream_id}/start
stop_restream
ChatGPTSwitches a restream off; it stays saved and can be started again. Tunio public API: POST /v1/stream/{stream_id}/restreams/{restream_id}/stop
update_announcement
ChatGPTUpdate an existing announcement by UUID Tunio public API: PUT /v1/announcements/{announcement_id}
update_announcement_schedule
ChatGPTUpdate the interval of an existing schedule Tunio public API: PATCH /v1/announcements/schedules/{schedule_id}
update_playlist
ChatGPTUpdates a playlist by UUID Tunio public API: PATCH /v1/playlists/{playlist_id}