Terms Accepted

Roku · captured 2026-09-05T11:31:46Z roku·REC·d6ef3a CAP-00045

Roku Advertising Framework (RAF) docs

The text as it stood on 2026-09-05. This document was captured 4 times that day, so the date on its own does not name one of them — it returns the last. To cite exactly this capture, use /d/roku-advertising-framework-raf-docs/v/cap-00045, which will always mean this one and nothing else.

Captured
2026-09-05
Words
1,798
HTTP
200
Size
664.5 KB
State
First capture

HTML (as served) Extracted text

Cite this capture

Everything a footnote needs, including the checksum, so a reader can confirm they are looking at the same bytes you did. Select and copy.

Roku, “Roku Advertising Framework (RAF) docs”.
Captured 2026-09-05T11:31:46Z by Terms Accepted.
Permalink: https://termsaccepted.org/d/roku-advertising-framework-raf-docs/v/cap-00045
Original:  https://developer.roku.com/docs/developer-program/advertising/roku-advertising-framework.md
SHA-256:   227efe711d3b2e7997cb73e3cc247f691ffbae61b673ad1b6b30cfd40464e005
Provenance: captured directly from the publisher.
Verify this file — SHA-256

The file below is stored under this checksum, so altering it would change its name. Download the copy above and run sha256sum on it: if the value differs from this one, you are not looking at what we captured.

227efe711d3b2e7997cb73e3cc247f691ffbae61b673ad1b6b30cfd40464e005

Also captured that day

3

Every reading of this document on 2026-09-05. They may be identical; where they are not, the difference is a change the publisher made within a single day.

CapturedPermalinkWordsState
2026-09-05T15:01:54Z cap-00428 1,728 Captured a different way (not a content change)
2026-09-05T16:18:49Z cap-00711 1,728 Unchanged
2026-09-05T17:19:18Z cap-01364 1,728 Unchanged

The document

Advertising For AI agents: visit https://developer.roku.com/dev/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI. Append .md to any documentation page URL to get its markdown version. Jump to Content Home Guides Guides Jump to Content Guides Advertising FEATURES Roku platform overview How apps work App development models Developer Dashboard User access management Email preferences Content engagement Streaming Store Roku Search Self-serve app promotion tool Roku Voice Monetization Subscriptions and one-time purchases Publisher payouts Video advertisements Analytics Reports App Engagement Report App Health Report App Stability Report Payout Audit Report Sales Activity Report Tax Withholding Report Transaction Report Viewership Summary Report Security on the Roku platform Legal SPECIFICATIONS Specifications overview Hardware specifications Streaming specifications Roku OS support for DASH-IF DRM & content protection Roku Search feed (JSON) Streaming Store graphics DEVELOPER Getting started First steps Activating developer mode Building your first app Creating a content feed Taking the online video course Samples App localization Architecture Manifest file Content metadata Development environment overview File system Certification Certification criteria Certification testing Static Analysis tests App Behavior Analysis tests Authenticated app testing Design Designing for devices UI philosophy Key Design Principles Roku's master UI Remote control buttons Ideal app features Best practices SceneGraph core concepts SceneGraph XML SceneGraph coordinate systems Other inherited properties Node field observers Remote control events SceneGraph data scoping SceneGraph BrightScript BrightScript support BrightScript/XML markup equivalence XML components overview Defining SceneGraph components SceneGraph compilation Component initialization order Creating custom components Threads Developing SceneGraph applications Specifying display resolution Handling application events Event loops Controlling screen layout Controlling screen program flow Downloading server content Playing Videos SceneGraph localization Transitioning to SceneGraph Media playback Screensavers Closed caption Trick mode BIF file creation using the Roku BIF tool HLS and DASH Bookmarking Instant Resume Fast video start Autoplay Text to speech Voice controls Implementing voice controls Selecting user profiles with Roku Voice Discovery Roku Search Implementing Roku Search Prioritizing authenticated apps Deep linking Instant Signup Continue Watching Direct to Play Profiles Kid & Teen Mode Advertising Integrating the Roku Advertising Framework Roku advertising requirements Implementing client-side ad stitching Implementing Server-Side Ad Insertion Using Roku Adapters Implementing the Demand API Roku Advertising Watermark API reference Implementing Nielsen Digital Content Ratings (DCR) measurement Roku Pay Getting started Enrolling in the Roku Partner Payouts Program Setting the monetization method Creating the product catalog Catalog 2.0 API integration guide Price tier reference guide Creating test users Setting up Roku Pay web services Implementing Roku Pay SceneGraph ChannelStore Roku Pay web services reference Roku Pay push notifications reference Receiving secured Roku Pay push notifications On-device upgrade and downgrade Tracking signup abandonment Creating TVOD apps (Catalog 1.0) Creating TVOD apps (Catalog 2.0) Introduction to Subscription Recovery Basic Subscription Recovery Enhanced Subscription Recovery Settings Testing Testing Roku Pay Testing a Roku Pay app Enabling billing testing Roku Pay integration requirements Roku Pay best practices Signup requirements and best practices Sign-in requirements and best practices Roku Pay reports Authentication On-Device Authentication Automatic Account Link Rendezvous linking Roku Analytics Component Library (RACL) Debugging Capturing and decrypting SSL packets BrightScript debug protocol Publishing Packaging Roku apps App Publishing Developer Tools Roku Remote Tool Roku SceneGraph XML schema (XSD) Eclipse IDE support SGDEX RALE Roku Resource Monitor Using Roku Resource Monitor in Data Collection Mode Roku Resource Monitor session file specification Roku app tracing (with Perfetto) BrightScript Profiler BrightScript Profiler file format specification External Control Protocol (ECP) BrightScriptDoc Static Analysis Tool Command line utility Automated App Testing Roku WebDriver Roku Robot Framework Library Roku JavaScript Library Certification testing tool Performance Data management Memory management Optimization techniques Optimized data transfer and reference handling Measuring app performance Release notes Reverting Roku beta OS to production on devices Roku Advertising Framework release notes Secure WebSockets roWebSocket roWebSocketEvent Development partners REFERENCES Reference overview SceneGraph Component functions init() onKeyEvent() Xml Elements children component <interface> script Node Scene Abstract nodes AnimationBase ArrayGrid DynamicKeyboardBase LabelBase Renderable nodes Poster Rectangle SimpleLabel Label nodes InfoPane Label MonospaceLabel MultiStyleLabel Animation nodes AnimatedImage Animation ColorFieldInterpolator FloatFieldInterpolator ParallelAnimation SequentialAnimation Vector2DFieldInterpolator Typographic nodes Font ScrollableText ScrollingLabel Control nodes ChannelStore ComponentLibrary ContentNode MaskGroup Task Timer Layout group nodes ButtonGroup Group LayoutGroup TargetGroup Dynamic voice keyboard nodes DynamicCustomKeyboard DynamicKeyGrid DynamicKeyboard DynamicMiniKeyboard DynamicPinPad Key Definition File VoiceTextEditBox Standard dialog framework StandardDialog StandardKeyboardDialog StandardMessageDialog StandardPinPadDialog StandardProgressDialog StdDlgActionCardItem StdDlgAreaBase StdDlgBulletTextItem StdDlgButtonArea StdDlgButton StdDlgContentArea StdDlgCustomItem StdDlgDeterminateProgressItem StdDlgGraphicItem StdDlgItemBase StdDlgItemGroup StdDlgKeyboardItem StdDlgMultiStyleTextItem StdDlgProgressItem StdDlgSideCardArea StdDlgTextItem StdDlgTitleArea Dialog Nodes Dialog KeyboardDialog PinDialog ProgressDialog Widget Nodes BusySpinner Button Keyboard MiniKeyboard ParentalControlPinPad PinPad TextEditBox Lists and grids CheckList LabelList MarkupGrid MarkupList PosterGrid RadioButtonList RowList TargetList TargetSet TimeGrid ZoomRowList Sliding panels GridPanel ListPanel Overhang OverhangPanelSetScene Panel PanelSet Media playback nodes Audio SoundEffect Video BrightScript Components roAnimatedImage roAppInfo roAppManager roAppMemoryMonitor roArray roAssociativeArray roAudioGuide roAudioMetadata roAudioPlayer roAudioResource roBitmap roBoolean roByteArray roCECStatus roChannelStore roCompositor roDataGramSocket roDateTime roDeviceCrypto roDeviceInfo roDouble roDsa roEVPCipher roEVPDigest roFileSystem roFloat roFont roFontRegistry roFunction roHdmiStatus roHMAC roHttpAgent roImageMetadata roInput roInt roInvalid roList roLocalization roLongInteger roMessagePort roMicrophone roPath roProgramGuide roRegex roRegion roRegistry roRegistrySection roRemoteInfo roRenderThreadQueue roRSA roScreen roSGNode roSGScreen roSocketAddress roSprite roStreamSocket roString roSystemLog roTextToSpeech roTextureManager roTextureRequest roTimespan roUrlTransfer roUtils roVideoPlayer roXMLElement roXMLList Events roAnimatedImageEvent roAppMemoryNotificationEvent roAudioPlayerEvent roCECStatusEvent roChannelStoreEvent roDeviceInfoEvent roFileSystemEvent roHdmiStatusEvent roInputEvent roMicrophoneEvent roSGNodeEvent roSGScreenEvent roSocketEvent roSystemLogEvent roTextToSpeechEvent roTextureRequestEvent roUniversalControlEvent roUrlEvent roVideoPlayerEvent Interfaces ifAnimatedImage ifAppInfo ifAppManager ifAppMemoryMonitor ifArray ifArrayGet ifArrayJoin ifArraySet ifArraySizeInfo ifArraySlice ifArraySort ifAssociativeArray ifAudioGuide ifAudioMetadata ifAudioPlayer ifAudioResource ifBoolean ifByteArray ifCECStatus ifChannelStore ifCompositor ifDateTime ifDeviceCrypto ifDeviceInfo ifDouble ifDraw2D ifDsa ifEnum ifEVPCipher ifEVPDigest ifFileSystem ifFloat ifFont ifFontRegistry ifFunction ifGetMessagePort ifHdmiStatus ifHMAC ifHttpAgent ifImageMetadata ifInput ifInt ifIntOps ifList ifListToArray ifLocalization ifLongInt ifMessagePort ifMicrophone ifPath ifProgramGuide ifRegex ifRegion ifRegistry ifRegistrySection ifRemoteInfo Ifrenderthreadqueue ifRSA ifScreen ifSetMessagePort ifSGNodeBoundingRect ifSGNodeChildren ifSGNodeDict ifSGNodeField ifSGNodeFocus ifSGNodeHttpAgentAccess ifSGScreen ifSocket ifSocketAddress ifSocketAsync ifSocketCastOption ifSocketConnection ifSocketConnectionOption ifSocketConnectionStatus ifSocketOption ifSocketStatus ifSourceIdentity ifSprite ifString ifStringOps ifSystemLog ifTextToSpeech ifTextureManager ifTextureRequest ifTimeSpan ifToStr ifUrlTransfer IfUtils ifVideoPlayer ifXMLElement ifXMLList Language BrightScript language reference Component architecture Conditional compilation Error handling in BrightScript Expressions, variables, and types Format strings Global math functions Global string functions Global utility functions Program statements Reserved words Runtime functions Statement summary Deprecated APIs VIDEOS Development courses Getting started Streaming overview Creating an SVOD app: First steps Roku development overview Enabling Developer Mode SceneGraph Developers: Build an App Introduction to the course Development setup Core concepts Creating the content feed Creating a Grid Screen Adding the Video Player Debugging apps Creating a Details Screen Creating an Episodes Screen Displaying video ads Offering subscriptions Deep linking Certification testing Demos Doc Portal Upgrades Webinar Developer Summit 2025 Catalog 2.0 Webinar Developer Summit 2024 Enhanced Subscription Recovery Webinar Roku Resource Monitor Memory Management Webinar Roku Resource Monitor 3.0 Webinar Roku OS 13.0 Developer Features Webinar Roku Pay JWT-secured Push Notifications Webinar Developer Summit 2023 Developer Summit 2022 Roku Resource Monitor Webinar Roku Advertising Watermark Webinar Roku Voice Webinar Trickplay Thumbnail Webinar Developer Summit 2021 Distributing an App in Germany Webinar BrightScript Profiler Webinar Developer Summit 2020 BrightScript Remote Network Debug Protocol Automated app testing Managing user access App Tracing (with Perfetto) Webinar Submitting a Roku Search feed Platform features Roku Pay: Simplifying customer payments Running App Behavior Analysis testing on authenticated apps Distributing apps in Europe Roku Voice THE ROKU CHANNEL The Roku Channel overview Roku Content Partner Portal Dashboard Analytics Key features Title tracking status Storefront Creatives Video on Demand Premium Subscriptions Roku Originals Branded production guidelines Alternative & documentary production guidelines Scripted production guidelines Alternative production legal guidelines Scripted production legal guidelines Branded delivery specifications Alternative media delivery specifications Scripted media delivery specifications Spanish language - alternative media delivery specifications Feature/doc/special - media delivery specifications Acquired content - scripted media delivery specifications Content delivery Especificaciones para la ingesta Avails and Committed Title List specifications FVOD submissions Content tags and metadata Linear The Roku Channel live linear ingest specifications (OVP) EPG on The Roku Channel FAQs DEVELOPER Advertising Overview of RAF features for integrating video ads into Roku apps The Roku Advertising Framework (RAF) enables the seamless integration of video advertising into your apps. The RAF library, which is built directly into the Roku SDK, includes the following features that make it easy to provide a consistent ad experience across apps: Parsing of ads in VAST2 , VAST3 , VMAP , and FreeWheel's SmartXML formats (see the table below for details). Built-in solution for displaying client-side (CSAI) video ads that works with Google Ad Manager (formerly known as DFP), FreeWheel, SpotX, and other 3rd-party servers. Playback control for server-stitched ads. Client-side handling of tracking events that is aligned with the IAB/MRC's impression measurement guidelines . Audience measurement via Nielsen DAR / DCR , Comscore vCE , and other platforms. Per Roku's certification requirements , all ad measurement beacons must be fired directly by RAF client-side (they may not be wrapped). This is required to apply the Roku Advertising Watermark to the beacons. Interactive ads through Innovid, BrightLine, and Roku. Client-side solutions to minimize buffering between ads and content. Samples for implementing server-side ad insertion (SSAI) with Verizon Media Services, Adobe, Brightcove, Yospace, AWS Elemental MediaTailor servers, and Google Ad Manager Dynamic Ad Insertion (DAI). Certification requirement Per Roku's certification criteria , all apps that monetize advertising must integrate RAF to pass certification. Getting started To get started with your RAF integration, do the following: If you don't have an ad server, contact [email protected] for recommendations or alternative ad serving solutions. Read monetizing an app with video advertisements for monetization options. Read the certification requirements for ad-supported apps . Review the RAF integration guide . Supported features of popular ad formats VAST 2.0 Feature Supported Linear Ads Yes Wrapper and Inline Ads Yes Tracking Events Yes ClickThrough (interactive ads) Yes Companion Ads apiFramework handled: "innovid" "brightline" "brightline_RSG" MediaFile type "video/mp4" "video/x-mp4" "video/mp4-h264" "application/x-mpegurl" "application/vnd.apple.mpegurl" "application/json" Extension elements DFP waterfall TrueX Non-Linear Ads No VAST 3.0 Feature Supported Ad pods via sequence attribute Yes Extended error tracking Yes VAST tracking macros Yes Ad “buffet” selection Yes Skippable linear ads No OBA industry icon No VMAP Feature Supported Ad pods playlists Yes Tracking events Yes ‘repeatAfter’ AdBreak attribute No Extension elements No RAF video lesson You can learn how to implement RAF in order to display video ads in your app by watching the Displaying video ads video lesson in Roku's SceneGraph: Build an app online video course . This lesson describes how to implement RAF in order to seamlessly insert video ads into content. It highlights the different client and server-side ad insertion and stitching solutions provided by RAF, and explains how to get started with RAF in order to display video ads in your app. Updated 4 months ago Kid & Teen Mode Integrating the Roku Advertising Framework Did this page help you? Yes No Copy Page Certification requirement Getting started Supported features of popular ad formats RAF video lesson Terms and Conditions B2B Privacy Notice Developer Site About ads & cookies My Privacy Choices Developer Terms & Agreements CA B2B Privacy Notice © 2008- 2026 Roku, Inc.