Twitch.ReSub

WebSocket event schema, payload, and examples

Properties

cumulativeMonths
integer required
durationMonths
integer required
gifter
object required
gifterIsAnonymous
boolean
isFromSharedChatGuest
boolean required
isGift
boolean required
isInSharedChat
boolean required
isPrime
boolean required
isSharedChatHost
boolean required
isTest
boolean required
messageId
string
parts
TwitchMessagePartBase[]
streakMonths
integer required
subTier
string
systemMessage
string
text
string
user
object required

Schema

The JSON Schema for the event payload, if available.
schema.json
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "TwitchChatNotification_ResubEvent",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "text": {
      "type": [
        "null",
        "string"
      ]
    },
    "parts": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/TwitchMessagePartBase"
      }
    },
    "user": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/TwitchUser"
        }
      ]
    },
    "messageId": {
      "type": [
        "null",
        "string"
      ]
    },
    "systemMessage": {
      "type": [
        "null",
        "string"
      ]
    },
    "isTest": {
      "type": "boolean"
    },
    "isInSharedChat": {
      "type": "boolean"
    },
    "isSharedChatHost": {
      "type": "boolean"
    },
    "isFromSharedChatGuest": {
      "type": "boolean"
    },
    "cumulativeMonths": {
      "type": "integer"
    },
    "durationMonths": {
      "type": "integer"
    },
    "streakMonths": {
      "type": "integer"
    },
    "subTier": {
      "type": [
        "null",
        "string"
      ]
    },
    "isPrime": {
      "type": "boolean"
    },
    "isGift": {
      "type": "boolean"
    },
    "gifterIsAnonymous": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "gifter": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/TwitchBaseUser"
        }
      ]
    }
  },
  "$defs": {
    "TwitchMessagePartBase": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": [
            "null",
            "string"
          ]
        },
        "text": {
          "type": [
            "null",
            "string"
          ]
        }
      }
    },
    "TwitchUser": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": [
            "null",
            "string"
          ]
        },
        "login": {
          "type": [
            "null",
            "string"
          ]
        },
        "name": {
          "type": [
            "null",
            "string"
          ]
        },
        "type": {
          "type": [
            "null",
            "string"
          ]
        },
        "role": {
          "$ref": "#/$defs/ViewerRole"
        },
        "badges": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/TwitchBadge"
          }
        },
        "color": {
          "type": [
            "null",
            "string"
          ]
        },
        "subscribed": {
          "type": "boolean"
        },
        "subscriptionTier": {
          "type": [
            "null",
            "string"
          ]
        },
        "monthsSubscribed": {
          "type": "integer"
        }
      }
    },
    "ViewerRole": {
      "type": "integer",
      "description": "",
      "x-enum-names": [
        "Unknown",
        "Viewer",
        "Vip",
        "Moderator",
        "Broadcaster"
      ],
      "x-enum-descriptions": [
        null,
        null,
        null,
        null,
        null
      ],
      "enum": [
        0,
        1,
        2,
        3,
        4
      ]
    },
    "TwitchBadge": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": [
            "null",
            "string"
          ]
        },
        "version": {
          "type": [
            "null",
            "string"
          ]
        },
        "imageUrl": {
          "type": [
            "null",
            "string"
          ]
        },
        "info": {
          "type": [
            "null",
            "string"
          ]
        }
      }
    },
    "TwitchBaseUser": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": [
            "null",
            "string"
          ]
        },
        "login": {
          "type": [
            "null",
            "string"
          ]
        },
        "name": {
          "type": [
            "null",
            "string"
          ]
        },
        "type": {
          "type": [
            "null",
            "string"
          ]
        }
      }
    }
  }
}

JSON Payload

An example JSON payload for the event, automatically generated using JSONSchemaFaker
example.json
{
  "text": null,
  "parts": [
    {
      "type": "",
      "text": "VwT2GUA"
    },
    {
      "type": "8DvWqUGvCa",
      "text": "fYzuHdMr"
    },
    {
      "type": null,
      "text": "vlOEeV7aD4"
    },
    {
      "type": "rVwCRaoFW0",
      "text": null
    },
    {
      "type": "rRVt7V",
      "text": "85Ch"
    }
  ],
  "user": {},
  "messageId": null,
  "systemMessage": "16SgP0",
  "isTest": true,
  "isInSharedChat": true,
  "isSharedChatHost": false,
  "isFromSharedChatGuest": true,
  "cumulativeMonths": 999,
  "durationMonths": 835,
  "streakMonths": -940,
  "subTier": null,
  "isPrime": false,
  "isGift": false,
  "gifterIsAnonymous": null,
  "gifter": {}
}

Client Example

Example code showing how to subscribe to this event using the Streamer.bot WebSocket Client
index.js
// Initialize the Streamer.bot WebSocket Client
const client = new StreamerbotClient();

// Subscribe to "Twitch.ReSub" events and register a callback
client.on('Twitch.ReSub', ({ event, data }) => {
  // Code here will run every time the event is received!
  console.log('Received event:', event.source, event.type);
  console.log('Event data:', data);
});