Why should I use the new Titan SDK?
Migrating to the Titan SDK ensures your app is ready for the next generation of Titan OS devices and capabilities. It replaces the legacy DeviceInfo API with a forward-looking SDK that supports multi-brand compatibility and enables integration with new platform features including Text-to-Speech, Text Magnification, and App Control.Get started with Titan SDK
1
Compatibility check
Ensure your device is compatible with the SDK by checking the Platform Specifications.
2
Importing script
Import the script into the
<Head/>
tag at your project’s root HTML file:Note: Adding it to <Head />
will make sure the script is fully loaded before your app rendering.3
Access the global Titan SDK variable
Titan SDK is exposed as a global variable.
Supported brands and models
The Titan SDK is designed to support all TVs powered or maintained by Titan OS, offering a consistent integration experience across brands and devices. Today, this includes:- Selected Philips TVs from 2020 models
- Selected JVC TVs starting from 2025 models
Accessibility
The SDK provides tools to integrate Text-to-Speech (TTS) and Text Magnification. These features are part of our ongoing effort to make TVs more accessible and to comply with the European Accessibility Act (EAA) requirements. Accessibility support is initially available on:- Philips 2025 models
- JVC 2025 models
App Control
App Control allows your application to interact with and launch other applications on the Titan OS platform. This feature, while not new, is now fully integrated into the Titan SDK, initially providing the capability to open other apps. For more information, please visit our App Control page.Migration from DeviceInfo API to Titan SDK
To help you transition from the DeviceInfo API to the new Titan SDK, we have prepared a dedicated migration guide and practical code examples. Visit our Migration to Titan SDK page to get started.Dictionary
The library exposes a structured set of objects and functions to interact with the Titan OS environment. In this section, you’ll find a detailed dictionary of key components, organized for easier reference.Device Information
Object/Function Name | Type | Description |
---|---|---|
deviceInfo | Object | Contains functions to retrieve device-specific information. |
deviceInfo.getDeviceInfo() | Function | Retrieves detailed device information, including hardware and software specifics. Tailor experiences based on these capabilities. |
getDeviceInfo()
function returns an object containing information about the device’s channel, product details, and some high-level capabilities. Below are the properties you can expect from the returned object:
Property Path | Type | Description | Example Value |
---|---|---|---|
Channel | Object | Contains information related to the device’s channel and app store context. | |
Channel.appStore | string | The name of the application store the device primarily uses. | TitanOS |
Channel.vendor | string | The vendor of the channel or platform. | TPV |
Channel.brand | string | The brand associated with the channel or platform. | Philips |
Product | Object | Contains details specific to the device product. | |
Product.platform | string | The platform name of the device. | TPN258E |
Product.year | string | The model year of the device. | 2025 |
Product.deviceID | string | A unique identifier for the device. | b5778bff-de7f-5688-a815-cbf05a26fed0 |
Product.firmwareVersion | string | The version of the device’s firmware. | 058.002.179.041 |
Product.firmwareComponentID | string | The identifier for the device’s firmware component. | TPN258E |
Product.mac | string | The MAC address of the device’s network interface. | 94:bd:be:64:ed:f7 |
Product.WhaleAdID | string | The advertising ID. | 27aa044c-0951-9ee2-9870-676d183a3d12 |
Product.language | string | The device’s configured language. | en |
Product.country | string | The device’s configured country. | BG |
Product.ifa | string | The Identifier for Advertisers (IFA) or Device Advertising Identifier. | 883e340c-8877-464a-ab50-68f4ef62f955 |
Product.ifaType | string | The type of Identifier for Advertisers (e.g., dpid ). | dpid |
Capability | Object | Contains flags indicating the device’s supported features and technologies. | |
Capability.os | string | The operating system of the device. | Linux |
Capability.browserEngine | string | The browser engine used by the device. | Blink |
Capability.supportPlayready | boolean | "unknown" | Indicates support for Microsoft PlayReady DRM. | |
Capability.supportWidevineModular | boolean | "unknown" | Indicates support for Google Widevine Modular DRM. | |
Capability.support3d | boolean | Indicates support for 3D content display. | |
Capability.supportKeyNumeric | boolean | Indicates if numeric keys (0-9) are supported on the remote control. | |
Capability.supportKeyColor | boolean | Indicates if color keys (Red, Green, Yellow, Blue) are supported. | |
Capability.supportMultiscreen | boolean | Indicates if the device supports multi-screen functionality. | |
Capability.multiaudioSupport | boolean | Indicates if multiple audio tracks are supported for media playback. | |
Capability.TTMLInbandSupport | boolean | Indicates support for TTML (Timed Text Markup Language) in-band subtitles. | |
Capability.TTMLOutofbandSupport | boolean | Indicates support for TTML (Timed Text Markup Language) out-of-band subtitles. | |
Capability.supportUHD | boolean | Indicates support for Ultra High Definition (UHD) display resolution. | |
Capability.supportFHD | boolean | Indicates support for Full High Definition (FHD) display resolution. | |
Capability.supportHDR | boolean | Indicates support for HDR High Dynamic Range | |
Capability.supportHDR_HDR10 | boolean | Indicates support for HDR10 High Dynamic Range. | |
Capability.supportHDR_DV | boolean | Indicates support for Dolby Vision High Dynamic Range. | |
Capability.supportMultiAudio | boolean | Indicates support for multiple audio tracks in general. | |
Capability.supportTTMLInband | boolean | Indicates support for in-band TTML captions. | |
Capability.supportTTMLOutofband | boolean | Indicates support for out-of-band TTML captions. | |
Capability.supportAdobeHDS | boolean | “unknown” | Indicates support for Adobe HTTP Dynamic Streaming. | |
Capability.supportWidevineClassic | boolean | “unknown” | Indicates support for Google Widevine Classic DRM. | |
Capability.supportDolbyAtmos | boolean | Indicates support for Dolby Atmos audio technology. | |
Capability.supportWebSocket | boolean | Indicates support for WebSocket communication. | |
Capability.supportEME | boolean | Indicates support for Encrypted Media Extensions (EME). | |
Capability.hasStorage | boolean | Indicates if the device has persistent local storage available. | |
Capability.supportAppleHLS | boolean | Indicates support for Apple HTTP Live Streaming (HLS). | |
Capability.supportMSSmoothStreaming | boolean | Indicates support for Microsoft Smooth Streaming. | |
Capability.supportMSSInitiator | boolean | Indicates support for Microsoft Smooth Streaming Initiator. | |
Capability.supportMPEG_DASH | boolean | Indicates support for MPEG-DASH streaming. | |
Capability.drmMethod | string | The primary Digital Rights Management (DRM) method employed by the device. | OIPF |
Capability.supportOIPF | boolean | Indicates support for Open IPTV Forum (OIPF) standards. |
Accessibility
Object/Function Name | Type | Description |
---|---|---|
accessibility | Object | Provides functions to interact with the TV’s accessibility features. |
accessibility.isTTSSupported() | Function | Checks if Text-to-Speech (TTS) is supported and enabled on the current device. Returns true or false . |
accessibility .isTextMagnificationSupported() | Function | Determines if text magnification is supported by the device. Returns true or false . |
accessibility.getTTSSettings() | Function | Retrieves the TV’s current Text-to-Speech settings, including rate, pitch, and volume, for a personalized auditory experience. |
accessibility.getTMSettings() | Function | Retrieves the TV’s current Text Magnification settings, such as zoom levels and text contrast. |
accessibility.startSpeaking() | Function | Initiates Text-to-Speech for a given string, speaking the text through the TV’s audio output based on current TTS settings. |
accessibility.stopSpeaking() | Function | Stops any currently active Text-to-Speech output. Allows for control over speech interruption. |
accessibility.onTTSSettingsChange() | Function | Registers a callback for when TTS settings are changed by the user. Enables your app to react to these adjustments. |
accessibility.onTMSettingsChange() | Function | Registers a callback for when Text Magnification settings are changed by the user. Allows your app to update its UI based on new preferences. |
accessibility .onTTSConfigurationChange() | Function | Registers a callback for global TTS configuration changes, such as default voice or language. |
accessibility .onTMConfigurationChange() | Function | Registers a callback for global Text Magnification configuration changes. |
App Management & Remote Control
Object/Function Name | Type | Description |
---|---|---|
apps | Object | Contains functions for overall application management. |
apps.launch() | Function | Initiates the launch of another application. Takes a parameter for the app to be launched, and optionally data to pass along. |
getRemoteControlKeyMap() | Function | Retrieves the current key mapping for the TV’s remote control. Understands button to action correlations. |
setRemoteControlKeyMap() | Function | Allows customization or overriding of the TV’s default remote control key mapping. Useful for specific app behaviors. |
onRemoteControlKeyMapChange() | Function | Registers a callback when the remote control key mapping changes. Helps your app synchronize with user or system adjustments. |
TypeScript
Currently the Titan SDK is based on Javascript. If you want to have access to the types, pleaseReal-World Examples & Resources
To see these features in action and to understand more about the integration, in addition to the following next pages listed at the end of this page, explore the following examples on GitHub:- Example: Hello Titan: A basic setup to display available SDK functions.
- Example: Exploring Device Info: Demonstrates retrieving device information.
- Example: Text-to-Speech: A fundamental example of using
startSpeaking
. - Example: Text-to-Speech with text content: Shows TTS with a text extracted from the text content.
- Example: Text-to-Speech with Navigation: A fake carousel of movies with TTS speaking the values from the ‘aria-label’.
- Example: Text Magnification: Applies text magnification to labels`.
Content Security Policy (CSP)
If your app uses Content Security Policies (CSP), you might need to allow our domain. Our SDK connects to services on*.titanos.tv
(like for crash reports or updates). Please add *.titanos.tv
to your CSP’s allowed connections (e.g., connect-src) to ensure everything works smoothly. This helps avoid issues where your app might block essential SDK features.
If you have rules for iFrames (e.g., frame-src
and child-src
), it’s recommended to add our domain to your whitelist as well, but it’s not obrigatory. If your company policies requires to avoid the need of allowing our iFrame, it should not prevent you to use the library, but it will display an error/warning in the logs and some features might be affected, such as the App Conttrol.
known issues
IFA on 2020-2022 Philips devices
IFA on 2020-2022 Philips devices
The IFA (Identifier for Advertising) is currently not being returned for 2020-2022 Philips devices.We are actively working on a solution. In the meantime, please feel free to reach out to us at titan-sdk-support@titanos.tv if you require guidance on addressing this issue temporarily.
supportDolbyAtmos property discrepancies
supportDolbyAtmos property discrepancies
The Capability.supportDolbyAtmos property, returned by the getDeviceInfo function, has the following behaviors:
- 2020-2023 devices: Returns “unknown” instead of a boolean value.
- 2024 NT676 and 2025 NT690 4K models: Returns false when it should return true.
firmwareVersion property returns 1.0.0
firmwareVersion property returns 1.0.0
The firmwareVersion property returns invalid data for some devices, such as preventing access to the correct firmware version though SDK.We are currenly working to resolve this issue for the devices affected, but in the meantime, if you want to get this information you can extract it from the user agent. If you decide to do it for the moment, please make sure the implementation covers all the TV brands, as depending on the brand the User Agent structure might change. To see how to extract it, please access the User Agent page.
CSP policies for iFrames error/warning
CSP policies for iFrames error/warning
This issue only happens if your app whitelists domains in the CSP Policies, but should not prevent you to use the Titan SDK. Given that the SDK uses iFrame behind the scenes, CSP blocks one of our components, but then it recover and use another component as a fallback.
Our team is working on a new approach for it. For the moment, you can ignore the error.
