API

This document describes the APIs used for connecting any streaming client to the WebSocket server.

v1 OBS / Streamer.bot / Custom

Server Information

To connect to a server, use the following url:

wss://streamsocket.kadokta.com/api/{version}/streamer/{app_source}/channel/{channel_id}

Replace each {variable} with the following:

VariableDescriptionAllowed Value
app_sourceWhich app is used to connect to the server. Use “custom” if not in the list.obs, streamerbot, custom
channel_idThe unique numeric identifier of the channel.any
versionVersion of the used API.v1

Operations

The following operations with their corresponding messages should be managed by the client. WebSocket messages have a payload that include the type of the message and a data property (if required).

notification_category_lock

This operation is sent to the server.

Locks categories according to their category_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_category_lock
    data:
        type: object
        properties:
            category_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - category_ids
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_category_lock",
    "data": {
        "category_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_category_reset

This operation is sent to the server.

Resets the locks of the category to their default.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_category_reset
    data:
        type: object
        properties:
            all:
                type: boolean
                description: Whether to reset all categories (overrides 'categories' property if
                    present)
            category_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_category_reset",
    "data": {
        "all": true,
        "category_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_category_unlock

This operation is sent to the server.

Unlocks categories according to their category_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_category_unlock
    data:
        type: object
        properties:
            category_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - category_ids
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_category_unlock",
    "data": {
        "category_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_config_reset

This operation is sent to the server.

Resets the locks and limits of everything.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_config_reset
    data:
        type: object
        properties:
            scope:
                type: array
                items:
                    type: string
                    enum:
                        - all
                        - global_item
                        - user_item
                uniqueItems: true
            constraint:
                type: array
                items:
                    type: string
                    enum:
                        - all
                        - locks
                        - limits
                uniqueItems: true
            item_type:
                type: array
                items:
                    type: string
                    enum:
                        - all
                        - categories
                        - events
                uniqueItems: true
            item_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            user_ids:
                type: array
                items:
                    type: string
                    minLength: 1
                    maxLength: 256
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
required:
    - type

Example payload (JSON):

{
    "type": "notification_config_reset",
    "data": {
        "scope": ["global_item", "user_item"],
        "constraint": ["locks", "limits"],
        "item_type": ["categories", "events"],
        "item_ids": ["example", "example2"],
        "user_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_config_update

This operation is received by the client.

Received by the client if the config was updated.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_config_update
    data:
        type: object
        properties:
            categories:
                type: array
                description: List of categories
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        border_radius:
                            type: number
                        box_shadow:
                            type: boolean
                        category_bar_hide:
                            type: boolean
                        category_bar_position:
                            enum:
                                - top
                                - bottom
                        display_name:
                            type: string
                            maxLength: 64
                        event_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        list_additional_height:
                            type: integer
                            maximum: 1024
                        list_aspect_ratio:
                            enum:
                                - auto
                                - 3/2
                                - 2/1
                                - 1/1
                                - 1/2
                                - 2/3
                        list_center_vertical:
                            type: boolean
                        list_columns:
                            type: integer
                            minimum: 1
                            maximum: 5
                        list_gap_horizontal:
                            type: number
                        list_gap_vertical:
                            type: number
                        list_icons_align:
                            enum:
                                - left
                                - center
                                - right
                        list_icons_wrap:
                            type: boolean
                        list_line_breaks:
                            type: boolean
                        list_spacing:
                            enum:
                                - space_between
                                - center
                        list_text_align:
                            enum:
                                - left
                                - center
                                - right
                                - justify
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        status_bar_hide:
                            type: boolean
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    required:
                        - id
                maxItems: 512
            events:
                type: array
                description: List of events
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        category_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        cooldown_global:
                            type: integer
                            description: Global cooldown in ms
                        cooldown_global_event:
                            type: integer
                            description: Global event specific cooldown in ms
                        cooldown_user:
                            type: integer
                            description: User specific cooldown in ms
                        cooldown_user_event:
                            type: integer
                            description: User specific and event specific cooldown in ms
                        description:
                            type: string
                            maxLength: 512
                        display_name:
                            type: string
                            maxLength: 64
                        exclude_cooldown_global:
                            type: boolean
                            description: Event can be sent regardless of global cooldown
                        exclude_cooldown_user:
                            type: boolean
                            description: Event can be sent regardless of user cooldown
                        following_minimum:
                            type: integer
                            description: Minimum follow duration in ms
                        inputs:
                            type: array
                            items:
                                oneOf:
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: text
                                          default:
                                              type: string
                                              maxLength: 512
                                          regex:
                                              type: string
                                              maxLength: 512
                                          length_min:
                                              type: number
                                          length_max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: number
                                          default:
                                              type: number
                                          step:
                                              type: number
                                          min:
                                              type: number
                                          max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: color
                                          default:
                                              type: string
                                              maxLength: 512
                                          color_settings:
                                              oneOf:
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: rgb
                                                        r:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        g:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        b:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsl
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        l:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsv
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        v:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: choice
                                          values:
                                              type: array
                                              items:
                                                  type: string
                                                  maxLength: 24
                                              maxItems: 128
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: toggle
                                          default:
                                              type: boolean
                                      required:
                                          - input_type
                            maxItems: 64
                        limit:
                            type: integer
                        limit_user:
                            type: integer
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        padding:
                            description: Sets the padding of an item. Adds placeholders before the event
                                list item.
                            type: number
                        points_disable_conversion:
                            type: boolean
                        points_required:
                            type: integer
                            maximum: 10000
                        product_sku:
                            description: Amount of bits required for the event. Only some combinations
                                (products) are allowed, as seen in the extension configuration
                                for events. By enabling bits, you confirm that you read and
                                follow the Twitch Bits Acceptable Use Policy
                                (https://legal.twitch.com/en/legal/bits-acceptable-use/).
                            type: string
                            pattern: ^(?:test_)?event_[0-9]{1,5}$
                        response:
                            type: boolean
                        span_horizontal:
                            type: integer
                            minimum: 1
                            maximum: 5
                        span_vertical:
                            type: integer
                            minimum: 1
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                        subscription_minimum:
                            type: string
                            enum:
                                - twitch_sub_none
                                - twitch_sub_1000
                                - twitch_sub_2000
                                - twitch_sub_3000
                        write_chat:
                            type: boolean
                        write_chat_message:
                            description: "Replaces the default chat message. You can use the following
                                placeholders: %event_name%, %user_name%, %bits%, %points%."
                            type: string
                            maxLength: 412
                        quick_event:
                            description: Sends event after clicking button without showing dialog
                            type: boolean
                    required:
                        - id
                maxItems: 512
            style:
                type: object
                properties:
                    light:
                        type: object
                        properties:
                            color_font_title:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_font:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_1:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_2:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_3:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_background:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    dark:
                        type: object
                        properties:
                            color_font_title:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_font:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_1:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_2:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_3:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_background:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    fonts:
                        type: object
                        properties:
                            title:
                                type: string
                                maxLength: 128
                            title_size:
                                type: number
                                minimum: 8
                            body:
                                type: string
                                maxLength: 128
                            body_size:
                                type: number
                                minimum: 8
            compressed:
                type: string
                maxLength: 65536
            date:
                type: number
                description: Date the config was updated (number of milliseconds elapsed since
                    epoch)
            size_current:
                type: number
            size_maximum:
                type: number
        required:
            - date
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_config_update",
    "data": {
        "categories": [
            {
                "id": "example_id",
                "border_radius": 100,
                "box_shadow": true,
                "category_bar_hide": true,
                "category_bar_position": "top",
                "display_name": "example_display_name",
                "event_ids": ["example", "example2"],
                "list_additional_height": 1024,
                "list_aspect_ratio": "auto",
                "list_center_vertical": true,
                "list_columns": 1,
                "list_gap_horizontal": 100,
                "list_gap_vertical": 100,
                "list_icons_align": "left",
                "list_icons_wrap": true,
                "list_line_breaks": true,
                "list_spacing": "space_between",
                "list_text_align": "left",
                "locked": true,
                "locked_hide": true,
                "status_bar_hide": true,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                }
            }
        ],
        "events": [
            {
                "id": "example_id",
                "category_ids": ["example", "example2"],
                "cooldown_global": 5000,
                "cooldown_global_event": 5000,
                "cooldown_user": 5000,
                "cooldown_user_event": 5000,
                "description": "example_description",
                "display_name": "example_display_name",
                "exclude_cooldown_global": true,
                "exclude_cooldown_user": true,
                "following_minimum": "5",
                "inputs": [
                    {
                        "id": "example_id",
                        "label": "example_label",
                        "input_type": "text",
                        "default": "example_default",
                        "regex": "example_regex",
                        "length_min": 100,
                        "length_max": 100
                    }
                ],
                "limit": "5",
                "limit_user": "5",
                "locked": true,
                "locked_hide": true,
                "padding": 100,
                "points_disable_conversion": true,
                "points_required": 10000,
                "product_sku": "event_100",
                "response": true,
                "span_horizontal": 1,
                "span_vertical": 1,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                },
                "subscription_minimum": "twitch_sub_none",
                "write_chat": true,
                "write_chat_message": "example_write_chat_message",
                "quick_event": true
            }
        ],
        "style": {
            "light": {
                "color_font_title": "#ffffff",
                "color_font": "#ffffff",
                "color_1": "#ffffff",
                "color_2": "#ffffff",
                "color_3": "#ffffff",
                "color_background": "#ffffff"
            },
            "dark": {
                "color_font_title": "#ffffff",
                "color_font": "#ffffff",
                "color_1": "#ffffff",
                "color_2": "#ffffff",
                "color_3": "#ffffff",
                "color_background": "#ffffff"
            },
            "fonts": {
                "title": "example_title",
                "title_size": 8,
                "body": "example_body",
                "body_size": 8
            }
        },
        "compressed": "example_compressed",
        "date": "1767222000000",
        "size_current": "4.5",
        "size_maximum": "4.5"
    }
}

notification_error

This operation is received by the client.

When a message caused an error (e.g. invalid secret).

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_error
    data:
        type: object
        properties:
            error_message:
                type: string
            error_name:
                enum:
                    - unknown
                    - invalid_secret
                    - invalid_format
        required:
            - error_name
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_error",
    "data": {
        "error_message": "example_error_message",
        "error_name": "unknown"
    }
}

notification_event

This operation is received by the client.

When an event is redeemed (either by a viewer or as a test by the streamer).

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_event
    data:
        type: object
        properties:
            category_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            event_display_name:
                type: string
            event_id:
                type: string
                minLength: 1
                maxLength: 32
                pattern: ^[\w-]+$
            is_test:
                type: boolean
            used_points:
                type: number
            user_display_name:
                type: string
            user_id:
                type: string
                minLength: 1
                maxLength: 256
            processed_at:
                type: number
            inputs:
                type: array
                items:
                    oneOf:
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: string
                              value:
                                  type:
                                      - string
                                      - "null"
                                  maxLength: 512
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: color
                              value:
                                  type:
                                      - string
                                      - "null"
                                  maxLength: 7
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: number
                              value:
                                  type:
                                      - number
                                      - "null"
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: boolean
                              value:
                                  type:
                                      - boolean
                                      - "null"
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                maxItems: 64
        required:
            - event_id
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_event",
    "data": {
        "category_ids": ["example", "example2"],
        "event_display_name": "example_event_display_name",
        "event_id": "example_event_id",
        "is_test": true,
        "used_points": 100,
        "user_display_name": "example_user_display_name",
        "user_id": "example_user_id",
        "processed_at": "1767222000000",
        "inputs": [
            {
                "value_type": "string",
                "value": "example_value",
                "id": "example_id"
            }
        ]
    }
}

notification_event_lock

This operation is sent to the server.

Locks events according to their event_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_event_lock
    data:
        type: object
        properties:
            event_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - event_ids
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_event_lock",
    "data": {
        "event_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_event_reset

This operation is sent to the server.

Resets the locks and limits of the event to their default.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_event_reset
    data:
        type: object
        properties:
            all:
                type: boolean
                description: Whether to reset all events (overrides 'events' property if present)
            event_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_event_reset",
    "data": {
        "all": true,
        "event_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_event_unlock

This operation is sent to the server.

Unlocks events according to their event_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_event_unlock
    data:
        type: object
        properties:
            event_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - event_ids
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_event_unlock",
    "data": {
        "event_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_skip_cooldowns

This operation is sent to the server.

Used to skip cooldowns, i.e. event or user cooldowns. There are multiple possible property combinations to target a specific group of users or events:

  1. scope only: Defining only the scope with no event_ids or user_ids results in the following:

    • all: resets every cooldown, including all event cooldowns, all user specific cooldowns, and global cooldowns.
    • global: resets the global cooldown.
    • global_event: resets all event cooldowns. User specific cooldowns will still run.
    • user: resets all user cooldowns. Event specific user cooldowns will still run.
    • user_event: resets all event-specific user cooldowns.
  2. scope “global_event” with event_ids: Defining an array with event_ids resets all event cooldowns with the corresponding event_ids.

  3. scope “user” with user_ids: Defining an array with user_ids resets all user cooldowns with the corresponding user_ids.

  4. scope “user_event” with event_ids: Defining an array with event_ids and the scope users means all users who have a cooldown running on the specific event id will be reset.

  5. scope “user_event with user_ids”: Defining an array with user_ids resets all event-specific user cooldowns for the corresponding user_ids.

  6. scope “user_event” with event_ids and user_ids: Defining both event_ids and user_ids resets events with the corresponding event_id for each given user by user_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_skip_cooldowns
    data:
        type: object
        properties:
            scopes:
                type: array
                items:
                    type: string
                    enum:
                        - all
                        - global
                        - global_event
                        - user
                        - user_event
                uniqueItems: true
            item_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            user_ids:
                type: array
                items:
                    type: string
                    minLength: 1
                    maxLength: 256
                maxItems: 512
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_skip_cooldowns",
    "data": {
        "scopes": ["user", "user_event"],
        "item_ids": ["example", "example2"],
        "user_ids": ["example", "example2"],
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_skip_queue

This operation is sent to the server.

Used to skip queues, i.e. to immediately make other events redeemable again after an event with a set cooldown has been sent.

AsyncApi schema for message:

undefined```

Example payload (JSON):

```json
undefined

notification_status_change

This operation is sent to the server.

Used to enable or disable sending of events by viewers.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_status_change
    data:
        type: object
        properties:
            active:
                type: boolean
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - active
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_status_change",
    "data": {
        "active": true,
        "secret": "example_secret",
        "version": "example_version"
    }
}

notification_status_streamer

This operation is received by the client.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: notification_status_streamer
    data:
        type: object
        properties:
            updated_at:
                type: number
            ready:
                type: boolean
            reason:
                type: string
                enum:
                    - unknown
                    - disconnected
                    - disabled_via_streamer
                    - disabled_via_dashboard
                    - ready
required:
    - type
    - data

Example payload (JSON):

{
    "type": "notification_status_streamer",
    "data": {
        "updated_at": 100,
        "ready": true,
        "reason": "unknown"
    }
}

request_category_list

This operation is sent to the server.

Send this to receive a list of categories.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_category_list
    data:
        type: object
        properties:
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
    message_id:
        type: string
        maxLength: 256
required:
    - type

Example payload (JSON):

{
    "type": "request_category_list",
    "data": {
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_category_list

Reply to request_category_list

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_category_list
    data:
        type: object
        properties:
            categories:
                type: array
                description: List of categories
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        border_radius:
                            type: number
                        box_shadow:
                            type: boolean
                        category_bar_hide:
                            type: boolean
                        category_bar_position:
                            enum:
                                - top
                                - bottom
                        display_name:
                            type: string
                            maxLength: 64
                        event_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        list_additional_height:
                            type: integer
                            maximum: 1024
                        list_aspect_ratio:
                            enum:
                                - auto
                                - 3/2
                                - 2/1
                                - 1/1
                                - 1/2
                                - 2/3
                        list_center_vertical:
                            type: boolean
                        list_columns:
                            type: integer
                            minimum: 1
                            maximum: 5
                        list_gap_horizontal:
                            type: number
                        list_gap_vertical:
                            type: number
                        list_icons_align:
                            enum:
                                - left
                                - center
                                - right
                        list_icons_wrap:
                            type: boolean
                        list_line_breaks:
                            type: boolean
                        list_spacing:
                            enum:
                                - space_between
                                - center
                        list_text_align:
                            enum:
                                - left
                                - center
                                - right
                                - justify
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        status_bar_hide:
                            type: boolean
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    required:
                        - id
                maxItems: 512
        required:
            - categories
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_category_list",
    "data": {
        "categories": [
            {
                "id": "example_id",
                "border_radius": 100,
                "box_shadow": true,
                "category_bar_hide": true,
                "category_bar_position": "top",
                "display_name": "example_display_name",
                "event_ids": ["example", "example2"],
                "list_additional_height": 1024,
                "list_aspect_ratio": "auto",
                "list_center_vertical": true,
                "list_columns": 1,
                "list_gap_horizontal": 100,
                "list_gap_vertical": 100,
                "list_icons_align": "left",
                "list_icons_wrap": true,
                "list_line_breaks": true,
                "list_spacing": "space_between",
                "list_text_align": "left",
                "locked": true,
                "locked_hide": true,
                "status_bar_hide": true,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                }
            }
        ]
    },
    "message_id": "example_message_id"
}

request_config

This operation is sent to the server.

Send this to receive config information, including events and categories.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_config_save
    data:
        type: object
        properties:
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
    message_id:
        type: string
        maxLength: 256
required:
    - type

Example payload (JSON):

{
    "type": "request_config_save",
    "data": {
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_config

Reply to request_config

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_config_save
    data:
        type: object
        properties:
            categories:
                type: array
                description: List of categories
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        border_radius:
                            type: number
                        box_shadow:
                            type: boolean
                        category_bar_hide:
                            type: boolean
                        category_bar_position:
                            enum:
                                - top
                                - bottom
                        display_name:
                            type: string
                            maxLength: 64
                        event_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        list_additional_height:
                            type: integer
                            maximum: 1024
                        list_aspect_ratio:
                            enum:
                                - auto
                                - 3/2
                                - 2/1
                                - 1/1
                                - 1/2
                                - 2/3
                        list_center_vertical:
                            type: boolean
                        list_columns:
                            type: integer
                            minimum: 1
                            maximum: 5
                        list_gap_horizontal:
                            type: number
                        list_gap_vertical:
                            type: number
                        list_icons_align:
                            enum:
                                - left
                                - center
                                - right
                        list_icons_wrap:
                            type: boolean
                        list_line_breaks:
                            type: boolean
                        list_spacing:
                            enum:
                                - space_between
                                - center
                        list_text_align:
                            enum:
                                - left
                                - center
                                - right
                                - justify
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        status_bar_hide:
                            type: boolean
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    required:
                        - id
                maxItems: 512
            events:
                type: array
                description: List of events
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        category_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        cooldown_global:
                            type: integer
                            description: Global cooldown in ms
                        cooldown_global_event:
                            type: integer
                            description: Global event specific cooldown in ms
                        cooldown_user:
                            type: integer
                            description: User specific cooldown in ms
                        cooldown_user_event:
                            type: integer
                            description: User specific and event specific cooldown in ms
                        description:
                            type: string
                            maxLength: 512
                        display_name:
                            type: string
                            maxLength: 64
                        exclude_cooldown_global:
                            type: boolean
                            description: Event can be sent regardless of global cooldown
                        exclude_cooldown_user:
                            type: boolean
                            description: Event can be sent regardless of user cooldown
                        following_minimum:
                            type: integer
                            description: Minimum follow duration in ms
                        inputs:
                            type: array
                            items:
                                oneOf:
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: text
                                          default:
                                              type: string
                                              maxLength: 512
                                          regex:
                                              type: string
                                              maxLength: 512
                                          length_min:
                                              type: number
                                          length_max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: number
                                          default:
                                              type: number
                                          step:
                                              type: number
                                          min:
                                              type: number
                                          max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: color
                                          default:
                                              type: string
                                              maxLength: 512
                                          color_settings:
                                              oneOf:
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: rgb
                                                        r:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        g:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        b:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsl
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        l:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsv
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        v:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: choice
                                          values:
                                              type: array
                                              items:
                                                  type: string
                                                  maxLength: 24
                                              maxItems: 128
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: toggle
                                          default:
                                              type: boolean
                                      required:
                                          - input_type
                            maxItems: 64
                        limit:
                            type: integer
                        limit_user:
                            type: integer
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        padding:
                            description: Sets the padding of an item. Adds placeholders before the event
                                list item.
                            type: number
                        points_disable_conversion:
                            type: boolean
                        points_required:
                            type: integer
                            maximum: 10000
                        product_sku:
                            description: Amount of bits required for the event. Only some combinations
                                (products) are allowed, as seen in the extension configuration
                                for events. By enabling bits, you confirm that you read and
                                follow the Twitch Bits Acceptable Use Policy
                                (https://legal.twitch.com/en/legal/bits-acceptable-use/).
                            type: string
                            pattern: ^(?:test_)?event_[0-9]{1,5}$
                        response:
                            type: boolean
                        span_horizontal:
                            type: integer
                            minimum: 1
                            maximum: 5
                        span_vertical:
                            type: integer
                            minimum: 1
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                        subscription_minimum:
                            type: string
                            enum:
                                - twitch_sub_none
                                - twitch_sub_1000
                                - twitch_sub_2000
                                - twitch_sub_3000
                        write_chat:
                            type: boolean
                        write_chat_message:
                            description: "Replaces the default chat message. You can use the following
                                placeholders: %event_name%, %user_name%, %bits%, %points%."
                            type: string
                            maxLength: 412
                        quick_event:
                            description: Sends event after clicking button without showing dialog
                            type: boolean
                    required:
                        - id
                maxItems: 512
            style:
                type: object
                properties:
                    light:
                        type: object
                        properties:
                            color_font_title:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_font:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_1:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_2:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_3:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_background:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    dark:
                        type: object
                        properties:
                            color_font_title:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_font:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_1:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_2:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_3:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            color_background:
                                type: string
                                pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                    fonts:
                        type: object
                        properties:
                            title:
                                type: string
                                maxLength: 128
                            title_size:
                                type: number
                                minimum: 8
                            body:
                                type: string
                                maxLength: 128
                            body_size:
                                type: number
                                minimum: 8
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "request_config_save",
    "data": {
        "categories": [
            {
                "id": "example_id",
                "border_radius": 100,
                "box_shadow": true,
                "category_bar_hide": true,
                "category_bar_position": "top",
                "display_name": "example_display_name",
                "event_ids": ["example", "example2"],
                "list_additional_height": 1024,
                "list_aspect_ratio": "auto",
                "list_center_vertical": true,
                "list_columns": 1,
                "list_gap_horizontal": 100,
                "list_gap_vertical": 100,
                "list_icons_align": "left",
                "list_icons_wrap": true,
                "list_line_breaks": true,
                "list_spacing": "space_between",
                "list_text_align": "left",
                "locked": true,
                "locked_hide": true,
                "status_bar_hide": true,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                }
            }
        ],
        "events": [
            {
                "id": "example_id",
                "category_ids": ["example", "example2"],
                "cooldown_global": 5000,
                "cooldown_global_event": 5000,
                "cooldown_user": 5000,
                "cooldown_user_event": 5000,
                "description": "example_description",
                "display_name": "example_display_name",
                "exclude_cooldown_global": true,
                "exclude_cooldown_user": true,
                "following_minimum": "5",
                "inputs": [
                    {
                        "id": "example_id",
                        "label": "example_label",
                        "input_type": "text",
                        "default": "example_default",
                        "regex": "example_regex",
                        "length_min": 100,
                        "length_max": 100
                    }
                ],
                "limit": "5",
                "limit_user": "5",
                "locked": true,
                "locked_hide": true,
                "padding": 100,
                "points_disable_conversion": true,
                "points_required": 10000,
                "product_sku": "event_100",
                "response": true,
                "span_horizontal": 1,
                "span_vertical": 1,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                },
                "subscription_minimum": "twitch_sub_none",
                "write_chat": true,
                "write_chat_message": "example_write_chat_message",
                "quick_event": true
            }
        ],
        "style": {
            "light": {
                "color_font_title": "#ffffff",
                "color_font": "#ffffff",
                "color_1": "#ffffff",
                "color_2": "#ffffff",
                "color_3": "#ffffff",
                "color_background": "#ffffff"
            },
            "dark": {
                "color_font_title": "#ffffff",
                "color_font": "#ffffff",
                "color_1": "#ffffff",
                "color_2": "#ffffff",
                "color_3": "#ffffff",
                "color_background": "#ffffff"
            },
            "fonts": {
                "title": "example_title",
                "title_size": 8,
                "body": "example_body",
                "body_size": 8
            }
        }
    },
    "message_id": "example_message_id"
}

request_config_change

This operation is sent to the server.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_config_change
    data:
        type: object
        properties:
            operation:
                enum:
                    - insert
                    - update
                    - upsert
                    - delete
                    - clear
            changes:
                type: object
                properties:
                    categories:
                        type: array
                        description: List of categories
                        items:
                            type: object
                            properties:
                                id:
                                    type: string
                                    minLength: 1
                                    maxLength: 32
                                    pattern: ^[\w-]+$
                                border_radius:
                                    type: number
                                box_shadow:
                                    type: boolean
                                category_bar_hide:
                                    type: boolean
                                category_bar_position:
                                    enum:
                                        - top
                                        - bottom
                                display_name:
                                    type: string
                                    maxLength: 64
                                event_ids:
                                    type: array
                                    description: List of item ids
                                    items:
                                        type: string
                                        minLength: 1
                                        maxLength: 32
                                        pattern: ^[\w-]+$
                                    maxItems: 512
                                list_additional_height:
                                    type: integer
                                    maximum: 1024
                                list_aspect_ratio:
                                    enum:
                                        - auto
                                        - 3/2
                                        - 2/1
                                        - 1/1
                                        - 1/2
                                        - 2/3
                                list_center_vertical:
                                    type: boolean
                                list_columns:
                                    type: integer
                                    minimum: 1
                                    maximum: 5
                                list_gap_horizontal:
                                    type: number
                                list_gap_vertical:
                                    type: number
                                list_icons_align:
                                    enum:
                                        - left
                                        - center
                                        - right
                                list_icons_wrap:
                                    type: boolean
                                list_line_breaks:
                                    type: boolean
                                list_spacing:
                                    enum:
                                        - space_between
                                        - center
                                list_text_align:
                                    enum:
                                        - left
                                        - center
                                        - right
                                        - justify
                                locked:
                                    type: boolean
                                locked_hide:
                                    type: boolean
                                status_bar_hide:
                                    type: boolean
                                style_override:
                                    type: object
                                    properties:
                                        light:
                                            type: object
                                            properties:
                                                color_font_title:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_font:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_1:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_2:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_3:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_background:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        dark:
                                            type: object
                                            properties:
                                                color_font_title:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_font:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_1:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_2:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_3:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_background:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            required:
                                - id
                        maxItems: 512
                    categories_order_index:
                        description: 'Set the array index to where items should be inserted (0: start,
                            -1: end). Can be used for reordering. For example, if you have
                            items with ids ["a", "b", "c"] and insert a new item "d" at index
                            1, the result will be ["a", "d", "b", "c"].'
                        type: number
                    events:
                        type: array
                        description: List of events
                        items:
                            type: object
                            properties:
                                id:
                                    type: string
                                    minLength: 1
                                    maxLength: 32
                                    pattern: ^[\w-]+$
                                category_ids:
                                    type: array
                                    description: List of item ids
                                    items:
                                        type: string
                                        minLength: 1
                                        maxLength: 32
                                        pattern: ^[\w-]+$
                                    maxItems: 512
                                cooldown_global:
                                    type: integer
                                    description: Global cooldown in ms
                                cooldown_global_event:
                                    type: integer
                                    description: Global event specific cooldown in ms
                                cooldown_user:
                                    type: integer
                                    description: User specific cooldown in ms
                                cooldown_user_event:
                                    type: integer
                                    description: User specific and event specific cooldown in ms
                                description:
                                    type: string
                                    maxLength: 512
                                display_name:
                                    type: string
                                    maxLength: 64
                                exclude_cooldown_global:
                                    type: boolean
                                    description: Event can be sent regardless of global cooldown
                                exclude_cooldown_user:
                                    type: boolean
                                    description: Event can be sent regardless of user cooldown
                                following_minimum:
                                    type: integer
                                    description: Minimum follow duration in ms
                                inputs:
                                    type: array
                                    items:
                                        oneOf:
                                            - type: object
                                              properties:
                                                  id:
                                                      type: string
                                                      maxLength: 32
                                                      pattern: ^[\w-]*$
                                                  label:
                                                      type: string
                                                      maxLength: 24
                                                  input_type:
                                                      type: string
                                                      const: text
                                                  default:
                                                      type: string
                                                      maxLength: 512
                                                  regex:
                                                      type: string
                                                      maxLength: 512
                                                  length_min:
                                                      type: number
                                                  length_max:
                                                      type: number
                                              required:
                                                  - input_type
                                            - type: object
                                              properties:
                                                  id:
                                                      type: string
                                                      maxLength: 32
                                                      pattern: ^[\w-]*$
                                                  label:
                                                      type: string
                                                      maxLength: 24
                                                  input_type:
                                                      type: string
                                                      const: number
                                                  default:
                                                      type: number
                                                  step:
                                                      type: number
                                                  min:
                                                      type: number
                                                  max:
                                                      type: number
                                              required:
                                                  - input_type
                                            - type: object
                                              properties:
                                                  id:
                                                      type: string
                                                      maxLength: 32
                                                      pattern: ^[\w-]*$
                                                  label:
                                                      type: string
                                                      maxLength: 24
                                                  input_type:
                                                      type: string
                                                      const: color
                                                  default:
                                                      type: string
                                                      maxLength: 512
                                                  color_settings:
                                                      oneOf:
                                                          - type: object
                                                            properties:
                                                                color_type:
                                                                    type: string
                                                                    const: rgb
                                                                r:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                g:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                b:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                            required:
                                                                - color_type
                                                          - type: object
                                                            properties:
                                                                color_type:
                                                                    type: string
                                                                    const: hsl
                                                                h:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                s:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                l:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                            required:
                                                                - color_type
                                                          - type: object
                                                            properties:
                                                                color_type:
                                                                    type: string
                                                                    const: hsv
                                                                h:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                s:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                                v:
                                                                    type: object
                                                                    properties:
                                                                        min:
                                                                            type: number
                                                                        max:
                                                                            type: number
                                                            required:
                                                                - color_type
                                              required:
                                                  - input_type
                                            - type: object
                                              properties:
                                                  id:
                                                      type: string
                                                      maxLength: 32
                                                      pattern: ^[\w-]*$
                                                  label:
                                                      type: string
                                                      maxLength: 24
                                                  input_type:
                                                      type: string
                                                      const: choice
                                                  values:
                                                      type: array
                                                      items:
                                                          type: string
                                                          maxLength: 24
                                                      maxItems: 128
                                              required:
                                                  - input_type
                                            - type: object
                                              properties:
                                                  id:
                                                      type: string
                                                      maxLength: 32
                                                      pattern: ^[\w-]*$
                                                  label:
                                                      type: string
                                                      maxLength: 24
                                                  input_type:
                                                      type: string
                                                      const: toggle
                                                  default:
                                                      type: boolean
                                              required:
                                                  - input_type
                                    maxItems: 64
                                limit:
                                    type: integer
                                limit_user:
                                    type: integer
                                locked:
                                    type: boolean
                                locked_hide:
                                    type: boolean
                                padding:
                                    description: Sets the padding of an item. Adds placeholders before the event
                                        list item.
                                    type: number
                                points_disable_conversion:
                                    type: boolean
                                points_required:
                                    type: integer
                                    maximum: 10000
                                product_sku:
                                    description: Amount of bits required for the event. Only some combinations
                                        (products) are allowed, as seen in the extension
                                        configuration for events. By enabling bits, you confirm that
                                        you read and follow the Twitch Bits Acceptable Use Policy
                                        (https://legal.twitch.com/en/legal/bits-acceptable-use/).
                                    type: string
                                    pattern: ^(?:test_)?event_[0-9]{1,5}$
                                response:
                                    type: boolean
                                span_horizontal:
                                    type: integer
                                    minimum: 1
                                    maximum: 5
                                span_vertical:
                                    type: integer
                                    minimum: 1
                                style_override:
                                    type: object
                                    properties:
                                        light:
                                            type: object
                                            properties:
                                                color_font_title:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_font:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_1:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_2:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_3:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_background:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        dark:
                                            type: object
                                            properties:
                                                color_font_title:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_font:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_1:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_2:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_3:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                                color_background:
                                                    type: string
                                                    pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                subscription_minimum:
                                    type: string
                                    enum:
                                        - twitch_sub_none
                                        - twitch_sub_1000
                                        - twitch_sub_2000
                                        - twitch_sub_3000
                                write_chat:
                                    type: boolean
                                write_chat_message:
                                    description: "Replaces the default chat message. You can use the following
                                        placeholders: %event_name%, %user_name%, %bits%, %points%."
                                    type: string
                                    maxLength: 412
                                quick_event:
                                    description: Sends event after clicking button without showing dialog
                                    type: boolean
                            required:
                                - id
                        maxItems: 512
                    events_order_index:
                        type: number
                        description: See description for categories_insertion_index.
                    style:
                        type: object
                        properties:
                            light:
                                type: object
                                properties:
                                    color_font_title:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_font:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_1:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_2:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_3:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_background:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            dark:
                                type: object
                                properties:
                                    color_font_title:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_font:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_1:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_2:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_3:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                    color_background:
                                        type: string
                                        pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                            fonts:
                                type: object
                                properties:
                                    title:
                                        type: string
                                        maxLength: 128
                                    title_size:
                                        type: number
                                        minimum: 8
                                    body:
                                        type: string
                                        maxLength: 128
                                    body_size:
                                        type: number
                                        minimum: 8
            changes_raw:
                description: Replace the current config with a raw config string (e.g. from a
                    config backup). Only works with insert and clear operation.
                type: string
                maxLength: 65536
            reset:
                description: Reset changed events (locks, limits and cooldowns).
                type: boolean
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - operation
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "request_config_change",
    "data": {
        "operation": "insert",
        "changes": {
            "categories": [
                {
                    "id": "example_id",
                    "border_radius": 100,
                    "box_shadow": true,
                    "category_bar_hide": true,
                    "category_bar_position": "top",
                    "display_name": "example_display_name",
                    "event_ids": ["example", "example2"],
                    "list_additional_height": 1024,
                    "list_aspect_ratio": "auto",
                    "list_center_vertical": true,
                    "list_columns": 1,
                    "list_gap_horizontal": 100,
                    "list_gap_vertical": 100,
                    "list_icons_align": "left",
                    "list_icons_wrap": true,
                    "list_line_breaks": true,
                    "list_spacing": "space_between",
                    "list_text_align": "left",
                    "locked": true,
                    "locked_hide": true,
                    "status_bar_hide": true,
                    "style_override": {
                        "light": {
                            "color_font_title": "#ffffff",
                            "color_font": "#ffffff",
                            "color_1": "#ffffff",
                            "color_2": "#ffffff",
                            "color_3": "#ffffff",
                            "color_background": "#ffffff"
                        },
                        "dark": {
                            "color_font_title": "#ffffff",
                            "color_font": "#ffffff",
                            "color_1": "#ffffff",
                            "color_2": "#ffffff",
                            "color_3": "#ffffff",
                            "color_background": "#ffffff"
                        }
                    }
                }
            ],
            "categories_order_index": 100,
            "events": [
                {
                    "id": "example_id",
                    "category_ids": ["example", "example2"],
                    "cooldown_global": 5000,
                    "cooldown_global_event": 5000,
                    "cooldown_user": 5000,
                    "cooldown_user_event": 5000,
                    "description": "example_description",
                    "display_name": "example_display_name",
                    "exclude_cooldown_global": true,
                    "exclude_cooldown_user": true,
                    "following_minimum": "5",
                    "inputs": [
                        {
                            "id": "example_id",
                            "label": "example_label",
                            "input_type": "text",
                            "default": "example_default",
                            "regex": "example_regex",
                            "length_min": 100,
                            "length_max": 100
                        }
                    ],
                    "limit": "5",
                    "limit_user": "5",
                    "locked": true,
                    "locked_hide": true,
                    "padding": 100,
                    "points_disable_conversion": true,
                    "points_required": 10000,
                    "product_sku": "event_100",
                    "response": true,
                    "span_horizontal": 1,
                    "span_vertical": 1,
                    "style_override": {
                        "light": {
                            "color_font_title": "#ffffff",
                            "color_font": "#ffffff",
                            "color_1": "#ffffff",
                            "color_2": "#ffffff",
                            "color_3": "#ffffff",
                            "color_background": "#ffffff"
                        },
                        "dark": {
                            "color_font_title": "#ffffff",
                            "color_font": "#ffffff",
                            "color_1": "#ffffff",
                            "color_2": "#ffffff",
                            "color_3": "#ffffff",
                            "color_background": "#ffffff"
                        }
                    },
                    "subscription_minimum": "twitch_sub_none",
                    "write_chat": true,
                    "write_chat_message": "example_write_chat_message",
                    "quick_event": true
                }
            ],
            "events_order_index": 100,
            "style": {
                "light": {
                    "color_font_title": "#ffffff",
                    "color_font": "#ffffff",
                    "color_1": "#ffffff",
                    "color_2": "#ffffff",
                    "color_3": "#ffffff",
                    "color_background": "#ffffff"
                },
                "dark": {
                    "color_font_title": "#ffffff",
                    "color_font": "#ffffff",
                    "color_1": "#ffffff",
                    "color_2": "#ffffff",
                    "color_3": "#ffffff",
                    "color_background": "#ffffff"
                },
                "fonts": {
                    "title": "example_title",
                    "title_size": 8,
                    "body": "example_body",
                    "body_size": 8
                }
            }
        },
        "changes_raw": "example_changes_raw",
        "reset": true,
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_config_change

Reply to request_config_change

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_config_change
    data:
        type: object
        properties:
            success:
                type: boolean
            size_current:
                type: number
            size_maximum:
                type: number
            compressed:
                type: string
            error:
                type: object
                properties:
                    error_type:
                        enum:
                            - unknown
                            - invalid_format
                            - already_exists
                            - does_not_exist
                            - limit_reached
                            - unsupported
                            - twitch
                    message:
                        type: string
                required:
                    - error_type
        required:
            - success
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_config_change",
    "data": {
        "success": true,
        "size_current": "4.5",
        "size_maximum": "4.5",
        "compressed": "example_compressed",
        "error": {
            "error_type": "unknown",
            "message": "example_message"
        }
    },
    "message_id": "example_message_id"
}

request_connection_check

This operation is received by the client.

A check used by the server to test whether the client is connected (similar to a ping). The reply includes information about the current status (whether the viewers can send events) and the secret.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_connection_check
required:
    - type

Example payload (JSON):

{
    "type": "request_connection_check"
}

This message requires a reply to be sent to the server:

response_connection_check

Reply to request_connection_check

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_connection_check
    data:
        type: object
        properties:
            active:
                type: boolean
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
        required:
            - secret
            - active
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_connection_check",
    "data": {
        "active": true,
        "secret": "example_secret",
        "version": "example_version"
    }
}

request_event_data

This operation is received by the client.

This is sent by the server if custom response is active for an event. Requires a response with the corresponding message_id.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_event_data
    data:
        type: object
        properties:
            category_ids:
                type: array
                description: List of item ids
                items:
                    type: string
                    minLength: 1
                    maxLength: 32
                    pattern: ^[\w-]+$
                maxItems: 512
            event_display_name:
                type: string
            event_id:
                type: string
                minLength: 1
                maxLength: 32
                pattern: ^[\w-]+$
            is_test:
                type: boolean
            used_points:
                type: number
            user_display_name:
                type: string
            user_id:
                type: string
                minLength: 1
                maxLength: 256
            processed_at:
                type: number
            inputs:
                type: array
                items:
                    oneOf:
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: string
                              value:
                                  type:
                                      - string
                                      - "null"
                                  maxLength: 512
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: color
                              value:
                                  type:
                                      - string
                                      - "null"
                                  maxLength: 7
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: number
                              value:
                                  type:
                                      - number
                                      - "null"
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                        - type: object
                          properties:
                              value_type:
                                  type: string
                                  const: boolean
                              value:
                                  type:
                                      - boolean
                                      - "null"
                              id:
                                  type: string
                                  maxLength: 32
                                  pattern: ^[\w-]*$
                          required:
                              - value_type
                maxItems: 64
        required:
            - event_id
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data
    - message_id

Example payload (JSON):

{
    "type": "request_event_data",
    "data": {
        "category_ids": ["example", "example2"],
        "event_display_name": "example_event_display_name",
        "event_id": "example_event_id",
        "is_test": true,
        "used_points": 100,
        "user_display_name": "example_user_display_name",
        "user_id": "example_user_id",
        "processed_at": "1767222000000",
        "inputs": [
            {
                "value_type": "string",
                "value": "example_value",
                "id": "example_id"
            }
        ]
    },
    "message_id": "example_message_id"
}

This message requires a reply to be sent to the server:

response_event_data

Reply to request_event_data

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_event_data
    data:
        type: object
        properties:
            message:
                type: string
                description: The message that is sent to the viewer, to be shown within the
                    extension. Supports simple markdown with ** (bold) and \n (line
                    break).
            error:
                type: boolean
            options:
                type: object
                properties:
                    cooldown_global:
                        type: integer
                        description: Global cooldown in ms to use. Overrides event configuration.
                    cooldown_global_event:
                        type: integer
                        description: Global event specific cooldown in ms to use. Overrides event
                            configuration.
                    cooldown_user:
                        type: integer
                        description: User cooldown in ms to use. Overrides event configuration.
                    cooldown_user_event:
                        type: integer
                        description: Event specific user cooldown in ms to use. Overrides event
                            configuration.
                    write_chat:
                        type: boolean
                        description: Whether to write a chat message. Overrides event configuration.
                            Requires chat capabilities.
                    write_chat_message:
                        type: string
                        description: "Custom chat message to use if one is written. You can use the
                            following placeholders: %event_name%, %user_name%, %points%."
                        maxLength: 412
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - message_id

Example payload (JSON):

{
    "type": "response_event_data",
    "data": {
        "message": "example_message",
        "error": true,
        "options": {
            "cooldown_global": 5000,
            "cooldown_global_event": 5000,
            "cooldown_user": 5000,
            "cooldown_user_event": 5000,
            "write_chat": true,
            "write_chat_message": "example_write_chat_message"
        },
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

request_event_list

This operation is sent to the server.

Send this to receive a list of events.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_event_list
    data:
        type: object
        properties:
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
    message_id:
        type: string
        maxLength: 256
required:
    - type

Example payload (JSON):

{
    "type": "request_event_list",
    "data": {
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_event_list

Reply to request_event_list

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_event_list
    data:
        type: object
        properties:
            events:
                type: array
                description: List of events
                items:
                    type: object
                    properties:
                        id:
                            type: string
                            minLength: 1
                            maxLength: 32
                            pattern: ^[\w-]+$
                        category_ids:
                            type: array
                            description: List of item ids
                            items:
                                type: string
                                minLength: 1
                                maxLength: 32
                                pattern: ^[\w-]+$
                            maxItems: 512
                        cooldown_global:
                            type: integer
                            description: Global cooldown in ms
                        cooldown_global_event:
                            type: integer
                            description: Global event specific cooldown in ms
                        cooldown_user:
                            type: integer
                            description: User specific cooldown in ms
                        cooldown_user_event:
                            type: integer
                            description: User specific and event specific cooldown in ms
                        description:
                            type: string
                            maxLength: 512
                        display_name:
                            type: string
                            maxLength: 64
                        exclude_cooldown_global:
                            type: boolean
                            description: Event can be sent regardless of global cooldown
                        exclude_cooldown_user:
                            type: boolean
                            description: Event can be sent regardless of user cooldown
                        following_minimum:
                            type: integer
                            description: Minimum follow duration in ms
                        inputs:
                            type: array
                            items:
                                oneOf:
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: text
                                          default:
                                              type: string
                                              maxLength: 512
                                          regex:
                                              type: string
                                              maxLength: 512
                                          length_min:
                                              type: number
                                          length_max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: number
                                          default:
                                              type: number
                                          step:
                                              type: number
                                          min:
                                              type: number
                                          max:
                                              type: number
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: color
                                          default:
                                              type: string
                                              maxLength: 512
                                          color_settings:
                                              oneOf:
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: rgb
                                                        r:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        g:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        b:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsl
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        l:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                                  - type: object
                                                    properties:
                                                        color_type:
                                                            type: string
                                                            const: hsv
                                                        h:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        s:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                        v:
                                                            type: object
                                                            properties:
                                                                min:
                                                                    type: number
                                                                max:
                                                                    type: number
                                                    required:
                                                        - color_type
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: choice
                                          values:
                                              type: array
                                              items:
                                                  type: string
                                                  maxLength: 24
                                              maxItems: 128
                                      required:
                                          - input_type
                                    - type: object
                                      properties:
                                          id:
                                              type: string
                                              maxLength: 32
                                              pattern: ^[\w-]*$
                                          label:
                                              type: string
                                              maxLength: 24
                                          input_type:
                                              type: string
                                              const: toggle
                                          default:
                                              type: boolean
                                      required:
                                          - input_type
                            maxItems: 64
                        limit:
                            type: integer
                        limit_user:
                            type: integer
                        locked:
                            type: boolean
                        locked_hide:
                            type: boolean
                        padding:
                            description: Sets the padding of an item. Adds placeholders before the event
                                list item.
                            type: number
                        points_disable_conversion:
                            type: boolean
                        points_required:
                            type: integer
                            maximum: 10000
                        product_sku:
                            description: Amount of bits required for the event. Only some combinations
                                (products) are allowed, as seen in the extension configuration
                                for events. By enabling bits, you confirm that you read and
                                follow the Twitch Bits Acceptable Use Policy
                                (https://legal.twitch.com/en/legal/bits-acceptable-use/).
                            type: string
                            pattern: ^(?:test_)?event_[0-9]{1,5}$
                        response:
                            type: boolean
                        span_horizontal:
                            type: integer
                            minimum: 1
                            maximum: 5
                        span_vertical:
                            type: integer
                            minimum: 1
                        style_override:
                            type: object
                            properties:
                                light:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                dark:
                                    type: object
                                    properties:
                                        color_font_title:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_font:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_1:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_2:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_3:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                                        color_background:
                                            type: string
                                            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
                        subscription_minimum:
                            type: string
                            enum:
                                - twitch_sub_none
                                - twitch_sub_1000
                                - twitch_sub_2000
                                - twitch_sub_3000
                        write_chat:
                            type: boolean
                        write_chat_message:
                            description: "Replaces the default chat message. You can use the following
                                placeholders: %event_name%, %user_name%, %bits%, %points%."
                            type: string
                            maxLength: 412
                        quick_event:
                            description: Sends event after clicking button without showing dialog
                            type: boolean
                    required:
                        - id
                maxItems: 512
        required:
            - events
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_event_list",
    "data": {
        "events": [
            {
                "id": "example_id",
                "category_ids": ["example", "example2"],
                "cooldown_global": 5000,
                "cooldown_global_event": 5000,
                "cooldown_user": 5000,
                "cooldown_user_event": 5000,
                "description": "example_description",
                "display_name": "example_display_name",
                "exclude_cooldown_global": true,
                "exclude_cooldown_user": true,
                "following_minimum": "5",
                "inputs": [
                    {
                        "id": "example_id",
                        "label": "example_label",
                        "input_type": "text",
                        "default": "example_default",
                        "regex": "example_regex",
                        "length_min": 100,
                        "length_max": 100
                    }
                ],
                "limit": "5",
                "limit_user": "5",
                "locked": true,
                "locked_hide": true,
                "padding": 100,
                "points_disable_conversion": true,
                "points_required": 10000,
                "product_sku": "event_100",
                "response": true,
                "span_horizontal": 1,
                "span_vertical": 1,
                "style_override": {
                    "light": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    },
                    "dark": {
                        "color_font_title": "#ffffff",
                        "color_font": "#ffffff",
                        "color_1": "#ffffff",
                        "color_2": "#ffffff",
                        "color_3": "#ffffff",
                        "color_background": "#ffffff"
                    }
                },
                "subscription_minimum": "twitch_sub_none",
                "write_chat": true,
                "write_chat_message": "example_write_chat_message",
                "quick_event": true
            }
        ]
    },
    "message_id": "example_message_id"
}

request_points_change

This operation is sent to the server.

Adds points to specific users/viewers via id. Points added this way are not persisted and might be lost during server restarts or version updates.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_points_change
    data:
        type: object
        properties:
            user_ids:
                type: array
                items:
                    type: string
                    minLength: 1
                    maxLength: 256
                maxItems: 512
            points_change:
                type: number
                maximum: 10000
            message:
                type: string
                maxLength: 128
        required:
            - user_ids
            - points_change
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "request_points_change",
    "data": {
        "user_ids": ["example", "example2"],
        "points_change": 10000,
        "message": "example_message"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_points_change

Reply to request_points_change

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_points_change
    data:
        type: object
        properties:
            success:
                type: boolean
        required:
            - success
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_points_change",
    "data": {
        "success": true
    },
    "message_id": "example_message_id"
}

request_secret_check

This operation is sent to the server.

Send this to check whether a secret is valid.

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: request_secret_check
    data:
        type: object
        properties:
            secret:
                type: string
                maxLength: 256
            version:
                type: string
                maxLength: 32
                description: Optional version information about the used streamer library.
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "request_secret_check",
    "data": {
        "secret": "example_secret",
        "version": "example_version"
    },
    "message_id": "example_message_id"
}

On receiving a valid message, the server sends a reply:

response_secret_check

Reply to request_secret_check

AsyncApi schema for message:

type: object
properties:
    type:
        type: string
        const: response_secret_check
    data:
        type: object
        properties:
            valid:
                type: boolean
        required:
            - valid
    message_id:
        type: string
        maxLength: 256
required:
    - type
    - data

Example payload (JSON):

{
    "type": "response_secret_check",
    "data": {
        "valid": true
    },
    "message_id": "example_message_id"
}