Skip to content
English - United States
  • There are no suggestions because the search field is empty.

ReelFlow Player API Reference

A complete guide to getting started with the ReelFlow API: from initial setup and targeting Flow IDs to controlling the Eye-catcher and Player via JavaScript.

Core Concepts

The ReelFlow Player can be configured to display on a page as one of two "types":

  • Overlay - hovering in the corner of the screen over existing content
  • Inline - inline, embedded in the flow of the page content

The ReelFlow embedded Player consists of two components:

  • Eye-catcher: A compact floating video preview on a loop (Overlay only)
  • Player: The main video player with full controls and action buttons

Getting Started

ReelFlow Player API Version 1.1.1 Documentation (August 2026).

As long as the Install Code is already added and verified working on your website (check from the Dashboard at Settings > Install Code), the Player API is available for you to use.

Initialising & accessing the ReelFlow Object

We use the defer attribute, which means the ReelFlow Player is loaded asynchronously.

You therefore should wait for the reelflow:ready event:

window.addEventListener('reelflow:ready', () => {
// ReelFlow object is now available and initialized
var targetFlow = ReelFlow.getFlow("F-123456ABCD");

targetFlow.player.show();
});

Interacting with a specific flow

The Flow ID can be find in the Flow Builder in the Dashboard, and looks something like this: F-123456ABCD.

// Get Flow instance with ID  'F-123456ABCD'
ReelFlow.getFlow('F-123456ABCD').eyeCatcher.show()
ReelFlow.getFlow('F-123456ABCD').eyeCatcher.on(/* ... */)
ReelFlow.getFlow('F-123456ABCD').player.play()
ReelFlow.getFlow('F-123456ABCD').player.on(/* ... */)

To identify which Flows and their types are available on the page, you can use the ReelFlow.getAvailableFlows() function. This can be useful in cases when you do not necessarily wish to hardcode a specific Flow ID, yet target a Flow you know is published on the page.

Swapping two Flows

If you want to swap one flow with another, we recommend this approach:

// Swapping a Flow that is playing   
ReelFlow.getFlow('F-123456ABCD').player.hide()
ReelFlow.getFlow('F-9988776XYZ').player.show()

// Or, if swapping the eye-catcher
ReelFlow.getFlow('F-123456ABCD').eyeCatcher.hide()
ReelFlow.getFlow('F-9988776XYZ').eyeCatcher.show()

Using any link or page element to launch a Flow

If you wish to start a Flow from a click or other action on a webpage, you don't have to use the API for this, you can achieve this by adding one of our reserved HTML classes or target links, which also makes it easy for non-technical users to enable it via a normal CMS. Learn about using this feature here.

Global Methods

getFlow()

To retrieve and interact with a specific Flow.

// Returns a Flow object 
var targetFlow = ReelFlow.getFlow('F-123456ABCD');

// If an invalid ID is specified, it returns `undefined`

getAvailableFlows()

To retrieve all Flows, their IDs and identifies their types.

var pageFlows = ReelFlow.getAvailableFlows();

/* -- Returns the following structure --
[
    {
        "code": "F-6925bde53d273",
        "type": "overlay"
    },
    {
        "code": "F-6925bdee3e8d3",
        "type": "inline"
    }
]
*/


/* 
Using this you can locate and target a specific Flow 
by it's Flow code e.g. F-123456ABCD or isolate by type
*/

if (pageFlows.length > 0) {
 pageFlows[0].eyeCatcher.show();
 console.log(pageFlows[0].code); // Shows the code of the first Flow 
 console.log(pageFlows[0].type); // Shows the type e.g. inline or overlay
}

removeAll()

Completely removes all Flows on a page, including their eye-catcher and player components.

// Removes all Flows on the page from DOM
ReelFlow.removeAll();

getWorkspaceId()

To retrieve the ID of Workspace the Flows belong to.

// Returns Workspace ID 
var workspaceId = ReelFlow.getWorkspaceId();
// returns 'W-12345678';

Flow object

remove()

Completely removes a single Flow, including the eye-catcher and player component from the page.

// Remove a specific Flow from DOM
ReelFlow.getFlow('F-123456ABCD').remove();

Components

Eye-catcher (ReelFlow.eyeCatcher)

Controls the floating video preview component. The eye-catcher property doesn’t exist for the inline player type.

// Prints "undefined" for inline-type player
console.log(ReelFlow.getFlow("F-123456ABCD").eyeCatcher);

Methods:

show()

Shows the eye-catcher if hidden.

Note: This only affects visibility; the component remains in the DOM even when hidden.

ReelFlow.getFlow("F-123456ABCD").eyeCatcher.show();

hide()

Hides the eye-catcher if visible.

Note: This only affects visibility; the component remains in the DOM even when hidden.

ReelFlow.getFlow("F-123456ABCD").eyeCatcher.hide();

disable()

Prevents the eye-catcher from appearing. Please note that it’s still will be rendered (available in the DOM), just won’t be shown to the user.

Call before other statements. Call show() to re-enable.

// To disable 
ReelFlow.getFlow("F-123456ABCD").eyeCatcher.disable();

// To re-enable, call show()
// ReelFlow.getFlow("F-123456ABCD").eyeCatcher.show();

Player (ReelFlow.player)

Controls the main video player component.

Methods:

show()

Shows the player if hidden. Optionally starts playing from a specific video in the flow.

// Show player with current video
ReelFlow.getFlow("F-123456ABCD").player.show();

hide()

Hides the player if visible.

ReelFlow.getFlow("F-123456ABCD").player.hide();

Events:

actionButton

Triggered when an action button is clicked. 

var targetFlow = ReelFlow.getFlow("F-123456ABCD");

var removeEventListener = targetFlow.player.on('actionButton:click', (action) => {
    console.log('Action clicked:', action);
    // action = {
    //   id: '9d0d9b93-7cff-4e2e-9acb-bc05181f63e8',
    //   label: 'Chat with us',
    //   index: 0
    // }
});