{"id":52198,"date":"2026-04-03T11:06:50","date_gmt":"2026-04-03T11:06:50","guid":{"rendered":"https:\/\/barrycarlyon.co.uk\/wordpress\/?p=52198"},"modified":"2026-04-03T11:22:00","modified_gmt":"2026-04-03T11:22:00","slug":"twitch-app-access-tokens-yay-announcements","status":"publish","type":"post","link":"https:\/\/barrycarlyon.co.uk\/wordpress\/2026\/04\/03\/twitch-app-access-tokens-yay-announcements\/","title":{"rendered":"Twitch App Access Tokens &#8211; YAY ANNOUNCEMENTS!"},"content":{"rendered":"\n<p>You may have read the previous post about <a href=\"https:\/\/barrycarlyon.co.uk\/wordpress\/2026\/02\/28\/twitch-app-access-tokens-can-do-more\/\">Twitch App Access Tokens doing more<\/a>, and my sadness about <a href=\"https:\/\/dev.twitch.tv\/docs\/api\/reference\/#send-chat-announcement\">Send Chat Announcement<\/a> not being supported, well yesterday that was rolled out!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"262\" src=\"https:\/\/i0.wp.com\/barrycarlyon.co.uk\/wordpress\/wp-content\/uploads\/2026\/04\/image.png?resize=343%2C262&#038;ssl=1\" alt=\"A screenshot of an announcement in Twitch Chat with the wording &quot;BarryCarlyon: I made this using an App Access Token&quot;\" class=\"wp-image-52202\" style=\"aspect-ratio:1.3092568292973876;width:611px;height:auto\" srcset=\"https:\/\/i0.wp.com\/barrycarlyon.co.uk\/wordpress\/wp-content\/uploads\/2026\/04\/image.png?w=343&amp;ssl=1 343w, https:\/\/i0.wp.com\/barrycarlyon.co.uk\/wordpress\/wp-content\/uploads\/2026\/04\/image.png?resize=300%2C229&amp;ssl=1 300w\" sizes=\"auto, (max-width: 343px) 85vw, 343px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">But Wait, theres MORE<\/h2>\n\n\n\n<p>Yes, there is more to the MORE!<\/p>\n\n\n\n<p><a href=\"https:\/\/dev.twitch.tv\/docs\/api\/reference\/#send-chat-announcement\">Send Chat Announcement<\/a> includes the same control\/ability that <a href=\"https:\/\/dev.twitch.tv\/docs\/api\/reference\/#send-chat-message\">Send Chat Message<\/a> has, the ability to control <em>if<\/em> that Announcement goes to all Channels if the channel is in <a href=\"https:\/\/help.twitch.tv\/s\/article\/shared-chat\">shared chat<\/a> mode, with the default being true\/send only to home channel.<\/p>\n\n\n\n<p>So broadly this means you can run a Twitch chat bot off JUST the <a href=\"https:\/\/dev.twitch.tv\/docs\/authentication\/#app-access-tokens\">App Access token<\/a>, as most functions a chat bot will do day to day in the primary function thread can use the Token.<\/p>\n\n\n\n<p>Which has the added benefit of not having to juggle tokens, user refresh tokens, saving those, as to get a new App Access Token, it&#8217;s just load ClientID and Secret from <code>env<\/code> and go get a new token! And of course App Access Tokens has a longer life time of around 60 days or so, which means less refresh operations overall!<\/p>\n\n\n\n<p>To also note there are no additional permission\/scope changes here! You should be all good to go if already using conduits and were user token-ing to send announcements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So What Else?<\/h2>\n\n\n\n<p>The <a href=\"https:\/\/dev.twitch.tv\/docs\/change-log\/#2026-04-02\">Change Log<\/a> offered the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><a href=\"https:\/\/dev.twitch.tv\/docs\/eventsub\/eventsub-subscription-types\/#channelchatnotification\">channel.chat.notification<\/a><\/code> now emits <a href=\"https:\/\/help.twitch.tv\/s\/article\/recover-watch-streaks\">Watch Streak<\/a> events! No longer will a bot need to listen to IRC for this single event (oooooh wait <code>first-msg<\/code> maybe that soon&#8230;), also payloads for announcements updated in line with the Send Chat Announcement change, notably as it&#8217;s not a breaking change it&#8217;s added to V1,<\/li>\n\n\n\n<li><code><a href=\"https:\/\/dev.twitch.tv\/docs\/eventsub\/eventsub-subscription-types\/#channelbitsuse\">channel.bits.use<\/a><\/code> has been updated to support &#8220;<a href=\"https:\/\/help.twitch.tv\/s\/article\/power-ups\">Custom Power-ups<\/a>&#8221; whatever those are&#8230;<\/li>\n\n\n\n<li>AND FINALLY: Theres a <a href=\"https:\/\/dev.twitch.tv\/docs\/rss\/change-log.xml\">RSS Feed<\/a> for the change log now!<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Help?<\/h2>\n\n\n\n<p>If you need further help please join as over on the <a href=\"https:\/\/link.twitch.tv\/devchat\">Twitch Dev Discord<\/a> or <a href=\"https:\/\/discuss.dev.twitch.com\/\">Support Forums<\/a>! And for anything <a href=\"https:\/\/twitch.uservoice.com\/forums\/310213-developers\">Feature Request &#8211; Uservoice<\/a>!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You may have read the previous post about Twitch App Access Tokens doing more, and my sadness about Send Chat Announcement not being supported, well yesterday that was rolled out! But Wait, theres MORE Yes, there is more to the MORE! Send Chat Announcement includes the same control\/ability that Send Chat Message has, the ability &hellip; <a href=\"https:\/\/barrycarlyon.co.uk\/wordpress\/2026\/04\/03\/twitch-app-access-tokens-yay-announcements\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Twitch App Access Tokens &#8211; YAY ANNOUNCEMENTS!&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[396,88,45,312,27],"tags":[210,397,82,171,313,326],"class_list":["post-52198","post","type-post","status-publish","format-standard","hentry","category-api","category-code-geekery","category-geekery","category-twitch","category-work","tag-api","tag-authentication","tag-code","tag-oauth","tag-twitch","tag-work"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/52198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/comments?post=52198"}],"version-history":[{"count":1,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/52198\/revisions"}],"predecessor-version":[{"id":52206,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/52198\/revisions\/52206"}],"wp:attachment":[{"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/media?parent=52198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/categories?post=52198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/barrycarlyon.co.uk\/wordpress\/wp-json\/wp\/v2\/tags?post=52198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}