> For the complete documentation index, see [llms.txt](https://audalaxy.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://audalaxy.gitbook.io/docs/platform-description/networking-and-content-delivery.md).

# Networking and Content Delivery

## Playerservices

The Audalaxy Playerservices are a collection of scalable and highly available system services for player clients. This system service delivers all types of metadata to player clients, e.g. web player, apps, skills, etc. With stream start using a unique listener id, the client connects to Audalaxy-Player services and receives synchronized metadata in real time for general or a unique listener session. Inside the metadata content several types of information can be delivered, e.g. title, artist or cover, but also control commands and opportunities to show commercials. By now only artist and track title together with a timestamp are garanteed to be delivered. The available data fields depened on what the playout system sends to the metaport.

**Protocols:**

* SSE
* HTTPs, HTTP (polling with server-side cache)
* Websockets (real-time)

{% hint style="info" %}
**Related topics for DevOps**

* [Playerservices Endpoints](/docs/playerservices/playerservices.md)
* [Metadata data-set reference](/docs/metadata-data-set-reference/metadata-data-set-reference.md)
* [Metaflow](/docs/platform-description/mediaflow-services.md#metaflow)
  {% endhint %}

## StreamRoute

StreamRoute is a scalable and highly available system service for effectively connects user stream requests to Audiostreamer infrastructure running in Audalaxy. The service can be available with own custom domain and automatic https certifications.

**Features:**

* Generate listener IDs if necessary, based on client fingerprinting
* Responsible for aggregator detection
* Skip request specific handling
* Alias domain if required
* Forwarding parameters to Audalaxy-Audiostreamer or other Streamers
* Detour blacklist-IPs
* No pre-roll spot at specific aggregator requests, e.g. wake up alarm
* Generate PLS and M3U-Playlists on request over stream URL
* Create individual landing pages with metadata for aggregators
* Certification for listeners from own infrastructure
* GDPR no tracking option
* Special handling for special aggregators

All communications with Audalaxy user audio streams comprises of a set of parameters that can be passed in the stream request. These parameters will capture sufficient details about the available opportunity and help serve a targeted audio stream to the user.

### Request listener audio streams

#### URL-Scheme

The URLs to request audio streams are systematized according to the following scheme:

```
https://domain/programkey/format/aggregator/listenerid/?parameters
```

#### Parts of audio stream request

**Domain:**

StreamURL domain for this channel

Example: `streams.audiobrand.com`

**Programkey:**

Short identifier of this stream name

Type: string

Example: `chill`

**Format:**

Codec and bit rate combined

Type: string

Example: `mp3-192`

**Aggregator:**

Optional aggregator identifier that should be displayed in the analytics dashbord

Type: string

Example: `mywebsite` or `tunein`

**ListenerID:**

Optional unique ID to identify the listener

Type: string

Example: `142e4f19b49da39529de786f81344b76`

{% hint style="info" %}
Hint:

If you use a specific provider to generate the listener ID and use dependent functions, then please use the listener IDs container.

* [Build the listener IDs container](/docs/listener-id-and-meta-id/listener-id.md#listener-ids-and-listener-ids-containers-working-draft)
  {% endhint %}

**Parameters:**

Optional URL parameters

Type: string

Example: `tracking=true`

#### Request audio streams via media file (m3u/pls/m3u8)

This is an extension of the standard [URL-Scheme](#url-scheme). To request media file playlists, add a file extension to the URL.

**m3u**

Example 1: `https://domain/programkey/format/`play.m3u

Example 2: `https://domain/programkey/format/aggregator/`play.m3u`?parameters`

Example 3: `https://domain/programkey/format/aggregator/listenerid/`play.m3u`?parameters`

**pls**

Example 1: `https://domain/programkey/format/`play.pls

Example 2:`https://domain/programkey/format/aggregator/`play.pls`?parameters`

Example 3:`https://domain/programkey/format/aggregator/listenerid/`play.pls`?parameters`

**m3u8**

Example 1:`https://domain/programkey/format/`play.m3u8

Example 2:`https://domain/programkey/format/aggregator/`play.m3u8`?parameters`

Example 3:`https://domain/programkey/format/aggregator/listenerid/`play.m3u8`?parameters`

#### Parameters

**tracking**

This is a simple GDPR no tracking option. All parameters will be drop. Possible values are true and false. Default value assumed is false.

Options: `true`, `false`

Default: `true`

Example: `tracking=false`

{% hint style="info" %}
**Get started Audalaxy Developers:**

* [Integrating a TCF 2.0 CMP Consent](/docs/tcf/tcf.md)
  {% endhint %}

## Protected streams, Authentication

This service is useful for special content without public access, e.g. behind a paywall. Protected streams are only accessible with proper authentication. The authentication is based on user specific cryptographically secured JWT (JSON Web Token) with a defined TTL. The enterprise support level is required for further details.

## MetaSpreader

The MetaSpreader is a scalable system solution to send current audio stream metadata to different receivers.

**Supported receiver types:**

* Audalaxy Audiostreamer
* JSON-HTTP push to external targets / URLs
* Icecast-Mounts
* AIS-Mounts
* Radioplayer
* radio.net
* FTP servers

{% hint style="info" %}
**Related topics for DevOps**

* [MetaSpreader configuration settings](/docs/metaspreader-configuration-settings/metaspreader-configuration-settings.md)
* [Metadata data-set reference](/docs/metadata-data-set-reference/metadata-data-set-reference.md)
* [MetaPort API Specification](/docs/metaport/metaport.md#api-specification)
* [Metaflow](/docs/platform-description/mediaflow-services.md#metaflow)
  {% endhint %}

## MetaPort

The MetaPort is a scalable and highly available system service to receive metadata with easy-to-use API. External playout systems or other services can push metadata to a secured endpoint. This is a required service, if you use external audio source(s) to push current metadata into your audio stream.

**Supported data types:**

* GET URL parameters
* POST JSON
* POST XML

{% hint style="info" %}
**Related topics for DevOps**

* [MetaPort API Specification](/docs/metaport/metaport.md#api-specification)
* [Metadata data-set reference](/docs/metadata-data-set-reference/metadata-data-set-reference.md)
* [MetaSpreader configuration settings](/docs/metaspreader-configuration-settings/metaspreader-configuration-settings.md)
* ​​[Metaflow](/docs/platform-description/mediaflow-services.md#metaflow)
* [Delay metadata](/docs/json-configurations-for-audio/json-configurations-for-audio.md#metadata-delay)
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://audalaxy.gitbook.io/docs/platform-description/networking-and-content-delivery.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
