Tuned Global

Aviation & In-Flight Entertainment — Quick Start Guide

Overview

This guide covers integrating Tuned Global's APIs into an airline in-flight entertainment (IFE) system. Aviation is an offline-first environment — aircraft have no reliable internet during flight, so all music content must be delivered, validated, and loaded onto the IFE system before departure.

Tuned Global's platform handles the full pipeline: catalogue access, playlist curation, rights-cleared content delivery, audio file export, and royalty reporting. By the end of this guide you'll understand the end-to-end workflow from catalogue to cabin.

Estimated time: 15–20 minutes

Prerequisites

  • A StoreId issued by Tuned Global for your airline environment
  • OAuth2 client credentials (client ID and secret) from Tuned Global
  • Access to the Catalogue Delivery Service (CDS) — confirm with Tuned Global
  • HMAC credentials if using authenticated CDS endpoints
  • A content staging environment where IFE builds are assembled before upload to aircraft

Architecture: Catalogue to Cabin

In-flight entertainment operates on a fundamentally different model to consumer streaming. There is no real-time API access at 35,000 feet — everything is pre-loaded.

Aspect Consumer Streaming Aviation IFE
Connectivity Always online Offline during flight
Content delivery Stream on demand Pre-loaded content builds
Update frequency Real-time Monthly or per-cycle builds
Playlist control User-driven Curated by airline/content team
Rights model Per-territory streaming Per-territory, per-route clearance
Reporting Real-time play logs Post-flight batch reporting

The typical IFE content cycle:

  1. Curate — Content team builds playlists using Tuned Global's CMS (Autotune) or via API
  2. Validate — Confirm all tracks are rights-cleared for the airline's routes and territories
  3. Export — Download audio files and metadata via the CDS API
  4. Build — Assemble the content package for your IFE system format
  5. Load — Deploy the build to aircraft (via ground-based upload or portable media)
  6. Report — After flights, submit play logs for royalty reporting

Step 1: Authenticate

Obtain a JWT token using your service account credentials.

Endpoint: POST https://api-authentication-connect.tunedglobal.com/oauth2/token

curl -X POST "https://api-authentication-connect.tunedglobal.com/oauth2/token" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

Response:

{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "bearer",
  "expires_in": 86400
}

Save the access_token for all subsequent requests.

Step 2: Browse and Search the Catalogue

Search the licensed catalogue to discover tracks available for your IFE programme. Only tracks cleared under your agreement will be returned.

Search by Keyword

Endpoint: GET https://api-metadata-connect.tunedglobal.com/api/v2.4/search/songs

curl -X GET "https://api-metadata-connect.tunedglobal.com/api/v2.4/search/songs?q=Bohemian%20Rhapsody&offset=0&count=10" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Country: AU"

Use advanced search to filter by genre, mood, BPM, decade, or custom tags — useful for building themed playlists (e.g. "relaxing jazz for long-haul", "upbeat pop for boarding").

Endpoint: GET https://api-metadata-connect.tunedglobal.com/api/v2.4/search/songs/advanced

curl -X GET "https://api-metadata-connect.tunedglobal.com/api/v2.4/search/songs/advanced?genre=Jazz&mood=Relaxing&offset=0&count=50" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Country: AU"

Browse by Artist or Album

GET https://api-metadata-connect.tunedglobal.com/api/v2.4/artists/{artistId}/songs
GET https://api-metadata-connect.tunedglobal.com/api/v2.4/albums/{albumId}

Note the Track IDs from search results — you'll need them when building playlists and requesting audio files.

Step 3: Retrieve Track and Album Metadata

Fetch detailed metadata for tracks you plan to include in the IFE build. This metadata populates the on-screen display for passengers.

Track Details

Endpoint: GET https://api-metadata-connect.tunedglobal.com/api/v2.4/tracks/{trackId}

curl -X GET "https://api-metadata-connect.tunedglobal.com/api/v2.4/tracks/987654" \
  -H "StoreId: YOUR_STORE_ID"

Returns: track name, artist, album, duration, ISRC, genre, and image URLs.

Album Artwork

Use the image engine to generate artwork sized for your IFE screen resolutions:

https://[THUMBOR_URL]/unsafe/fit-in/600x600/filters:quality(80):format(jpeg)/[image_path]

See the Image Handling guide for full details on resizing and format options.

Bulk Metadata

For large playlist builds, fetch multiple tracks in a single request:

Endpoint: POST https://api-metadata-connect.tunedglobal.com/api/v2.4/tracks/multiple

curl -X POST "https://api-metadata-connect.tunedglobal.com/api/v2.4/tracks/multiple" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Content-Type: application/json" \
  -d '{"TrackIds": [987654, 987655, 987656, 987657]}'

Step 4: Manage Playlists

IFE playlists are typically curated by the airline's content team or a partner like Spafax. Playlists can be created and managed via the Autotune CMS or programmatically via the API.

Fetch an Existing Playlist

Endpoint: GET https://api-metadata-connect.tunedglobal.com/api/v2.4/playlists/{playlistId}

curl -X GET "https://api-metadata-connect.tunedglobal.com/api/v2.4/playlists/55001?offset=0&count=500" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

The response contains the full track listing with metadata — this becomes your playlist manifest for the IFE build.

Check for Playlist Updates

Before rebuilding content packages, check whether playlists have changed since your last export:

Endpoint: GET https://api-metadata-connect.tunedglobal.com/api/v2.4/playlists/{playlistId}/updated

curl -X GET "https://api-metadata-connect.tunedglobal.com/api/v2.4/playlists/55001/updated" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Compare the returned timestamp against your last build to decide if a refresh is needed.

Step 5: Validate Content Rights

Before exporting audio, validate that every track in your playlist is cleared for the territories your airline operates in. This is critical — playing unlicensed content on international routes creates legal exposure.

Validate Tracks

Endpoint: POST https://api-services-connect.tunedglobal.com/api/v3/contentcontrol/validatetracks

curl -X POST "https://api-services-connect.tunedglobal.com/api/v3/contentcontrol/validatetracks" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"TrackIds": [987654, 987655, 987656]}'

The response identifies any tracks that are invalid or have restricted territorial rights. Remove flagged tracks from your build before export.

Important: Run validation for each territory your routes cover. A track cleared for Australia may not be cleared for the United States. Build territory-specific playlists or filter at the route level.

Step 6: Export Audio via CDS

The Catalogue Delivery Service (CDS) is the primary mechanism for exporting audio files for offline IFE builds. Unlike consumer streaming (which uses short-lived signed URLs), the CDS provides bulk audio delivery designed for content packaging workflows.

Request Audio Files

For each validated track, request the audio asset through the CDS:

Endpoint: POST https://api-services-connect.tunedglobal.com/api/v3/plays/{deviceId}/{trackId}/token

curl -X POST "https://api-services-connect.tunedglobal.com/api/v3/plays/IFE-BUILD-01/987654/token" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Then retrieve the download URL:

Endpoint: POST https://api-services-connect.tunedglobal.com/api/v3/plays/{deviceId}/{trackId}/stream

curl -X POST "https://api-services-connect.tunedglobal.com/api/v3/plays/IFE-BUILD-01/987654/stream?streamType=Music&streamProvider=Tuned" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '"STREAM_TOKEN_FROM_ABOVE"'

Download the file promptly — URLs are time-limited.

Build the Content Package

Once all audio files and metadata are downloaded:

  1. Organise audio files by playlist and track order
  2. Generate metadata manifests in your IFE system's required format (XML, JSON, or proprietary)
  3. Include artwork at the resolutions your seatback or BYOD screens require
  4. Package everything according to your IFE vendor's specification (e.g. Panasonic, Thales, Safran)

Content Freshness

IFE content is typically refreshed on a monthly cycle. Plan your build schedule to:

  • Pull updated playlists and new releases at the start of each cycle
  • Validate rights for all territories on the airline's route network
  • Allow time for QA testing before deployment to aircraft
  • Coordinate with your IFE vendor's upload windows

Step 7: Report Playback

After each flight, the IFE system generates play logs detailing which tracks passengers played. These logs must be submitted to Tuned Global for royalty reporting and compliance.

Log Format

Each play event should include:

{
  "TrackId": 987654,
  "LogPlayType": "Start",
  "Seconds": 0,
  "Source": "Playlist",
  "SourceId": "55001",
  "Guid": "unique-play-event-id",
  "Country": "AU",
  "PlayerType": "IFE"
}

Required event types:

LogPlayType       When                                          Seconds
---------------   -------------------------------------------   ----------------
Start             Passenger begins playback                     0
30SecondMark      30 seconds elapsed (mandatory for royalties)  30
EndOfFile         Track finishes                                Total duration
Skip              Passenger skips track                         Current position

Batch Upload

Endpoint: POST https://api-services-connect.tunedglobal.com/api/v3/plays/{deviceId}

curl -X POST "https://api-services-connect.tunedglobal.com/api/v3/plays/IFE-AIRCRAFT-9MXYZ" \
  -H "StoreId: YOUR_STORE_ID" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "TrackId": 987654,
    "LogPlayType": "Start",
    "Seconds": 0,
    "Source": "Playlist",
    "SourceId": "55001",
    "Guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "Country": "AU",
    "PlayerType": "IFE"
  }'

Upload logs in batch after each flight or group of flights. The aircraft's tail number or registration makes a good device identifier for tracking.

Critical: Play logs are legally required for royalty payments to rights holders. Retain all logs until confirmed uploaded. Missing logs create compliance gaps that affect your licensing agreements.

BYOD (Bring Your Own Device) Model

Some airlines offer a wireless IFE model where passengers stream content on their personal devices via the aircraft's onboard Wi-Fi network. In this model:

  • The aircraft runs a local media server with pre-cached content
  • Passengers connect to the cabin Wi-Fi and access a web portal or companion app
  • Streaming happens locally (aircraft server to passenger device) — no ground internet required
  • The integration follows the same content preparation steps above, but the media server handles playback and logging

For BYOD deployments, Tuned Global can provide white-label streaming applications that passengers use before, during, and after their journey. Contact Tuned Global for BYOD-specific integration guidance.

Troubleshooting

Error                              Cause                                    Solution
--------------------------------   ---------------------------------------- ------------------------------------------------
403 on content export              Token expired or licence lapsed           Re-authenticate (Step 1), verify CDS access
Track validation fails             Track removed or rights changed           Remove track from build, check for replacement
Missing metadata fields            Track not fully ingested                  Contact Tuned Global support
Artwork returns 404                Image URL changed since last build        Re-fetch metadata (Step 3) for updated URLs
Play logs rejected                 Invalid device ID or malformed payload    Verify JSON format matches schema
Territory mismatch                 Playlist contains tracks not cleared      Re-validate per territory (Step 5)

Quick Reference — API Endpoints

Action                     Method   Endpoint
-------------------------  ------   --------------------------------------------------------
Authenticate               POST     /oauth2/token
Search catalogue           GET      /api/v2.4/search/songs
Advanced search            GET      /api/v2.4/search/songs/advanced
Track metadata             GET      /api/v2.4/tracks/{trackId}
Bulk track metadata        POST     /api/v2.4/tracks/multiple
Fetch playlist             GET      /api/v2.4/playlists/{playlistId}
Check playlist update      GET      /api/v2.4/playlists/{playlistId}/updated
Validate tracks            POST     /api/v3/contentcontrol/validatetracks
Request stream token       POST     /api/v3/plays/{deviceId}/{trackId}/token
Get download URL           POST     /api/v3/plays/{deviceId}/{trackId}/stream
Upload play log            POST     /api/v3/plays/{deviceId}

Notes

  • Replace YOUR_STORE_ID, YOUR_CLIENT_ID, YOUR_CLIENT_SECRET, YOUR_ACCESS_TOKEN, and example IDs with your actual credentials from Tuned Global.
  • Metadata endpoints use API version 2.4 or above. Services endpoints use v3.
  • Aviation licensing is distinct from consumer streaming. Your agreement covers specific content, territories, and usage rights — the API enforces these restrictions automatically.
  • For large fleet deployments or custom CDS workflows, contact Tuned Global about dedicated build pipelines and RAPPORT reporting integration.

On this page