# Follows endpoints and EventSub subscription type are now available in open beta

**URL:** <https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322>\
**Category:** Announcements\
**Created:** [February 4, 2023, 2:04am UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322 "2023-02-04T02:04:34Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![jbulava](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/jbulava/32/6777_2.png) [@jbulava](https://staging-discuss.dev.twitch.com/u/jbulava)\
**Post date:** [February 4, 2023, 2:04am UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/1 "2023-02-04T02:04:35Z")

</div>

> **Update (23023-08-03)**: The final shutdown timeline for the legacy follows endpoint and V1 EventSub subscription type has been extended. See [this post](https://staging-discuss.dev.twitch.com/t/legacy-follows-api-and-eventsub-shutdown-timeline-updated/46769) for updated details regarding the shutdown on September 12, 2023.

> **Update (2023-02-23)**: The deprecated “Get Users Follows” API endpoint and `channel.follow` (v1) EventSub subscription type now have limited access to minimize usage in new development leading up to the August 3 decommission date. The API endpoint is accessible to client IDs that have made requests on or before February 17, 2023. The v1 EventSub subscription type is accessible to client IDs that had an active subscription on February 17, 2023.

In our TwitchCon edition of Standard Output, [we mentioned](https://www.twitch.tv/videos/1604648673?t=00h36m40s) our roadmap for a new version of the EventSub `channel.follow` subscription type and new “follows” API endpoints that would require user or moderator authorization.

Today we’re launching these new versions in open beta:

- [Get Channel Followers](https://dev.twitch.tv/docs/api/reference/#get-channel-followers)
- [Get Followed Channels](https://dev.twitch.tv/docs/api/reference/#get-followed-channels)
- [EventSub channel.follow (beta version)](https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#channelfollow)

The open beta will continue for two weeks to gather developer feedback and make any further changes. Please take advantage of the [Developer section of UserVoice](https://twitch.uservoice.com/forums/310213-developers) to provide feedback. After the open beta period, the endpoints and the subscription type (as v2) will be promoted to Generally Available. We are also providing six-month timeline to withdrawal the following functionality that is being replacing:

- [Get Users Follows](https://dev.twitch.tv/docs/api/reference/#get-users-follows)
- [EventSub channel.follow (v1)](https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#channelfollow)

## Why make this change?

When we introduced the latest channel page design, it was updated to show the number of followers belonging to a channel while no longer identifying the individual users who follow. As such, authorization will be required to retrieve the list of a channel’s followers as well as who a user follows via third-party interfaces to match the availability of this information on the Twitch website and mobile applications.

We understand that breaking changes are disruptive to our third-party community. To minimize any disruption, we are providing developers a six-month timeline to update applications for the new subscription type and endpoints. **The deprecated “Get User Follows” and EventSub channel.follow (v1) will be removed on or soon after ~~August 3, 2023~~ (see update above).**

We’ve been planning this change for some time; eagle-eyed readers may have seen that when we moved “Get Followed Streams” from our legacy V5 API to the Twitch API in April 2021, we introduced a new `user:read:follows` scope. The new “Get Followed Channels” endpoint will also use this scope. The new “Get Channel Followers” endpoint uses the new `moderator:read:followers` scope. If the scope is not provided, the Get Channel Followers endpoint only returns the channel’s total follower count to match the visibility of this information on Twitch channel pages.

## How do I get started?

If your application calls “Get User Follows” or subscribes to EventSub channel.follow (v1), you should begin a plan to update your application to use the new endpoints and subscription type, and add the new `user:read:follows` and `moderator:read:followers` scopes for user authorization. To get started, review the documentation linked above for each endpoint and subscription type. If you have any questions, please share them in the [#api-help](https://discord.com/channels/504015559252377601/523675960797691915) channel on the TwitchDev Discord server, and any feedback during the open beta can be posted on the [Developer section of UserVoice](https://twitch.uservoice.com/forums/310213-developers).

As always, thank you for being part of our community. We send a special thanks to the developers who participated in the closed beta for these changes last summer and those who provided feedback when we announced these plans in the fall.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 4, 2023, 10:50am UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/2 "2023-02-04T10:50:42Z")

</div>

It would seem that the follows API’s havn’t been deployed correctly and they are 404-ing. (Didn’t check eventsub myself yet)

---

<div class="post-metadata">

**Author:** ![secretply](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/secretply/32/18617_2.png) [@secretply](https://staging-discuss.dev.twitch.com/u/secretply)\
**Post date:** [February 4, 2023, 2:40pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/4 "2023-02-04T14:40:51Z")

</div>

The link for EventSub channel.follow (beta version) is the same for EventSub channel.follow (v1) and doesn’t have a beta example. I am assuming there was supposed to be another section for the beta version payload.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 4, 2023, 3:06pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/5 "2023-02-04T15:06:27Z")

</div>

> [@secretply](#):
>
> I am assuming there was supposed to be another section for the beta version payload.

The payload is the same but it’s been version bumped to account for the change in authentication requirements.

---

<div class="post-metadata">

**Author:** ![secretply](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/secretply/32/18617_2.png) [@secretply](https://staging-discuss.dev.twitch.com/u/secretply)\
**Post date:** [February 4, 2023, 3:14pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/6 "2023-02-04T15:14:44Z")

</div>

**Edit:** Updated post to correctly reference issue with request body, not payload.

I tested the beta version of EventSub with the same request body in the documentation and having the `moderator:read:followers` scope but received the following error:

```auto
{
    "error": "Bad Request",
    "status": 400,
    "message": "unknown validation error: Key: 'SubscriptionCondition.moderator_user_id' Error:Field validation for 'moderator_user_id' failed on the 'required' tag"
}

```

This was the reason I thought there was supposed to be a beta/v2 version request body example as it seems the condition is now `moderator_user_id` instead of `broadcaster_user_id`.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 4, 2023, 3:22pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/7 "2023-02-04T15:22:57Z")

</div>

Ah yeah you need to declare the channel id and the moderator ID’s in the condition.  
But the payload is unchanged.

By _payload_ I thought you meant the _data sent to you_ as apposed to the parameters of the condition

---

<div class="post-metadata">

**Author:** ![RealityRipple](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/realityripple/32/17042_2.png) [@RealityRipple](https://staging-discuss.dev.twitch.com/u/RealityRipple)\
**Post date:** [February 4, 2023, 9:19pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/8 "2023-02-04T21:19:05Z")

</div>

Any chance of a “follower=1” tag being added to IRC’s `PRIVMSG` chat events in authorized channels with this new `moderator:read:followers` permission? It would be nice not to have to deal with sending requests and keeping caches to make this determination.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 4, 2023, 9:20pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/9 "2023-02-04T21:20:12Z")

</div>

I doubt it due to TMI not being able to easily change the data of a message. And it’s a lot of “extra data to send for most people that don’t need it”

Either way, create a uservoice

---

<div class="post-metadata">

**Author:** ![RealityRipple](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/realityripple/32/17042_2.png) [@RealityRipple](https://staging-discuss.dev.twitch.com/u/RealityRipple)\
**Post date:** [February 4, 2023, 9:37pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/10 "2023-02-04T21:37:24Z")

</div>

Added as a comment to the existing [IRC Request: Follow tag to filter out non follower messages](https://twitch.uservoice.com/forums/310213-developers/suggestions/44000865-irc-request-follow-tag-to-filter-out-non-follower), should anyone wish to vote for the idea.

---

<div class="post-metadata">

**Author:** ![francois-egner](https://avatars.discourse-cdn.com/v4/letter/f/35a633/32.png) [@francois-egner](https://staging-discuss.dev.twitch.com/u/francois-egner)\
**Post date:** [February 18, 2023, 6:49pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/11 "2023-02-18T18:49:22Z")

</div>

So in fact there will be no way to fetch the follower count without the permission of the broadcaster through the user access token?  
This is yet again something I just dont understand. The linked twitch VOD talks about matching the API with the website UI but in fact it does minimize the API even more. I can see the follower count when visiting the broadcasters channel but I cannot get the followers count via an API without the broadcasters permission.  
Its the same mismatch with the goals. I can see the goals visiting the broadcasters channel but I need an user access token to get this information when using the API.

Please make those infos publicly available via the API using an app access token if they can be seen on the website UI.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 18, 2023, 6:49pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/12 "2023-02-18T18:49:49Z")

</div>

> [@francois-egner](#):
>
> So in fact there will be no way to fetch the follower count without the permission of the broadcaster through the user access token?

If you do not have the scope, then _only_ the total is returned.

> If a scope is not provided, only the total follower count will be included in the response.

From the documentation

TwitchCLI example output: (my CLI is currently using an app access token, as the call to users shows)

![image](https://d2spem0quai2ol.cloudfront.net/original/3X/f/7/f77f57a2e285f4bb1d8637c74e32d7b3f0e5d9e4.png)

---

<div class="post-metadata">

**Author:** ![francois-egner](https://avatars.discourse-cdn.com/v4/letter/f/35a633/32.png) [@francois-egner](https://staging-discuss.dev.twitch.com/u/francois-egner)\
**Post date:** [February 18, 2023, 6:57pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/13 "2023-02-18T18:57:02Z")

</div>

Ah ok. “If a scope is not provided” is kind of misleading. I interpreted this a “I got a user access token that does not have the scope for this but nevertheless can get the count” but I did not understand this as “You can also use the app access token”.  
Maybe the fact that the app access token can be used too should be added to the description.

Thanks for your detailed answer @BarryCarlyon

---

<div class="post-metadata">

**Author:** ![ACPixel](https://avatars.discourse-cdn.com/v4/letter/a/f04885/32.png) [@ACPixel](https://staging-discuss.dev.twitch.com/u/ACPixel)\
**Post date:** [February 18, 2023, 10:54pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/14 "2023-02-18T22:54:35Z")

</div>

For the most part these changes seem great and are totally reasonable. But my one concern is the eventsub change and I have a couple questions regarding it. I understand that there will be a 6 month “roll over” period where the old v1 event will still work, after this 6 month period will those existing subscriptions stop working? My concern is that it needs a new scope for the new subscription, this is easy enough for “new” accounts to a third party application, but for existing accounts that means we would have to reach out to every single user and ask them to re-authenticate if they want live-follow based systems to continue working.

I guess ultimately my question is, when that 6 month period is over, is there a way to allow the v1 existing subscriptions to continue working, or some other migration path. I know that even if I were to reach out to every user of my application, a good chunk of them wouldn’t end up re-authenticating with the new scope, either from not seeing the messaging or forgetting, and I would end up with a bunch of support messages asking why follow based events no longer work. I’m sure that would likely happen for many of the bigger third party applications as well at a much larger scale.

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://staging-discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [February 18, 2023, 10:57pm UTC](https://staging-discuss.dev.twitch.com/t/follows-endpoints-and-eventsub-subscription-type-are-now-available-in-open-beta/43322/15 "2023-02-18T22:57:02Z")

</div>

> [@ACPixel](#):
>
> after this 6 month period will those existing subscriptions stop working?

Correct

> [@ACPixel](#):
>
> My concern is that it needs a new scope for the new subscription, this is easy enough for “new” accounts to a third party application, but for existing accounts that means we would have to reach out to every single user and ask them to re-authenticate if they want live-follow based systems to continue working.

Also correct

> [@ACPixel](#):
>
> I guess ultimately my question is, when that 6 month period is over, is there a way to allow the v1 existing subscriptions to continue working, or some other migration path

No, which is why there is a six month period so you can start reaching out to your users _now_

The migration path is: you have six months to get all your users moved over.

> [@ACPixel](#):
>
> I’m sure that would likely happen for many of the bigger third party applications as well at a much larger scale.

Yeah and it already has done/is doing so for the kraken to helix migration and the current deprecation of chat commands over IRC.

Twitch declares the change is happening, gives a timeline, then we start moving on getting the new auth’s for our users/clients.
