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:
- Curate — Content team builds playlists using Tuned Global's CMS (Autotune) or via API
- Validate — Confirm all tracks are rights-cleared for the airline's routes and territories
- Export — Download audio files and metadata via the CDS API
- Build — Assemble the content package for your IFE system format
- Load — Deploy the build to aircraft (via ground-based upload or portable media)
- 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"
Advanced Search
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:
- Organise audio files by playlist and track order
- Generate metadata manifests in your IFE system's required format (XML, JSON, or proprietary)
- Include artwork at the resolutions your seatback or BYOD screens require
- 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.
