Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Get Started
Design and Develop
Publish
Reference
Support
Skip to main content
Here’s what you need to know to integrate Vega Content Personalization into your app for Fire TV. If you want to review some of the types of data used for this integration, see the Data Type Reference. If the data isn’t accessible or needs to be transformed, this integration may take longer. Confirm your data is stored in the requested format using the documentation below.

Prerequisites

  • Access to the source code of your Fire TV app.
  • A Fire TV device that supports this integration. Check with your Amazon contact for a list of device types currently supported.
  • Your app must participate in the Catalog Ingestion process, so Fire TV recognizes the content IDs.
  • Your app must complete the Content Launcher integration.

Integration steps

Step 1. Include the package dependencies in your app

Add the kepler-content-personalization, headless-task-manager, and amzn/kepler-epg-provider dependencies in your package.json file.
  • The kepler-content-personalization package provides APIs for sending your content personalization data to the system.
  • The amzn/kepler-epg-provider package would provide the dependencies used for channelDescriptor in PlaybackEvent data model.
  • The headless-task-manager package provides APIs to register your data-pull background service with the system.

Step 2. Update your manifest file

Update your manifest.toml file to include Content Personalization support. Here’s an example for a sample app:
Here’s an example of the correct way to define multiple interfaces:
Here’s an incorrect way to define interfaces. Don’t do it this way.

Step 3. Make a sample API call

Begin with a sample/mock event generated at the app launch. To construct the event and send it, use the following code:

Step 4. Validate the integration

Trigger the sample event code you constructed to run inside your app. After you run the code successfully, view the logs to validate the SDK has been linked to your app and is processing the message. You can validate the steps by searching your app logs:
The log message you receive for the event shown in Step 3 should contain at least one of the following logs:

Step 5. Make API calls as part of in-app functionality

For each data type, review the data type’s “When to Send” section to understand where in your code to make calls to Vega Content Personalization. Find the relevant parts of your code that run when customers take each action and add an API call. Each data type has different triggers. For example, when a customer adds an item to their watchlist, you must call the reportNewCustomerListEntry API with the relevant information. First, locate the code in your app that adds items to the watchlist, and then make the API call as part of your logic.

Step 6. Implement your data pull service for background or off-device data

To allow Amazon to pull data from your app, implement the service as described below. The service contains everything needed to setup and connect, only requiring you to implement the functions to send data to a receiver object. This object allows you to share data in chunks, as needed. This prevents loading large lists into memory.
  1. Create a service.js file with the same path where package.json is located with the following content. This tells the system about the entry points for your content.dataRefresh.provider service.
  2. Create your Headless Service Interface file under src/headless/HeadlessServiceInterface.ts with the following content:
  3. Create your data pull service under src/headless/HeadlessService.ts with the following content:

Make changes to your catalog integration when directed by your Amazon contact

To make use of the activity data, Fire TV needs the following data from your existing Fire TV catalog integration. Fire TV’s public catalog integration documentation will be updated to include these elements in the future, but here is a preview of what’s needed concerning the Vega Content Personalization integration. Your Amazon contact will inform you of when to begin these catalog changes.
  • International - For expansion into other countries, Fire TV is moving from per-country catalogs to Fire TV’s global catalog format. This catalog change enables an easier transition if included and launched as part of your global catalog. However, Fire TV still supports per-country catalogs.

Amazon content ID

Vega Content Personalization supports content identification across different namespaces. All content IDs must be passed with an associated namespace in order for Amazon to identify the content item. Amazon supports the following namespace:

Amazon profile ID

All data types allow you to share an associated profile ID. Since there are different profile types, specify the namespace. Amazon currently supports the following profile ID namespace:

Reporting updates

The SDK contains functionality to share information using three types of operations:
  • New (example: reportNewCustomerListEntry) - Represents an incremental update to add a new entry to the dataset.
  • Removed (example: reportRemovedCustomerListEntry) - Represents a decremental update to remove an entry from the dataset.
  • Refreshed (example: reportRefreshedCustomerList) - Indicates changes to the dataset due to off-device action, and a new refreshed version of the list must be fetched using the data pull service.
New and Removed are useful when the customer interacts with content in the app, and it performs adds or removes. The Refreshed update is useful when there are significant changes to the list due to customer sign-in, off-device activity, or if you suspect the list is out of sync for another reason.

Providing large sets of data

When supplying large amounts of data through the data pull service, pull the data in reasonably small pages from your cloud backend and call the provider APIs as the data is being pulled down. This pull amount limits memory usage for your service and prevents your app from being terminated by the system.

Last modified on July 30, 2026