You need to cast the channelID as a string not a number
So
const sigChatPayload = {
"exp": Math.floor(new Date().getTime() / 1000) + 4,
"user_id": "123123",
"role": "external"
}
const sigChat = jwt.sign(sigChatPayload, ext_secret);
// We have now prepared the Signature and data
got({
url: "https://api.twitch.tv/helix/extensions/chat",
method: "POST",
headers: {
"Client-ID": config.client_id,
"Authorization": "Bearer " + sigChat
},
json: {
broadcaster_id: "321321",
text: "This is a Test Message Kappa",
extension_id: config.client_id,
extension_version: config.extension_version
},
responseType: 'json'
})
Also
This seems dangerous. It looks like you are intending to leak generated JWT’s which is potentially dangerous to do so.