Skip to main content
All CollectionsInspiration and insider tipsTech tips
Interaction JSON Specifications Guide
Interaction JSON Specifications Guide

Overview of the JSON specifications for interactive video

Jonathan Plasman avatar
Written by Jonathan Plasman
Updated over a week ago

1. Overview

hihaho's interactive videos allow the addition of various interaction types through JSON specifications. Each interaction is represented as an object in a JSON array. This document provides a comprehensive guide for all supported interaction types, designed for those managing interactive video content.

Use Cases:

Bulk creation and automation of interactions.

Ensuring consistency across questions and answers in quizzes.

Validating interaction setup for accuracy before deployment.

2. General JSON Structure

2.1 Base Structure

json

 {
"interactions": [...],
"questions": [...],
"subtitles": []
}

2.2 Common Attributes

type: Specifies the interaction type (e.g., "mc", "open", "text", "scroll").

start_time or active_at: When the interaction begins or becomes active (in seconds).

end_time: When the interaction ends (in seconds, for applicable types).

style: Controls visual properties like color, z-index, etc.

title: Descriptive name for the interaction.

3. Interaction Types

3.1 Jump to

Purpose: Allows viewers to jump to different parts of the video.

Attributes:

action.type: "jump"

action.time: Time to jump to in seconds.

Example:

json

 {
"type": "jump_to",
"start_time": 18.28,
"action": {"type": "jump", "time": 21.31},
"title": "Jump to"
}

3.2 Menu

Purpose: Provides a menu for navigation within the video, allowing users to jump to different sections or trigger actions.

General Interaction Attributes:

start_time: When the menu appears in the video.

Interaction-Specific Attributes:

type: Set to "menu" to define this interaction as a navigation menu.

title: A descriptive name for the menu interaction, useful for debugging or organization.

attributes:

options: Configuration for how the menu looks and behaves:

should_give_possibility_to_close: If true, allows users to close the menu.

should_show_menu_button: If false as here, the menu button isn't displayed, suggesting the menu might appear automatically or by another trigger.

menu_button_location: Position of the menu button if displayed (0 might mean default or auto).

menu_button_position: Placement of the menu button (0 here might indicate no specific placement or not applicable).

menu_button_name: Name or label of the menu button, empty here since the button isn't shown.

position: Defines where the menu appears on the screen (left in this case).

menu_items: An array of items within the menu:

name: Display text for each menu item.

action: What happens when the menu item is selected, here always a jump to a specific time:

type: Type of action (jump for jumping to a different part of the video).

time: The time in seconds to jump to.

should_show_chapter_numbers: If true, displays chapter numbers if menu items correspond to video chapters.

should_not_use_time: If false, the menu uses time-based navigation.

position: Reiterates where the menu is positioned (left in this example).

should_pause_when_shown: If true, pauses the video when the menu is displayed, allowing user interaction.

Style Attributes:

z_index: Determines the stacking order of the menu, ensuring it's on top of the video.

Example:

json

 {
"attributes": {
"options": {
"should_give_possibility_to_close": true,
"should_show_menu_button": false,
"menu_button_location": 0,
"menu_button_position": 0,
"menu_button_name": "",
"position": "left"
},
"menu_items": [
{
"action": {
"type": "jump",
"time": 12.87
},
"name": "Menu item 1"
},
{
"action": {
"type": "jump",
"time": 41.69
},
"name": "Menu item 2"
},
{
"action": {
"type": "jump",
"time": 69.15
},
"name": "Menu item 3"
}
]
},
"should_show_chapter_numbers": true,
"start_time": 3.66,
"style": {
"z_index": 50
},
"title": "Menu",
"type": "menu",
"should_not_use_time": false,
"position": "left",
"should_pause_when_shown": true
}

3.3 Chapter

Purpose: Organizes video into sections for easy navigation, enhancing user experience by allowing quick movement between parts of the video.

General Interaction Attributes:

start_time: When the chapter interaction begins in the video.

end_time: When the chapter interaction ends in the video.

Interaction-Specific Attributes:

type: Set to "chapter" to define this as a navigation aid rather than a content interaction.

title: A general title for the chapter interaction, often representing the overarching content.

chapters: An array where each entry represents a chapter or section of the video:

title: Name of the chapter for display in navigation menus or timelines.

start_time: Start time of this chapter in seconds.

end_time: End time of this chapter in seconds.

title_short: An abbreviated title for use on smaller screens or menus where space is limited.

sort_order: Determines the order of chapters in the navigation menu; here all set to 1, suggesting they're sorted by start time.

is_disabled: If true, would prevent navigation to this chapter, here all are false.

should_collapse_after_menu_item_click: If true, the chapter menu collapses after a chapter is selected.

should_start_collapsed: If true, the chapter menu starts in a collapsed state.

should_use_menu_layout: Determines if chapters should be displayed in a menu format rather than a timeline.

position: Defines where the chapter navigation appears (left, right, etc.).

should_pause_when_shown: If true, pauses the video when the chapter menu is displayed.

Style Attributes:

z_index: Determines the stacking order, ensuring the chapter navigation appears on top of video content.

desktop_font_size, mobile_font_size: Font sizes for the chapter titles to adjust for different screen sizes.

Example:

json

 {
"end_time": 60.18,
"start_time": 3.25,
"style": {
"z_index": 50,
"desktop_font_size": 30,
"mobile_font_size": 24
},
"title": "Content",
"type": "chapter",
"chapters": [
{
"title": "Chapter 1",
"start_time": 3.6,
"end_time": 21.14,
"title_short": "Short name for mobile 1",
"sort_order": 1,
"is_disabled": false
},
{
"title": "Chapter 2",
"start_time": 21.14,
"end_time": 43.34,
"title_short": "Short name for mobile 2",
"sort_order": 1,
"is_disabled": false
},
{
"title": "Chapter 3",
"start_time": 43.34,
"end_time": 63.07,
"title_short": "Short name for mobile 3",
"sort_order": 1,
"is_disabled": false
}
],
"should_collapse_after_menu_item_click": true,
"should_start_collapsed": true,
"should_use_menu_layout": true,
"position": "left",
"should_pause_when_shown": true
}

3.4 Text

Purpose: Adds dynamic, styled text to video segments.

Attributes:

should_fade_in, should_fade_out: Boolean for fade effects.

text: HTML styled text for display.

action: Can include actions like delayed_jump for more control over time-based interactions.

text_stroke: Color of the text stroke for enhanced visibility or design.

attributes.should_use_vertical_text_orientation: Boolean to control text orientation.

Example:

json

 {
"action": {
"type": "delayed_jump",
"time": 42.76,
"jump_at_position": 37.33,
"activation_style": {
"background_color": null,
"text_color": null
}
},
"attributes": {
"should_use_vertical_text_orientation": true
},
"end_time": 45.9,
"start_time": 35.9,
"style": {
"background_color": "rgb(0, 255, 0)",
"padding_top": 40,
"padding_bottom": 40,
"align_items": "center",
"z_index": 50,
"border": {
"border_color": null,
"border_style": null,
"border_width": null
},
"border_radius": 130,
"height": "70.48%",
"left": "36.27%",
"top": "12.35%",
"width": "40.00%"
},
"text": "<p style=\"text-align: center;\">Text example</p>",
"text_stroke": "black",
"title": "Text",
"type": "text",
"should_fade_in": true,
"should_fade_out": true
}

3.5 Scrollable Text

Purpose: Displays scrollable text for longer messages or instructions. Similar to text interaction but with specific attributes for scrolling behavior.

Attributes:

attributes.scroll_direction: Direction of text scroll.

attributes.scroll_duration: Speed of scroll in seconds.

should_fade_in, should_fade_out: Boolean for fade effects.

text: HTML styled text for display.

attributes.should_use_vertical_text_orientation: Boolean to control text orientation.

Example:

json

 {
"action": {
"type": "no_action"
},
"attributes": {
"scroll_direction": "ltr",
"scroll_duration": 5,
"should_use_vertical_text_orientation": true
},
"end_time": 45.9,
"start_time": 35.9,
"style": {
"background_color": "rgb(0, 255, 0)",
"padding_top": 40,
"padding_bottom": 40,
"align_items": "center",
"z_index": 50,
"border": {
"border_color": null,
"border_style": null,
"border_width": null
},
"border_radius": 130,
"height": "70.48%",
"left": "36.27%",
"top": "12.35%",
"width": "40.00%"
},
"text": "<p style=\"text-align: center;\">Scrollable text example</p>",
"text_stroke": "black",
"title": "Scrollable Text",
"type": "scroll",
"should_fade_in": true,
"should_fade_out": true
}

3.6 Hotspot

Purpose: Interactive areas on video for additional engagement, allowing viewers to interact with specific parts of the video content.

Attributes:

attributes.should_show_indicator: Boolean to control whether an interaction hint is displayed.

attributes.indicator_color: Color of the interaction hint.

attributes.text_label_color: Color for the text label of the hotspot.

attributes.text_render_scale: Scale for rendering text; can be null for default or specific scaling values.

attributes.tooltip_placement: Position of the tooltip relative to the hotspot (top, bottom, left, right, or middle).

attributes.blinking_speed: Speed at which the indicator blinks (normal, fast, slow).

attributes.should_use_vertical_text_orientation: Boolean to control text orientation within the hotspot.

end_time, start_time: Duration during which the hotspot is active.

text: HTML formatted text to display when interacting with the hotspot.

style:

background_color: Background color of the hotspot, often set to transparent.

z_index: Determines the stacking order of elements.

border: Details on border style, which can be null for none.

border_radius: Rounding of the hotspot's corners.

Position and size attributes (height, width, left, top) to define where and how large the hotspot appears.

Example:

json

 {
"action": {
"type": "no_action"
},
"attributes": {
"should_show_indicator": true,
"indicator_color": "rgb(0, 255, 255)",
"text_label_color": "rgba(4, 51, 72, 0.9)",
"text_render_scale": null,
"tooltip_placement": "top",
"blinking_speed": "normal",
"should_use_vertical_text_orientation": false
},
"end_time": 73.31,
"start_time": 63.31,
"style": {
"background_color": "rgba(0, 0, 0, 0)",
"z_index": 55,
"border": {
"border_color": null,
"border_style": null,
"border_width": null
},
"border_radius": 0,
"height": "30.05%",
"left": "48.06%",
"top": "52.93%",
"width": "40.00%"
},
"text": "<p style=\"text-align: center;\">Hotspot text</p>",
"title": "Hotspot",
"type": "hotspot"
}

3.7 Highlight

Purpose: Highlights or zooms into video areas for focus, allowing viewers to concentrate on specific parts of the video.

Attributes:

should_fade_in, should_fade_out: Boolean to control whether the highlight fades in or out for a smooth visual transition.

end_time, start_time: Duration during which the highlight is visible.

action: Can be set to no_action if the highlight is just for visual emphasis without additional actions.

Style:

background_color: Background color of the highlight, often with opacity for overlay effects.

z_index: Determines the stacking order of elements, ensuring the highlight appears on top.

border:

border_color: Color of the border around the highlight.

border_style: Style of the border (solid, dashed, dotted, etc.).

border_width: Width of the border in pixels.

border_radius: Rounding of the highlight's corners for a softer or custom look.

Position and size attributes (height, width, left, top) to specify where and how large the highlight appears on the video.

Example:

json

 {
"action": {
"type": "no_action"
},
"end_time": 77.79,
"start_time": 67.79,
"style": {
"background_color": "rgba(188, 146, 102, 0.66)",
"z_index": 50,
"border": {
"border_color": "rgb(102, 0, 0)",
"border_style": "dashed",
"border_width": 7
},
"border_radius": 154,
"height": "56.01%",
"left": "53.49%",
"top": "22.53%",
"width": "40.00%"
},
"title": "Highlight",
"type": "highlight",
"should_fade_in": true,
"should_fade_out": true
}

3.8 Zoom

Purpose: Zooms into a specific part of the video to provide closer examination or detail focus.

Attributes:

end_time, start_time: Duration during which the zoom effect is active.

Style:

z_index: Determines the stacking order, ensuring the zoom indicator appears on top if needed.

border:

border_color: Color of the border indicating the zoom area.

border_style: Style of the border (solid, dotted, dashed, etc.).

border_width: Width of the border in pixels.

border_radius: Rounding of the zoom area's corners for visual effect.

Position and size attributes (height, width, left, top) to define the exact area to zoom into:

Example:

json

{
"end_time": 80.22,
"start_time": 70.22,
"style": {
"z_index": 50,
"border": {
"border_color": "rgb(255, 0, 0)",
"border_style": "dotted",
"border_width": 19
},
"border_radius": 360,
"height": "24.46%",
"left": "68.80%",
"top": "50.00%",
"width": "24.46%"
},
"title": "Zoom in",
"type": "zoom"
}

3.9 Frame

Purpose: Embed external web content directly within the video for interactive experiences, like web pages or other interactive elements.

Attributes:

action:

type: "link" - To navigate to external content.

link: URL to be embedded.

should_open_in_same_window: Boolean to determine if the link opens in the same window.

should_resume_video_with_event: Boolean to control whether the video resumes after interaction.

attributes:

should_stay_alive_after_hiding: Boolean to keep the iframe active even after it's hidden.

should_fade_in, should_fade_out: Boolean to control fade effects for the frame's appearance/disappearance.

end_time, start_time: Duration during which the frame is active.

Style:

background_color: Background color of the frame, often semi-transparent for overlay effects.

z_index: Determines the stacking order to ensure visibility over video content.

border:

border_color: Color of the border around the frame.

border_style: Style of the border (solid, dashed, dotted, etc.).

border_width: Width of the border in pixels.

border_radius: Rounding of the frame's corners for a softer or custom look.

Position and size attributes (height, width, left, top) to specify where and how large the frame appears over the video.

Example:

json

{
"action": {
"type": "link",
"link": "https://hihaho.com/",
"should_open_in_same_window": false,
"should_resume_video_with_event": false
},
"attributes": {
"should_stay_alive_after_hiding": true
},
"end_time": 83.34,
"start_time": 73.34,
"style": {
"background_color": "rgba(4, 51, 72, 0.9)",
"z_index": 50,
"border": {
"border_color": "rgba(188, 146, 102, 0.66)",
"border_style": "dashed",
"border_width": 10
},
"border_radius": 114,
"height": "42.92%",
"left": "43.73%",
"top": "48.07%",
"width": "26.02%"
},
"title": "iFrame",
"type": "frame",
"should_fade_in": true,
"should_fade_out": true
}

3.10 Linked Video

Purpose: Link to another video within the platform or external video services, allowing for a seamless transition to different content.

Attributes:

action:

type: "link_video" - Indicates this interaction links to another video.

link: Identifier or URL for the video to link to.

should_open_in_same_window: Boolean to determine if the video should open in the same window or a new one.

link_video_target_custom_start_time: Optional start time for the linked video in seconds.

previous_video_button_mode: Defines where the button to return to the previous video appears ("everywhere", "start", etc.).

previous_video_button_text: Text for the button to return to the previous video.

attributes:

should_use_vertical_text_orientation: Boolean to control text orientation within the interaction.

should_fade_in, should_fade_out: Boolean to control fade effects when showing or hiding the interaction.

end_time, start_time: Duration during which the link to the video is active.

Style:

background_color: Background color of the interaction area.

padding_top, padding_bottom: Padding for text or content within the interaction area.

align_items: Defines how the content within the interaction should be aligned ("flex-end", "center", etc.).

z_index: Determines the stacking order to ensure visibility over video content.

border:

border_color: Color of the border around the interaction area.

border_style: Style of the border (solid, dotted, etc.).

border_width: Width of the border in pixels.

border_radius: Rounding of the interaction area's corners.

Position and size attributes (height, width, left, top) to specify where and how large the interaction appears over the video.

Text:

text: HTML formatted text to display within the interaction area, often used as a label or prompt.

text_stroke: Color of the text stroke for enhanced visibility.

Example:

json

{
"action": {
"type": "link_video",
"link": "VIDEO_ID",
"should_open_in_same_window": true,
"link_video_target_custom_start_time": 16,
"previous_video_button_mode": "everywhere",
"previous_video_button_text": "Button text"
},
"attributes": {
"should_use_vertical_text_orientation": true
},
"end_time": 54.57,
"start_time": 44.57,
"style": {
"background_color": "rgb(255, 153, 0)",
"padding_top": 10,
"padding_bottom": 10,
"align_items": "flex-end",
"z_index": 50,
"border": {
"border_color": "rgb(255, 255, 0)",
"border_style": "dotted",
"border_width": 3
},
"border_radius": 214,
"height": "40.99%",
"left": "43.61%",
"top": "32.83%",
"width": "39.88%"
},
"text": "<p style=\"text-align: center;\"><span style=\"font-family: Roboto, sans-serif; font-size: 21pt; color: rgba(255,255,255,1);\">Your text here</span></p>",
"text_stroke": "black",
"title": "Linked video",
"type": "link_video",
"should_fade_in": true,
"should_fade_out": true
}

3.11 Image

Purpose: Display static or animated images over the video at specific times to complement or enhance the video content.

Attributes:

action:

type: "delayed_jump" - An action type that allows for a jump with a delay.

time: Time to jump to after the delay.

jump_at_position: Position where the jump action should be activated.

activation_style: Styling for the activation state, if applicable.

attributes:

should_click_through: Boolean to determine if clicks pass through the image to the video below.

should_fade_in, should_fade_out: Boolean to control fade effects for the image's appearance/disappearance.

end_time, start_time: Duration during which the image is visible.

image_url: URL or path to the image file to be displayed.

should_play_gif_on_mouseover: Boolean to control if an animated GIF should play on mouse hover (for GIF images).

Style:

background_color: Background color behind or around the image, if needed.

z_index: Determines the stacking order for layering over the video.

object_fit: How the image should be resized to fit its container ("cover", "contain", etc.).

opacity: Opacity of the image, affecting its transparency.

border:

border_color: Color of the border around the image.

border_style: Style of the border (solid, dotted, etc.).

border_width: Width of the border in pixels.

border_radius: Rounding of the image's corners.

Position and size attributes (height, width, left, top) to specify where and how large the image appears over the video.

Example:

json

{
"action": {
"type": "delayed_jump",
"time": 66.85,
"jump_at_position": 51.14,
"activation_style": {
"background_color": "rgb(68, 68, 68)",
"text_color": "rgb(255, 153, 0)"
}
},
"attributes": {
"should_click_through": false
},
"end_time": 56.82,
"start_time": 46.85,
"style": {
"background_color": "rgb(244, 204, 204)",
"z_index": 50,
"object_fit": "cover",
"opacity": 1,
"border": {
"border_color": "rgb(255, 0, 0)",
"border_style": "dotted",
"border_width": 46
},
"border_radius": 150,
"height": "1.72%",
"left": "0.00%",
"top": "0.00%",
"width": "0.36%"
},
"title": "Image",
"type": "image",
"should_fade_in": true,
"should_fade_out": true,
"image_url": "/img/default_image_interaction.png",
"should_play_gif_on_mouseover": false
}

3.12 Sound

Purpose: Add background or specific sound effects at certain video times.

Attributes:

sound_url: URL to the sound file.

should_enable_sound: Boolean to control sound playback.

Example:

json

{
"end_time": 96.83,
"start_time": 95.31,
"title": "Sound",
"type": "sound",
"should_enable_sound": false,
"sound_url": "SOUND_URL"
}

4. Question Interactions

4.1 Adding Questions

Questions are added under the "questions" array in the JSON. Each question object includes:

type: The type of question, like mc (multiple choice), open, or rating.

active_at: The time in the video when the question appears.

text: The question text for the user.

answers: An array of possible answers or null for open-ended questions.

action: Defines what happens upon answering.

4.2 Question Types

4.2.1 Multiple Choice (mc)

General Interaction Attributes:

active_at: The exact time in seconds when the question should appear in the video. This is common across interactions but crucial for timing questions.

Question-Specific Attributes:

type: Indicates this is a multiple-choice question. Essential for parsing and rendering the correct interaction type.

text: The actual question text that will be displayed to the user. This is standard for all question types but can include HTML for formatting.

answers: An array where each entry represents an answer option. Unique to question interactions:

text: The text of the answer option.

is_correct: Boolean indicating if this answer is correct or not.

action: Defines what happens if this answer is chosen. This can include:

type: The action to perform (jump, repeat_question, show_score_screen, etc.).

time: For actions like jump, this specifies where to jump to in the video.

interaction_id, link, question_id: These can be used to link to other interactions or external resources but are often null unless specifically needed.

should_open_in_same_window: For link actions, dictates if the link opens in a new or the current window.

action: Defines actions for different outcomes:

correct: What happens if the user answers correctly.

incorrect: Action when an incorrect answer is selected.

no_match: What to do if none of the answers match (rare but can be used for edge cases or when all answers are incorrect).

Feedback and Scoring Attributes:

counts_points_per_answer: If true, each answer can have its own point value; otherwise, points might be awarded for the question as a whole.

enable_partly_correct_feedback: When true, allows for feedback where answers might be partially correct.

explanation_partly_correct: Text or HTML explaining partial correctness, used if enable_partly_correct_feedback is true.

feedback_screen_color: Boolean to determine if the feedback screen should have a colored background.

feedback_screen_correct_answer_feedback, feedback_screen_incorrect_answer_feedback: Custom feedback messages for correct and incorrect answers.

feedback_screen_general_feedback: General feedback shown after answering (in HTML format here).

feedback_title_custom_text: Custom text for feedback titles based on the answer's outcome.

feedback_title_type: Can be automatic for system-generated titles or custom for user-defined.

feedback_type: Determines how feedback is displayed (no_feedback, direct, screen, etc.).

Visual and Interaction Attributes:

font_size: Specifies the size of the text for the question, which is less common for non-question interactions.

image_fit, image_url: Allows for an image to accompany the question, with image_fit controlling how the image scales/positions.

feedback_image_fit, feedback_image_url: Similar to above but for images shown in feedback.

is_repeatable: Determines if the question can be answered more than once (null here means it defaults to the system's setting).

layout: Specifies the visual style of the question (modern or classic).

markup: Contains configurations for additional UI elements:

back_button, feedback_action_button: Defines buttons for navigation or additional actions after feedback, including their own actions (type, time, etc.).

placeholder, prefix, suffix: Placeholder text or additional text elements for input fields, which might apply to other question types but are less common in simple MC questions.

Other Attributes:

points: Total points for the question, if not counting per answer.

should_fade_in, should_fade_out: Controls visual transitions for the question's appearance/disappearance.

should_play_sound, sound_url: Unique to this example where sound feedback or cues can be played upon interaction.

should_retry_question_on_incorrect_answer: Allows for automatic retries if an answer is incorrect.

should_show_feedback_when_answered: Controls when (or if) feedback is shown to the user.

should_shuffle_answers: Randomizes the order of answers to prevent pattern recognition.

should_submit_instantly: Determines if the answer submission happens immediately upon selection or requires a separate submit action.

subtitle_text: Additional text below the main question text, potentially for hints or context.

submit_label: Text for the submit button, if one is used.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
}
},
"active_at": 46.85,
"answers": [
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 33.48,
"type": "jump"
},
"is_correct": true,
"explanation": null,
"text": "right answer",
"points": 2
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "repeat_question"
},
"is_correct": false,
"explanation": null,
"text": "wrong answer",
"points": 1
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "show_score_screen"
},
"is_correct": false,
"explanation": null,
"text": "another wrong answer",
"points": 0
}
],
"answer_minimum_character_count": 0,
"counts_points_per_answer": true,
"enable_partly_correct_feedback": false,
"explanation_partly_correct": "",
"feedback_screen_color": true,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p> </p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": null,
"feedback_title_type": "automatic",
"feedback_type": "no_feedback",
"font_size": 26,
"image_fit": null,
"image_url": null,
"feedback_image_fit": null,
"feedback_image_url": null,
"is_repeatable": null,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": true,
"name": "Back button"
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": false,
"name": null
},
"placeholder": null,
"prefix": null,
"suffix": null
},
"points": 0,
"should_fade_in": true,
"should_play_sound": true,
"should_retry_question_on_incorrect_answer": false,
"should_show_feedback_when_answered": null,
"should_shuffle_answers": true,
"should_submit_instantly": false,
"sound_url": "[SOUND_URL]",
"text": "Question",
"type": "mc",
"subtitle_text": "Question subtitle",
"submit_label": "Submit button label"
}

4.2.2 Open Question (open)

Purpose: To collect longer, narrative responses from viewers, useful for feedback or detailed insights.

General Interaction Attributes:

active_at: Specifies when in the video timeline the question appears.

Question-Specific Attributes:

type: Set to "essay" for an open-ended question allowing detailed text input.

text: The actual question or prompt shown to the user, can include HTML for formatting.

answers: Set to null for open questions since there's no predefined answer list.

action: Defines what happens after the user submits their answer:

correct, incorrect, no_match: Actions for different scenarios, although 'correct' and 'incorrect' might not apply directly since it's an open response, no_match could trigger if no response or an invalid one is given.

Input Control Attributes:

answer_minimum_character_count: Ensures a minimum length for the response, promoting more thoughtful answers.

Feedback and Scoring Attributes:

counts_points_per_answer: For open questions, this would typically be false since scoring is more subjective.

enable_partly_correct_feedback: Not usually relevant for essay questions unless there are partial credit scenarios.

feedback_screen_*: Settings for feedback display:

feedback_screen_color: Determines if the feedback screen has a background color.

feedback_screen_correct_answer_feedback, feedback_screen_incorrect_answer_feedback, feedback_screen_general_feedback: Customizable feedback messages in HTML format.

feedback_title_custom_text: Custom titles for feedback based on response evaluation, here specifying a "neutral" title for all feedback.

feedback_title_type: Set to "custom", using the custom text defined above.

feedback_type: "screen" suggests feedback is shown in a dedicated screen after submission.

Visual and Interaction Attributes:

font_size: Controls the text size for both the question and possibly the input field.

image_fit, image_url, feedback_image_fit, feedback_image_url: Allows for images with the question or feedback, though less common in open-ended questions.

is_repeatable: If false, the question can only be answered once, which is typical for essay questions to encourage unique responses.

layout: Here set to "modern", affecting how the question and answer input are displayed.

markup: Provides configuration for UI elements:

back_button, feedback_action_button: Defines actions for buttons, like navigating back or jumping to another part of the video after feedback.

link in back_button action points to an external URL, showing how open questions can integrate with external resources.

placeholder: Text shown in the input field before user input, encouraging or guiding responses.

prefix, suffix: Could be used to add static text before or after the input field for context or formatting.

Other Attributes:

points: Points awarded for the question, might be for participation or based on content evaluation.

should_fade_in, should_fade_out: Visual transition effects for the question's appearance.

should_play_sound, sound_url: Sound can be played when the question appears, enhancing interaction.

should_retry_question_on_incorrect_answer: Not typically applicable for essay questions but included as an option for feedback or revision scenarios.

should_show_feedback_when_answered: Here set to true, meaning feedback will be shown after submission.

should_shuffle_answers: Irrelevant for essay questions since there are no answers to shuffle.

should_submit_instantly: If false, users have to click submit, allowing for more time to compose responses.

subtitle_text: Additional context or hint below the main question text.

submit_label: Text for the submit button, guiding the user to complete their response.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "show_score_screen"
}
},
"active_at": 46.85,
"answers": null,
"answer_minimum_character_count": 10,
"counts_points_per_answer": false,
"enable_partly_correct_feedback": false,
"explanation_partly_correct": "",
"feedback_screen_color": false,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p>Description</p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": {
"correct": null,
"incorrect": null,
"neutral": "Feedback title",
"partlyCorrect": null
},
"feedback_title_type": "custom",
"feedback_type": "screen",
"font_size": 14,
"image_fit": null,
"image_url": null,
"feedback_image_fit": null,
"feedback_image_url": null,
"is_repeatable": false,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": "[URL]",
"time": 0,
"question_id": null,
"type": "link"
},
"is_enabled": true,
"name": "Back button"
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 46.85,
"question_id": null,
"type": "jump"
},
"is_enabled": true,
"name": "button title"
},
"placeholder": "placeholder text here",
"prefix": null,
"suffix": null
},
"points": 0,
"should_fade_in": true,
"should_play_sound": true,
"should_retry_question_on_incorrect_answer": false,
"should_show_feedback_when_answered": true,
"should_shuffle_answers": true,
"should_submit_instantly": false,
"sound_url": "[SOUND_URL]",
"text": "Open question",
"type": "essay",
"subtitle_text": "Question subtitle",
"submit_label": "Submit button label"
}

4.2.3 Rating Question (rating)

Purpose: To get feedback or ratings from viewers, typically using a scale or stars.

General Interaction Attributes:

active_at: Specifies when in the video timeline the question appears.

Question-Specific Attributes:

type: Set to "rating" to indicate this question is for collecting user ratings.

text: The question or prompt asking for the rating, can include HTML for formatting.

answers: Set to null since ratings don't have predefined answers but rather a scale.

action: Defines what happens after the user submits their rating:

correct, incorrect, no_match: Actions are less relevant for ratings but can define what happens after submission:

no_match here might jump to the end if no rating is given.

Feedback and Scoring Attributes:

counts_points_per_answer: Typically false for ratings as they're not usually scored.

enable_partly_correct_feedback: Not applicable for ratings in most contexts.

feedback_screen_*: Settings for feedback display, which might be used for showing the impact of the rating:

feedback_screen_color: Determines if the feedback screen has a background color.

feedback_screen_general_feedback: Could provide feedback based on the rating given.

feedback_title_custom_text, feedback_title_type: Custom or automatic titles for feedback, if any is provided.

feedback_type: Here set to "direct", indicating feedback might be shown instantly or in-line rather than on a separate screen.

Visual and Interaction Attributes:

font_size: Controls the size of text for the question prompt.

image_fit, image_url, feedback_image_fit, feedback_image_url: Could be used to display images related to the rating question or feedback.

is_repeatable: If null or false, the rating can't be changed once submitted, which is common.

layout: Here "modern", affecting how the rating interface appears.

markup: Provides configuration for UI elements:

back_button: Allows users to go back, possibly to reconsider their rating.

feedback_action_button: Can trigger actions like jumping to another part of the video based on the rating or for feedback purposes.

placeholder, prefix, suffix: Not typically used for ratings but available for additional customization.

Other Attributes:

points: Might be used if ratings contribute to a score, but often left at 0 for simple feedback.

should_fade_in: Controls how the question appears with a fade effect.

should_play_sound, sound_url: Could play a sound when the rating question appears, though here it's set to false.

should_retry_question_on_incorrect_answer: Not applicable for ratings, set to false.

should_show_feedback_when_answered: Here null, suggesting feedback might not be shown automatically.

should_shuffle_answers: Irrelevant for ratings, set to true but has no effect.

should_submit_instantly: If true, ratings are submitted immediately upon selection, typical for rating interactions.

subtitle_text: Additional context or hint below the main question text.

submit_label: Not typically needed for ratings, hence set to null.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "jump_to_end"
}
},
"active_at": 46.85,
"answers": null,
"answer_minimum_character_count": 0,
"counts_points_per_answer": false,
"enable_partly_correct_feedback": false,
"explanation_partly_correct": "",
"feedback_screen_color": true,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p> </p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": null,
"feedback_title_type": "automatic",
"feedback_type": "direct",
"font_size": 28,
"image_fit": null,
"image_url": null,
"feedback_image_fit": null,
"feedback_image_url": null,
"is_repeatable": null,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": "[URL]",
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": true,
"name": "Back button"
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 52.13,
"question_id": null,
"type": "jump"
},
"is_enabled": true,
"name": "button title"
},
"placeholder": null,
"prefix": null,
"suffix": null
},
"points": 0,
"should_fade_in": true,
"should_play_sound": false,
"should_retry_question_on_incorrect_answer": false,
"should_show_feedback_when_answered": null,
"should_shuffle_answers": true,
"should_submit_instantly": true,
"sound_url": null,
"text": "Question here",
"type": "rating",
"subtitle_text": "Question subtitle",
"submit_label": null
}

4.2.4 Multiple Response (mr)

Purpose: Allows viewers to select multiple answers from a list for more complex quiz scenarios.

General Interaction Attributes:

active_at: Specifies when in the video timeline the question appears.

Question-Specific Attributes:

type: Set to "mr" for multiple response questions where multiple answers can be correct.

text: The question or prompt for which multiple answers are possible, can include HTML for formatting.

answers: An array where each entry represents a possible answer:

text: The text of the answer option.

is_correct: Indicates if this answer is correct or not; multiple can be true.

action: Defines what happens if this answer is selected, often set to continue_playing for MR questions.

points: Can be used if points are awarded per correct answer, though here it's null.

action: Defines what happens after the user submits their answers:

correct, incorrect, no_match: Actions for different scenarios where:

correct might jump to another part of the video if all correct answers are selected.

incorrect could repeat the question for another attempt.

no_match might end the video or go to a score screen if no correct answers were chosen.

Feedback and Scoring Attributes:

counts_points_per_answer: Determines if points are counted per answer or for the whole question, here false.

enable_partly_correct_feedback: Set to true, allowing feedback for partially correct answers.

explanation_partly_correct: Space for explaining partial correctness, though left empty here.

feedback_screen_*: Settings for feedback display:

feedback_screen_color: Determines if the feedback screen has a background color.

feedback_screen_general_feedback, feedback_screen_correct_answer_feedback, feedback_screen_incorrect_answer_feedback: Customizable feedback messages in HTML format.

feedback_title_custom_text: Custom titles for feedback based on the response outcomes.

feedback_title_type: Set to custom for user-defined feedback titles.

feedback_type: "direct" indicates feedback is shown immediately after answering.

Visual and Interaction Attributes:

font_size: Controls the text size for the question and answers.

image_fit, image_url: Allows for an image to accompany the question, affecting how it's displayed.

feedback_image_fit, feedback_image_url: Similar to above but for images in feedback.

is_repeatable: If false, the question can't be answered again, here set to prevent repetition.

layout: Here "modern", affecting how the question and answer options are presented.

markup: Defines UI elements like buttons:

back_button, feedback_action_button: Configures actions for navigation or post-feedback actions.

placeholder, prefix, suffix: Not used here but available for additional customization.

Other Attributes:

points: Total points for the question, here set to 6, suggesting points might be awarded for correct answers.

should_fade_in: Controls how the question appears with a fade effect.

should_play_sound, sound_url: Could play a sound when the question appears, here set to false.

should_retry_question_on_incorrect_answer: If true, allows for retries if answers are incorrect.

should_show_feedback_when_answered: Set to false, feedback might not be shown automatically but could be manually triggered.

should_shuffle_answers: If true, randomizes the order of answers.

should_submit_instantly: If false, users need to click submit, providing time for multiple selections.

subtitle_text: Additional context or hint below the main question text.

submit_label: Text for the submit button.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 57.64,
"type": "jump"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "repeat_question"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "jump_to_end"
}
},
"active_at": 52.13,
"answers": [
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": true,
"explanation": null,
"text": "Right answer",
"points": null
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": false,
"explanation": null,
"text": "Wrong answer",
"points": null
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": true,
"explanation": null,
"text": "another right answer",
"points": null
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": false,
"explanation": null,
"text": "another wrong answer",
"points": null
}
],
"answer_minimum_character_count": 0,
"counts_points_per_answer": false,
"enable_partly_correct_feedback": true,
"explanation_partly_correct": "",
"feedback_screen_color": true,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p> </p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": {
"correct": "Correct",
"incorrect": "Incorrect",
"neutral": null,
"partlyCorrect": "Partly correct"
},
"feedback_title_type": "custom",
"feedback_type": "direct",
"font_size": 22,
"image_fit": "contain",
"image_url": "example url",
"feedback_image_fit": "cover",
"feedback_image_url": "example url",
"is_repeatable": false,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": "example url",
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": true,
"name": "knopje"
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 57.64,
"question_id": null,
"type": "jump"
},
"is_enabled": true,
"name": "button title"
},
"placeholder": null,
"prefix": null,
"suffix": null
},
"points": 6,
"should_fade_in": true,
"should_play_sound": false,
"should_retry_question_on_incorrect_answer": true,
"should_show_feedback_when_answered": false,
"should_shuffle_answers": true,
"should_submit_instantly": false,
"sound_url": null,
"text": "Question",
"type": "mr",
"subtitle_text": "Question subtitle",
"submit_label": "Submit button label"
}

4.2.5 Essay Question

Purpose: To collect user input, particularly at the start of a video for personalization or data collection.

General Interaction Attributes:

active_at: Specifies when in the video timeline the question appears.

Question-Specific Attributes:

type: Set to "open" for an open-ended question where users can input text.

text: The question or prompt for which user input is expected, can include HTML for formatting.

answers: Here, an array with dummy answers where text is empty:

is_correct: Set to true for the dummy correct answer, false for others, to manage the question's logic.

action: Defines what happens if an answer is selected, often set to continue_playing since there's no real selection.

action: Defines what happens after the user submits their input:

correct, incorrect, no_match: Actions for different scenarios, although for entry questions, these might be more about flow control:

correct might jump to personalized content.

incorrect could repeat the question if format validation fails.

no_match might end the video or go to a default path.

Feedback and Scoring Attributes:

counts_points_per_answer: Typically false for entry questions as they're not scored.

enable_partly_correct_feedback: Not applicable here, set to false.

feedback_screen_*: Feedback settings might be used for validation messages:

feedback_screen_color: Determines if the feedback screen has a background color.

feedback_screen_general_feedback: Could be used to give instructions or feedback on input.

feedback_title_custom_text: Not used here, automatic titles are employed.

feedback_title_type: Set to automatic for system-generated feedback titles.

feedback_type: "no_feedback" indicates no feedback is shown, which is common for simple data entry.

Visual and Interaction Attributes:

font_size: Controls the text size for the question.

image_fit, image_url, feedback_image_fit, feedback_image_url: Not used here, entry questions typically don't require images.

is_repeatable: Set to null, suggesting the system's default behavior applies.

layout: Here "modern", affecting how the input field is presented.

markup: Configures UI elements around the input:

back_button, feedback_action_button: Set to false, indicating these buttons are not active.

placeholder: Text shown in the input field before user input, guiding the user.

prefix, suffix: Text added before or after the input area for formatting or additional information.

Other Attributes:

points: Might be set to 1 if participating in the question awards a point, regardless of input.

should_fade_in: Controls how the question appears with a fade effect.

should_play_sound, sound_url: Could play a sound when the question appears, here set to false.

should_retry_question_on_incorrect_answer: Set to false, suggesting no automatic retries.

should_show_feedback_when_answered: Set to null, feedback might not be shown automatically.

should_shuffle_answers: Irrelevant for open questions, set to true but has no effect.

should_submit_instantly: If false, users need to click submit, allowing for input review.

subtitle_text: Additional context below the main question text.

submit_label: Not set here, suggesting automatic submission or a default label.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 57.64,
"type": "jump"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "repeat_question"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "jump_to_end"
}
},
"active_at": 57.64,
"answers": [
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": true,
"explanation": null,
"text": "",
"points": null
},
{
"action": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "continue_playing"
},
"is_correct": false,
"explanation": null,
"text": "",
"points": null
}
],
"answer_minimum_character_count": 0,
"counts_points_per_answer": false,
"enable_partly_correct_feedback": false,
"explanation_partly_correct": "",
"feedback_screen_color": true,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p> </p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": null,
"feedback_title_type": "automatic",
"feedback_type": "no_feedback",
"font_size": null,
"image_fit": null,
"image_url": null,
"feedback_image_fit": null,
"feedback_image_url": null,
"is_repeatable": null,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": "example url",
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": false,
"name": null
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 57.64,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": false,
"name": null
},
"placeholder": "Placeholder",
"prefix": "Prefix",
"suffix": "Suffix"
},
"points": 1,
"should_fade_in": true,
"should_play_sound": false,
"should_retry_question_on_incorrect_answer": false,
"should_show_feedback_when_answered": null,
"should_shuffle_answers": true,
"should_submit_instantly": false,
"sound_url": null,
"text": "Entry question",
"type": "open",
"subtitle_text": "Question subtitle",
"submit_label": null
}

4.2.6 Vacancy Question

Purpose: Specifically designed for collecting job application information or similar structured data within an interactive video.

General Interaction Attributes:

active_at: Specifies when in the video timeline the form appears.

Question-Specific Attributes:

type: Set to "vacancy" to indicate this is a form for collecting detailed user data.

text: Acts as the title for the form, can include HTML for formatting.

answers: Set to null since the response is form-based rather than answer selection.

action: Defines what happens after the user submits the form:

correct, incorrect, no_match: Actions are less relevant for vacancy forms but can define post-submission behavior:

correct might jump to a thank you or next step video segment.

incorrect could be used if form validation fails, prompting re-entry.

no_match might direct to an error or default path if data is invalid.

Feedback and Scoring Attributes:

counts_points_per_answer: Typically false as forms don't usually award points.

enable_partly_correct_feedback: Not applicable for vacancy forms.

feedback_screen_*: Feedback settings for after form submission:

feedback_screen_color: Determines if the feedback screen has a background color.

feedback_screen_general_feedback: Used here to give a description or thank you message post-submission.

feedback_title_custom_text, feedback_title_type: Not typically used here, but can customize feedback titles if needed.

feedback_type: Set to "screen" which suggests feedback is shown in a dedicated screen after submission.

Visual and Interaction Attributes:

font_size: Controls the size of text for the form title and labels.

image_fit, image_url, feedback_image_fit, feedback_image_url: Not typically used for vacancy forms but could add visual context.

is_repeatable: Set to true here, allowing users to fill out the form multiple times if needed.

layout: Here "modern", affecting how the form is displayed.

markup: Provides configuration for UI elements:

back_button, feedback_action_button: Set to false, indicating no navigation or action buttons are active post-submission.

placeholder, prefix, suffix: Not typically used for vacancy forms.

vacancy: A sub-object with specific settings for the form:

company_name_label, email_address_label, first_name_label, last_name_label: Labels for form fields.

receiver_email_address: Where form submissions are sent.

upload_instructional_placeholder: Text guiding file upload if enabled.

should_allow_file_upload: If set to true, allows for file attachments in the form.

Other Attributes:

points: Set to 0 as this isn't scored like a quiz question.

should_fade_in: Controls how the form appears with a fade effect.

should_play_sound, sound_url: Could play a sound when the form appears, here set to false.

should_retry_question_on_incorrect_answer: Not applicable, set to false.

should_show_feedback_when_answered: Here null, feedback might be shown after form submission.

should_shuffle_answers: Irrelevant for vacancy forms, set to true but has no effect.

should_submit_instantly: If false, users need to explicitly submit the form.

subtitle_text: Additional context below the form title.

submit_label: Not set here, suggesting a default or automatic submission label.

Example:

json

{
"action": {
"correct": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 57.64,
"type": "jump"
},
"incorrect": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "repeat_question"
},
"no_match": {
"interaction_id": null,
"link": null,
"question_id": null,
"should_open_in_same_window": false,
"time": 0,
"type": "jump_to_end"
}
},
"active_at": 57.64,
"answers": null,
"answer_minimum_character_count": 0,
"counts_points_per_answer": false,
"enable_partly_correct_feedback": false,
"explanation_partly_correct": "",
"feedback_screen_color": true,
"feedback_screen_correct_answer_feedback": "",
"feedback_screen_general_feedback": "<!--TINYMCE--><p>Description</p>",
"feedback_screen_incorrect_answer_feedback": "",
"feedback_title_custom_text": null,
"feedback_title_type": null,
"feedback_type": "screen",
"font_size": null,
"image_fit": null,
"image_url": null,
"feedback_image_fit": null,
"feedback_image_url": null,
"is_repeatable": true,
"layout": "modern",
"markup": {
"back_button": {
"action": {
"interaction_id": null,
"link": "example url",
"time": 0,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": false,
"name": null
},
"feedback_action_button": {
"action": {
"interaction_id": null,
"link": null,
"time": 57.64,
"question_id": null,
"type": "jump_to_start"
},
"is_enabled": false,
"name": null
},
"placeholder": null,
"prefix": null,
"suffix": null,
"vacancy": {
"company_name_label": "Third field",
"email_address_label": "Email field",
"first_name_label": "First field",
"last_name_label": "Second field",
"receiver_email_address": "example@mail.com",
"upload_instructional_placeholder": "Upload file here",
"should_allow_file_upload": true
}
},
"points": 0,
"should_fade_in": true,
"should_play_sound": false,
"should_retry_question_on_incorrect_answer": false,
"should_show_feedback_when_answered": null,
"should_shuffle_answers": true,
"should_submit_instantly": false,
"sound_url": null,
"text": "Form title",
"type": "vacancy",
"subtitle_text": "Question subtitle",
"submit_label": null
}

5. Action Types

Actions define what should happen when an interaction or answer is selected. Common action types include:

jump: Jumps to a specific time in the video.

Example: {"type": "jump", "time": 45}

continue_playing: Continues playing the video from where it left off.

Example: {"type": "continue_playing"}

repeat_question: Repeats the current question or interaction.

Example: {"type": "repeat_question"}

show_score_screen: Displays a screen summarizing the score or feedback.

Example: {"type": "show_score_screen"}

link: Links to an external website or another video.

Example:{"type": "link", "link": "example.com", "should_open_in_same_window": false}

These action types can be used within interactions or question answers to control the flow of the video based on user interaction.

6. Subtitles

Purpose: Enhance accessibility or provide translations.

Attributes:

content: SRT formatted subtitle text.

is_default: Determines if these subtitles show by default.

Example:

json

{
"type": "srt",
"content": "SRT content here...",
"is_default": true,
"language": "EN",
"title": "English",
"should_show_button": true
}

7. Leveraging AI for JSON Automation

Automatic Generation: Use AI to create JSON based on video content analysis or predefined templates.

Validation: AI can check for timing issues, logical errors in quiz setup, or formatting issues.

Translation: Automate subtitle translations or interactive text localization.

Optimization: AI can suggest optimal timing and placement for interactions based on viewer engagement data.

Did this answer your question?