Knowledge base
1000 FAQs, 500 tutorials and explanatory videos. Here, there are only solutions!
This guide covers the control of live broadcasting (timeshift) that allows your listeners to pause, rewind, and then return to live on your HLS streams, with a rewind depth of up to 2 hours.
Preamble
- Unlike Video Streaming, there is no scheduling tool for Timeshift on the Radio side.
 - Rewind/rewind is disabled by default on the Player to give you control over public exposure.
 
Offer live control to listeners
Prerequisites
- Create or edit an HLS stream in your Radio Streaming product.
 
Next:
- When creating (or modifying) an HLS stream, set the Buffer Memory between 00:00:25 and 02:00:00. This value between 25 seconds and 2 hours corresponds to the maximum duration during which listeners can rewind and pause the live broadcast, before returning to live. It determines the depth of live control. Examples:
- 00:00:25 → 05:00: minimum tolerance for short pauses.
 - 10:00 → 30:00: ideal for news / talk formats.
 - 30:00 → 02:00:00: maximum comfort for music shows and events.
 
 - Enable rewind in your Player (refer to this other guide) if you wish to offer it to the public (disabled by default).
 
This guide details the configuration of a Player for your Streaming Radio Infomaniak.
Prerequisites
Configure the options of the Infomaniak Player
Once you have linked your stream to your Player and your Player is created:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
 - Click directly on the name assigned to the product concerned.
 - Click on My players in the left sidebar menu.
 - Click on the name of the Player to configure (or add a new player by clicking on the button above):

 
1. Appearance tab
This is where you can choose the size of the player (large, medium, mini, or multi-radio player) and its display percentage.
You can customize the colors of the background, buttons, and text:
A toggle switch allows you to enable or disable the display of the tracks broadcast, with or without their broadcast times:
- Learn more about this at the end of this guide.
 
The Player can display:
- an illustration representing the album cover, or a substitute image if it is not available,
 - a fixed image (3 Mo max.),
 - the logo of your radio, to customize here:

 - an audio spectrum visualization (Spectrogram / Spectrum).
 
2. Broadcast tab
This is where you can link your radio streams (HLS or not) to your Player in progress.
Refer to this other guide regarding the choices offered concerning the management of live broadcasting:
3. Tab Thumbnails
This is where you can upload the images visible when the stream is loading, or unavailable/restricted:
4. Tab Player Information
This is where you can name your Player and decide to display or hide:
- the title and artist instead of the radio name,
 - the number of listeners,
 - the Infomaniak logo.
 
5. Tab Sharing Options
A toggle switch allows you to enable or disable certain services like Facebook:
Once enabled, a share button to these services will be visible on your Player:
Broadcast history details (tab #1)
The broadcast history allows you to replay the broadcasted music (between 1 and 40) if your stream is of type HLS only (you will then be able to define a buffer ranging from 25 seconds to 2 hours):
The rewind and replay functionality is not enabled by default: it remains optional to comply with the restrictions of some countries or radios. Once enabled, the radio manager can choose which streams will be available for broadcasting (see tab #2 above), while the listener can select the listening quality in the Player:
Position & integration of the broadcast history
The list is viewable by choice:
- directly under the Player,
 - on the Player,
 - or relocatable in the integration of your website...
 
Indeed, it is possible to display the history in a second iframe, separate from that of the main Player. Example of URL for the Player:https://player-radio.infomaniak.com/2/prod/super/7cbaa24a-3510-47a4-b41e-b99218bfd507
And for the exported history:https://player-radio.infomaniak.com/2/prod/history
The two iframes must be integrated on the same page and communicate with each other to update the history or play a previously broadcasted title.
A second integration mode allows displaying an autonomous history, without a main iframe. Simply add the Player ID to the URL:https://player-radio.infomaniak.com/2/prod/history/7cbaa24a-3510-47a4-b41e-b99218bfd507
This mode is suitable, for example, for users of another Player who wish to display only the history of titles.
This guide introduces HLS, which segments your audio for reliable, compatible, and highly distributable HTTP streaming, ideal for mobile and large audiences.
What is HLS?
HLS (HTTP Live Streaming) is a streaming protocol that cuts audio into small segments of a few seconds and publishes a .m3u8 manifest listing these segments. The Player downloads these segments via HTTP/HTTPS (ports 80/443), which facilitates caching, recovery after interruption, and large-scale distribution.
On your Radio Streaming service, activating HLS adds an additional dedicated stream. It has its own listening URL (HLS manifest) and can be selected and prioritized in the infomaniak Player. The HLS stream coexists with your historical streams (e.g., MP3/AAC), without service disruption.
Benefits for a radio stream
- Extended compatibility: native support on iOS/iPadOS (Safari) and wide support via modern HTML5 players and third-party applications.
 - Scalability and performance: streaming via HTTP(S) easily distributable by CDN and caches; better scalability than a single continuous stream.
 - Robustness: in case of micro-cuts, the player can recover the following segments and resume quickly; less sensitive to temporary losses.
 - Network traversal: works on 80/443, generally better accepted by corporate firewalls and proxies than certain “ICY” streams.
 - Simplified HTTPS: secure delivery without plugins or exotic protocols.
 - Bitrate adaptation (ABR): when multiple variants are offered, the player can automatically switch according to network quality to limit interruptions in mobility.
 - Integration flexibility: a distinct listening point allows exposing HLS as the main, secondary, or backup stream in your Player.
 
Specificities and points of attention
- Latency: HLS adds latency generally in the order of a few tens of seconds (related to the size of the segments and buffering). This is normal for this protocol.
 - Compatible player required: use the infomaniak player or a player/web SDK supporting 
.m3u8manifests. - Heterogeneous fleet: some older hardware receivers (web radios, IP car radios) only accept MP3/Icecast streams; keep their historical URLs in parallel.
 - Conditional ABR: bitrate adaptation is only effective if multiple profiles are published; otherwise, the HLS stream remains functional in single quality.
 
This guide explains how to maintain control over your MP3/AAC or HLS Radio Streaming streams by activating unique key (token) protection to decide, for example, whether a listener can listen to your radio or not.
Preamble
- The principle is simple: with each connection, you will make a request to the Infomaniak API, which will return a unique token with a limited and configurable lifespan. This token will authorize anyone who possesses it to consume the stream during this period.
 - You can protect an MP3/AAC or HLS stream independently of each other (the same applies to geolocation).
 - Activating the restriction involves changing the stream configuration, which may take a few minutes to be replicated on the servers.
 
Protect an audio stream with a unique key
To do this, simply go to the restriction settings and activate token protection on the stream you wish to secure:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
 - Click directly on the name assigned to the product concerned.
 - Click on the name of the audio stream concerned.
 - Click on Restrictions in the left sidebar.
 - Choose HLS if necessary.
 - Click on the action menu â‹® located to the right of the item concerned.
 - Click on Token Restriction:

 
Then activate the protection.
Warning, at the moment you activate this option, access to the stream will be instantly blocked for new connections. Adapt your Players to take into account the restriction, as illustrated in the example below:
Create a Radio API Token
To access the Radio API, you must first authenticate using an application token. This step only needs to be done once. To create this application token, refer to this other guide.

The scope is radio and unlimited lifetime to avoid having to regenerate a code regularly. Once the token is generated, copy it to paste it in the example below.
Example of use in PHP language
For MP3/AAC or HLS, the code can be substantially the same, only the URL called in POST changes in its form.
Paste the generated token below instead of the one indicated:
if (!defined('API_TOKEN')) {
     define('API_TOKEN', 'AYF5lSh3c7Xy5974Fs12RTkTThujT-L9R4Xk2ZfGyP6sV7QqJ1oC3jD8nFtKzIxUeMw5oNzR6');
}
/**
 * Fonction générique pour executer des requêtes cURL
 *
 * @param string $method Méthode HTTP (GET, POST, PUT, etc...)
 * @param string $url Url de l'api a requĂŞter
 * @param array $headers Liste des en-têtes HTTP (l'autorisation doit être passée ici avec un ['Authorization: Bearer ']
 * @param array $payload Un tableau contenant les données pour créer un token
 * @return mixed
 */
function request(string $method, string $url, array $headers = [], array $payload = []): mixed{
    // prepare options array
    $opts = [
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_URL => $url,
        CURLOPT_CUSTOMREQUEST => strtoupper($method),
    ];
    // add payload if relevant
    if ($payload && $method !== 'GET') {
        $opts[CURLOPT_POSTFIELDS] = json_encode($payload);
    }
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $result = curl_exec($ch);
    if(curl_errno($ch)){
        throw new Exception(curl_error($ch));
    }
    $data = json_decode($result, true);
    if ($data['result'] === 'error') {
        throw new Exception($data['error']['description'] ?? 'an error occured');
    }
    return $data['data'];
}We are going to create the token, the URL for creating the token is broken down as follows:
- For an MP3/AAC stream
 
POST https://api.infomaniak.com/1/radios/acl/streams/mountpoint.mp3/tokenExample to protect https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac the route will be: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- For an HLS stream
 
POST https://api.infomaniak.com/1/radios/acl/hls_streams/<stream>/tokenExample to protect https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8 the route will be: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Example in the case of MP3/AAC, remember to adjust:
$token = request(
    'POST',
   'https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token',
    // en-tĂŞte d'authorization
    [
        'Authorization: Bearer ' . API_TOKEN,
        'Content-Type: application/json',
    ],
    /**
     * payload pour crĂ©er le token, vous pouvez passer les valeurs suivantes
     * window     | 300               | optionnel | durĂ©e de validitĂ© du token (default: 5 minutes)
     */
    [
        'window' => 3600, // 1h validity
    ]
);It is important to note that if this code is generated at the time of page loading, the listener will have "window" seconds to start playing the stream. Beyond this deadline, the token will expire, and the stream will no longer be able to be started unless the page is reloaded. Depending on your needs and use case, it will be necessary to adjust this delay in the best possible way.
You will also need to replace the playback URL of your stream below with the one indicated while keeping the parameter $token at the end. And finally, we display the Player (here a simple html5 tag, but you can of course add any overlay afterwards, the token being passed in the parameters $_GET of the url).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";
This guide explains how to transfer the audio streams present on one of your Infomaniak Streaming Radio to another of your radios, present in the same Organization.
Refer to this other guide to transfer all streams from a Streaming Radio to a new owner.
Transfer audio streams
To do this:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
 - Click directly on the name assigned to the product in question.
 - Click on the action menu â‹® located to the right of the relevant item.
 - Choose Transfer:

 - Search for and validate the name of the other radio that you own within the same Organization.
 - Confirm the transfer:

 
Refresh the Manager pages if necessary to update the displayed information.