# Legacy Chatters endpoint shutdown details and timeline - April 2023

**URL:** <https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161>\
**Category:** Announcements\
**Created:** [January 31, 2023, 7:44pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161 "2023-01-31T19:44:41Z")\
**Posts on this page:** 17\
**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:** [January 31, 2023, 7:44pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/1 "2023-01-31T19:44:41Z")

</div>

Today we are announcing the timeline to decommission the legacy Chatters endpoint that some developers may be using for their Twitch integrations to retrieve a list of users present in a channel’s stream chat. While this endpoint has never been documented or supported, we are communicating this change to limit disruption to third-party applications and the creators that rely on your innovation. As promised in the [September announcement for the official Chatters API endpoint](https://staging-discuss.dev.twitch.com/t/new-chatters-api-endpoint-now-available-in-open-beta/40962), here are the details of the shutdown plan.

## What’s changing and who will it impact?

If your application only relies on [Get Chatters](https://dev.twitch.tv/docs/api/reference/#get-chatters), then this announcement does not apply. The legacy and unsupported Chatters endpoint that begins with “[https://tmi.twitch.tv/”](https://tmi.twitch.tv/%E2%80%9D) is the resource that will be shut down. During the shutdown windows and after the final date below, developers can expect to receive a 404 error response.

## When are we making this change?

Given the number of developers who may be using this legacy endpoint, we wanted to ensure developers have time to update applications to the equivalent Twitch API endpoint and are alerted to the change if previous communications have gone unnoticed. As such, a phased shutdown will be implemented similar to other commonly used third-party services in the past. The shutdown windows to expect are as followed:

| Date | Window Length | Range (Click to view other timezones) |
| --- | --- | --- |
| ~~2023-03-22~~  
2023-03-23 | 3-hour | 2023-03-23T17:30:00Z→2023-03-22T20:30:00Z |
| 2023-03-28 | 5-hour | 2023-03-28T17:30:00Z→2023-03-28T22:30:00Z |
| 2023-03-30 | 24-hour | 2023-03-30T17:30:00Z→2023-03-31T17:30:00Z |
| 2023-04-03 | Permanent | 2023-04-03T17:30:00Z |

## Why are we making these changes?

Programmatically retrieving the list of users in a channel’s stream chat should be information and permission that the creator or their moderators control. The official “Get Chatters” endpoint provides this functionality while also meeting the expectations of these permissions with the introduction of the `moderator:read:chatters` authentication scope.

## What action needs to be taken?

If your application is using the Chatters endpoint that begins with “[https://tmi.twitch.tv](https://tmi.twitch.tv),” refer to the "Get Chatters "documentation linked above to learn more about the official endpoint and begin any necessary updates. Should you have any questions regarding those updates, please consider joining the [TwitchDev Discord server](https://link.twitch.tv/devchat) for assistance.

---

<div class="post-metadata">

**Author:** ![Marenthyu](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/marenthyu/32/530_2.png) [@Marenthyu](https://staging-discuss.dev.twitch.com/u/Marenthyu)\
**Post date:** [January 31, 2023, 8:05pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/2 "2023-01-31T20:05:17Z")

</div>

Thank you Endpoint who shall not be named!

You introduced many a person to calling APIs and working with Twitch, but you shall not be missed as your legacy lives on!

F

---

<div class="post-metadata">

**Author:** ![wolbee](https://avatars.discourse-cdn.com/v4/letter/w/f0a364/32.png) [@wolbee](https://staging-discuss.dev.twitch.com/u/wolbee)\
**Post date:** [January 31, 2023, 9:56pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/3 "2023-01-31T21:56:49Z")

</div>

Will you be incorporating the legacy endpoint response into the Helix API response (arrays of names based on role), or adding the user’s role to the current response?

---

<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:** [January 31, 2023, 10:15pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/4 "2023-01-31T22:15:00Z")

</div>

There aren’t plans to change the response for [Get Chatters](https://dev.twitch.tv/docs/api/reference/#get-chatters) at this time (i.e. the response will continue to be an array of user objects with id, login, and name). To understand which users in the chatters list are moderators or VIPs, requests should be made to [Get Moderators](https://dev.twitch.tv/docs/api/reference/#get-moderators) and [Get VIPs](https://dev.twitch.tv/docs/api/reference/#get-vips), and then search for matches between the lists.

---

<div class="post-metadata">

**Author:** ![DevMcGee](https://avatars.discourse-cdn.com/v4/letter/d/839c29/32.png) [@DevMcGee](https://staging-discuss.dev.twitch.com/u/DevMcGee)\
**Post date:** [February 1, 2023, 2:38am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/5 "2023-02-01T02:38:33Z")

</div>

> [@jbulava](#):
>
> Programmatically retrieving the list of users in a channel’s stream chat should be information and permission that the creator or their moderators control.

So when are you going to give creators and moderators that control on your website? What if they want unprivileged users to be able to see that information?

Not to mention that if someone wants to get roles, that’ll burn through the rate limit.

---

<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 1, 2023, 2:58am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/6 "2023-02-01T02:58:18Z")

</div>

> [@DevMcGee](#):
>
> So when are you going to give creators and moderators that control on your website?

The website at this time presents a list of people whom have been active in chat recently. The website doesn’t give the full list of viewers out. The first party/unprivileges user offering is very different to what the API provides

> [@DevMcGee](#):
>
> Not to mention that if someone wants to get roles, that’ll burn through the rate limit.

In theory, you only need to get Mods/VIPS for a channel _once_ (and/or periodically) then use EventSub to keep up to date with changes. You wouldn’t be geting roles each time you got the list of users in a given chat. So you wouldn’t burn through the rate limit as you suggest.

---

<div class="post-metadata">

**Author:** ![EchtkPvL](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/echtkpvl/32/22405_2.png) [@EchtkPvL](https://staging-discuss.dev.twitch.com/u/EchtkPvL)\
**Post date:** [February 4, 2023, 12:32am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/7 "2023-02-04T00:32:01Z")

</div>

> [@jbulava](#):
>
> Programmatically retrieving the list of users in a channel’s stream chat should be information and permission that the creator or their moderators control.

Why does this only affects the API? I could understand that change if it would also affect [twitch.tv](http://twitch.tv) and join/part-messages on IRC.

---

<div class="post-metadata">

**Author:** ![Dist](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://staging-discuss.dev.twitch.com/u/Dist)\
**Post date:** [February 4, 2023, 1:30am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/8 "2023-02-04T01:30:12Z")

</div>

Join/part messages are not sent on channels over 1,000 viewers, and there are also limitations to how they are sent, for example a join may not be sent until the user sends a message.

As for the chatter list on the Twitch site itself, the list states:

> **Some** active viewers and chatters in the community.

So the public means of getting info on chatters wont be accurate. Where as the [Get Chatters](https://dev.twitch.tv/docs/api/reference/#get-chatters) endpoint will be a more complete list of chatters and without the issues of using joins/parts.

To some degree it’s similar to how a channels subscribers is partially public in that sub badges when a user send chat messages indicates their subscriber status, but to get a full list of a broadcasters subscribers can only be obtained with their explicit consent to your app.

---

<div class="post-metadata">

**Author:** ![Sylvanus](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/sylvanus/32/8271_2.png) [@Sylvanus](https://staging-discuss.dev.twitch.com/u/Sylvanus)\
**Post date:** [March 19, 2023, 10:36am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/9 "2023-03-19T10:36:19Z")

</div>

Any chance to have more 1000 chatters per call in the future ?

I’m developing for a streamer who has thousands of viewers, minimum 8 to 10,000 every days, so that means that if I want to create a loyalty system, I have to repeatedly request this API.

Hoping she’s never unavailable and I never eat limit, that open route call was so damn good 🙂

---

<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:** [March 19, 2023, 11:15am UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/10 "2023-03-19T11:15:34Z")

</div>

> [@Sylvanus](#):
>
> I’m developing for a streamer who has thousands of viewers, minimum 8 to 10,000 every days, so that means that if I want to create a loyalty system, I have to repeatedly request this API.

I ported to this API without issue on the large channels that I operate a currency system on.

1000 per page is not a problem. Speed/efficency is as good as it was using the legacy endpoint. And I have no problems with rate limit.

Would I like bigger pages, for sure.  
Do I expect bigger pages, no.  
Am I happy with the performance of my loyalty system yes.

Theres more time spent on the databse calls than the fetching and the new system is similar in speed (and marginally quicker) than the old system.  
Especially now I get userID’s to start with so I don’t have to name to ID lookup/check first

---

<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:** [March 22, 2023, 7:12pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/11 "2023-03-22T19:12:47Z")

</div>

We discovered and rectified an issue that prevented the first phased shutdown window to operate as expected. As such, the first window has been rescheduled for the same times tomorrow and I will update the announcement above accordingly.

---

<div class="post-metadata">

**Author:** ![mad\_daniel1](https://d1d6mrmdu7ztse.cloudfront.net/user_avatar/staging-discuss.dev.twitch.com/mad_daniel1/32/23704_2.png) [@mad\_daniel1](https://staging-discuss.dev.twitch.com/u/mad_daniel1)\
**Post date:** [April 3, 2023, 6:54pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/12 "2023-04-03T18:54:48Z")

</div>

F - TMI 😔

---

<div class="post-metadata">

**Author:** ![andrewcz](https://avatars.discourse-cdn.com/v4/letter/a/90ced4/32.png) [@andrewcz](https://staging-discuss.dev.twitch.com/u/andrewcz)\
**Post date:** [April 10, 2023, 11:18pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/13 "2023-04-10T23:18:11Z")

</div>

Is this endpoint available to unauthenticated users? A.k.a nightbot?

e.g. [Show current mods in chat command - #11 by jotammz98 - Nightbot - NightDev Community Forums](https://community.nightdev.com/t/show-current-mods-in-chat-command/27720/11)

---

<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:** [April 10, 2023, 11:20pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/14 "2023-04-10T23:20:03Z")

</div>

> [@andrewcz](#):
>
> Is this endpoint available to unauthenticated users? A.k.a nightbot?

No

A token for a moderator or above is required.

I’m sure for urlfetch based things a work around is available/the problem is solvable.  
I have a solution but no interest or time or requests to build it persae and I don’t need it myself

---

<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:** [April 13, 2023, 2:50pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/15 "2023-04-13T14:50:01Z")

</div>

17 posts were split to a new topic: [Legacy Chatters endpoint and detecting bots](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-and-detecting-bots/45106)

---

<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:** [April 13, 2023, 2:55pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/16 "2023-04-13T14:55:54Z")

</div>

@5cottFive, I split the discussion regarding bot detection into a new topic (linked above) so it is focused and not lost in the comments of the announcement thread here.

If anyone has further discussions or questions regarding the legacy chatters endpoint, please feel free to create a new topic in the [API category](https://staging-discuss.dev.twitch.com/c/api/).

---

<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:** [April 13, 2023, 2:56pm UTC](https://staging-discuss.dev.twitch.com/t/legacy-chatters-endpoint-shutdown-details-and-timeline-april-2023/43161/17 "2023-04-13T14:56:05Z")

</div>


