Twitch API (Helix) Guide 2026: Auth, Endpoints and Limits
A practical guide to the Twitch API (Helix) in 2026: registering an app, app access tokens, the main endpoints, rate-limit headers, pagination and what changed.
The Twitch API, known as Helix, lives at https://api.twitch.tv/helix and needs two headers on every call: Client-Id and Authorization: Bearer <token>. Register an app in the Twitch developer console (2FA required), get an app access token with the client credentials flow, and you can read users, streams, videos, clips, channels and schedules. Rate limits use a points bucket reported in Ratelimit-* headers, and pages use a cursor.
The Twitch API, called Helix, is a REST API at https://api.twitch.tv/helix. With one registered app and a token from the client credentials flow, you can read users, live streams, videos, clips, channel information and stream schedules. This guide covers setup, authentication, the endpoints you will use most, rate limits, pagination and the changes that break older code.
What is the Twitch Helix API?
Helix is the current Twitch API. It replaced v5, known as Kraken, whose endpoints stopped working on 28 February 2022. Twitch's documentation now mostly calls it the Twitch API, but the name survives in every URL. Every call needs two headers:
Client-Id: your app's client id.Authorization: Bearer <token>: an app or user access token.
How do you get Twitch API credentials?
- Turn on two-factor authentication on your Twitch account; the console requires it.
- Register an app at dev.twitch.tv/console: Applications, Register Your Application, then a name, an OAuth redirect URL (such as
http://localhost) and a category. - Copy the Client ID, and create a Client Secret if your flow needs one.
- Get a token. Twitch has two kinds:
| Token | How you get it | Use it for |
|---|---|---|
| App access token | Client credentials flow (id + secret) | Public data: users, streams, videos, clips, channels, schedules |
| User access token | Authorization code, implicit or device code flow | Anything that needs a user's permission, such as their followers |
For reading public data, the app token is enough:
TOKEN=$(curl -s -X POST "https://id.twitch.tv/oauth2/token" \
-d "client_id=$TWITCH_CLIENT_ID" \
-d "client_secret=$TWITCH_CLIENT_SECRET" \
-d "grant_type=client_credentials" | jq -r .access_token)
curl "https://api.twitch.tv/helix/users?login=twitchdev" \
-H "Client-Id: $TWITCH_CLIENT_ID" \
-H "Authorization: Bearer $TOKEN"If your app keeps user tokens, Twitch requires you to validate them at https://id.twitch.tv/oauth2/validate when it starts and every hour after that, and audits apps that do not.
Which Twitch API endpoints do you need?
These read endpoints accept an app or a user access token, per the API reference:
| Endpoint | Path | Per request |
|---|---|---|
| Get Users | GET /helix/users | Up to 100 id and 100 login values |
| Get Streams (who is live) | GET /helix/streams | first up to 100, default 20 |
| Get Videos (VODs) | GET /helix/videos | first up to 100, with user_id or game_id |
| Get Clips | GET /helix/clips | first up to 100, default 20 |
| Search Channels | GET /helix/search/channels | first up to 100, default 20 |
| Get Channel Information | GET /helix/channels | Up to 100 broadcaster_id values |
| Get Channel Stream Schedule | GET /helix/schedule | first up to 25 |
Most endpoints take numeric ids, not login names, so the usual first step is Get Users to turn twitchdev into a broadcaster_id. To check whether several channels are live, pass up to 100 user_login values to Get Streams in one call: a channel that is offline is simply missing from the result.
Followers are the exception. Get Channel Followers returns the full list only to a user token with the moderator:read:followers scope, from the broadcaster or one of their moderators. Any other token gets the total count.
How do Twitch API rate limits work?
Twitch uses a token bucket. Each endpoint costs points, 1 by default, and the bucket refills over a minute. App tokens and user tokens have separate buckets. Every response tells you where you stand:
Ratelimit-Limit: the bucket size, commonly 800 points a minute.Ratelimit-Remaining: points left.Ratelimit-Reset: when the bucket refills, as a Unix timestamp.
Read these headers instead of hard-coding a number. On HTTP 429, wait until Ratelimit-Reset and retry, but check the error message too: some 429s are not about the bucket.
How does Twitch API pagination work?
List endpoints return a pagination.cursor. Pass it as after to get the next page, and stop when the cursor is empty. The page size is first, whose maximum varies by endpoint: 100 for most, 25 for schedules.
const headers = {
'Client-Id': process.env.TWITCH_CLIENT_ID,
Authorization: `Bearer ${process.env.TWITCH_TOKEN}`,
};
let after;
const clips = [];
do {
const params = new URLSearchParams({ broadcaster_id: '141981764', first: '100', ...(after ? { after } : {}) });
const res = await fetch(`https://api.twitch.tv/helix/clips?${params}`, { headers });
const body = await res.json();
clips.push(...body.data);
after = body.pagination?.cursor;
} while (after && clips.length < 500);For change over time, such as a channel going live, polling spends rate-limit points on every check. EventSub pushes events to your webhook or WebSocket instead, and is the better fit for alerts.
What changed in the Twitch API recently?
From the Twitch changelog:
| Date | Change |
|---|---|
| 28 February 2022 | v5 (Kraken) endpoints no longer available |
| 6 September 2023 | Get Users Follows removed; use Get Channel Followers or Get Followed Channels |
| 15 April 2025 | PubSub deprecated in favour of EventSub |
| 5 February 2026 | Get Hype Train Events removed; use Get Hype Train Status |
| 29 May 2026 | App access tokens accepted on some endpoints that used to need a user token, where the user already authorised the scope |
What do Twitch's developer terms allow?
The API is free to use, but the Developer Services Agreement sets rules that shape what you build. You may not store Twitch data for longer than 24 hours unless Twitch authorises it in writing or you own the rights, you may not redistribute or sell it, and using it for marketing or research needs a separate agreement with Twitch. If you plan to build a database of channels over time, read the agreement first.
Twitch data next to other platforms
If Twitch is one of several sources, for example tracking creators who stream on Twitch and post on TikTok and YouTube, crawlfeed serves Twitch reads with the same key and response shapes as its other 26 platforms:
| Operation | Endpoint | Needs | Credits |
|---|---|---|---|
| Profile | /v1/twitch/profile | handle | 1 |
| Posts | /v1/twitch/posts | handle | 1 |
| Live | /v1/twitch/live | handle | 1 |
| Events | /v1/twitch/events | handle | 1 |
A channel lookup costs 1 credit, and the live call answers from a channel handle, with no numeric id lookup first:
curl -G https://api.crawlfeed.dev/v1/twitch/live \
-H "Authorization: Bearer $CRAWLFEED_KEY" \
--data-urlencode "handle=shroud"The result is a LiveStream, the same type crawlfeed returns for TikTok live. See the Twitch reference for every parameter. For anything that acts for a user, such as chat, moderation or followers lists, use Twitch's own API.
The short answer
Register an app at dev.twitch.tv/console with 2FA on, exchange the client id and secret for an app access token at id.twitch.tv/oauth2/token, and call https://api.twitch.tv/helix with Client-Id and Authorization: Bearer headers. Resolve logins to ids with Get Users, page with the after cursor, watch the Ratelimit-* headers, and use EventSub instead of polling for live alerts. The API is free, but Twitch's terms limit storing its data to 24 hours without permission.
Questions
What is the Twitch Helix API?
Helix is the name of the current Twitch API, at https://api.twitch.tv/helix. It replaced the older v5 (Kraken) API, whose endpoints stopped working on 28 February 2022. Twitch's docs now mostly call it simply the Twitch API.
How do I get a Twitch API key?
Sign in at dev.twitch.tv/console with two-factor authentication enabled, register an application with a name, OAuth redirect URL and category, and copy its Client ID and Client Secret. Then exchange them for an app access token at https://id.twitch.tv/oauth2/token with grant_type=client_credentials.
Is the Twitch API free?
Twitch publishes no prices or paid tiers for the API, and its Developer Services Agreement grants a royalty-free licence to use it. The limits are rate limits and the agreement's rules, such as not storing Twitch data for more than 24 hours without permission and needing a separate agreement for marketing or research use.
What are the Twitch API rate limits?
Twitch uses a token bucket: each endpoint costs points, usually 1, and the bucket refills every minute. Every response reports Ratelimit-Limit, Ratelimit-Remaining and Ratelimit-Reset; the limit is commonly 800, but read the header rather than hard-coding it. Over the limit you get HTTP 429.
How do I get a Twitch channel's followers with the API?
Call Get Channel Followers (GET /helix/channels/followers). The full list needs a user access token with the moderator:read:followers scope from the broadcaster or one of their moderators; any other token only returns the total count. The old Get Users Follows endpoint was removed in September 2023.
Try it on your own data
Every example above runs as written. New accounts get 100 free credits, no card needed.
Get an API key