Social — entry 036 of 39
Twitch
Twitch's Helix API covers streams, channels, clips, and chat/EventSub subscriptions for building bots, overlays, and stream-management tools, authenticated with either an app-access token or a viewer's OAuth user-access token from a registered Twitch Developer application. Most catalog-style reads work at the app-token level, while actions on a specific channel need that broadcaster's OAuth consent.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
Ads3
GET/channels/adsReturns ad schedule related information.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Returns the ad schedule information for the channel. | GetAdScheduleResponse |
400 | The broadcaster ID is not valid. | — |
500 | — |
POST/channels/ads/schedule/snoozePushes back the timestamp of the upcoming automatic mid-roll ad by 5 minutes.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | User’s next ad is successfully snoozed. Their _snooze\_count_ is decremented and _snooze\_refresh\_time_ and _next\_ad\_at_ are both updated. | SnoozeNextAdResponse |
400 | * The channel is not currently live. * The broadcaster ID is not valid. * Channel does not have an upcoming scheduled ad break. | — |
429 | Channel has no snoozes left. | — |
500 | — |
POST/channels/commercialStarts a commercial on the specified channel.
application/json — StartCommercialBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully started the commercial. | StartCommercialResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _length_ query parameter is required. * The ID in _broadcaster\_id_ is not valid. * To start a commercial, the broadcaster must be streaming live. * The broadcaster may not run another commercial until the cooldown period expires. The `retry_after` field in the previous start commercial response specifies the amount of time the broadcaster must wait between running commercials. | — |
401 | * The ID in `broadcaster_id` must match the user ID found in the request’s OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:edit:commercial** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
404 | * The ID in `broadcaster_id` was not found. | — |
429 | * The broadcaster may not run another commercial until the cooldown period expires. The `retry_after` field in the previous start commercial response specifies the amount of time the broadcaster must wait between running commercials. | — |
Analytics2
GET/analytics/extensionsGets an analytics report for one or more extensions.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | no | string |
type | query | no | string |
started_at | query | no | string |
ended_at | query | no | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster's analytics reports. | GetExtensionAnalyticsResponse |
400 | * The start and end dates are optional but if you specify one, you must specify the other. * The end date must be equal to or later than the start date. * The cursor specified in the _after_ query parameter is not valid. * The resource supports only forward pagination (use the _after_ query parameter). * The _first_ query parameter is outside the allowed range of values. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **analytics:read:extensions** scope. * The OAuth token is not valid. * The Client-Id header is required. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
404 | * The extension specified in the _extension\_id_ query parameter was not found. | — |
GET/analytics/gamesGets an analytics report for one or more games.
| Name | In | Required | Type |
|---|---|---|---|
game_id | query | no | string |
type | query | no | string |
started_at | query | no | string |
ended_at | query | no | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s analytics reports. | GetGameAnalyticsResponse |
400 | * The start and end dates are optional but if you specify one, you must specify the other. * The end date must be equal to or later than the start date. * The cursor specified in the _after_ query parameter is not valid. * The resource supports only forward pagination (use the _after_ query parameter). * The _first_ query parameter is outside the allowed range of values. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **analytics:read:games** scope. * The OAuth token is not valid. * The Client-Id header is required. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
404 | * The game specified in the _game\_id_ query parameter was not found. | — |
Bits3
GET/bits/cheermotesGets a list of Cheermotes that users can use to cheer Bits.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the Cheermotes. | GetCheermotesResponse |
401 | * The Authorization header is required and must specify an app access token or user access token. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/bits/leaderboardGets the Bits leaderboard for the authenticated broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
count | query | no | integer |
period | query | no | string |
started_at | query | no | string |
user_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s Bits leaderboard. | GetBitsLeaderboardResponse |
400 | * The time period specified in the _period_ query parameter is not valid. * The _started\_at_ query parameter is required if _period_ is not set to _all_. * The value in the _count_ query parameter is outside the range of allowed values. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token must include the the **bits:read** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
403 | — |
GET/extensions/transactionsGets an extension’s list of transactions.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | yes | string |
id | query | no | array |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of transactions. | GetExtensionTransactionsResponse |
400 | * The _extension\_id_ query parameter is required. * The request specified too many _id_ query parameters. * The pagination cursor is not valid. | — |
401 | * The Authorization header is required and must specify an app access token. * The access token is not valid. * The ID in the _extension\_id_ query parameter must match the client ID in the access token. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * One or more of the transaction IDs specified using the _id_ query parameter were not found. | — |
Channels5
GET/channelsGets information about one or more channels.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of channels. | GetChannelInformationResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The broadcaster ID is not valid. * The number of _broadcaster\_id_ query parameters exceeds the maximum allowed. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
429 | * The application exceeded the number of calls it may make per minute. For details, see [Rate Limits](https://dev.twitch.tv/docs/api/guide#twitch-rate-limits). | — |
500 | — |
PATCH/channelsUpdates a channel’s properties.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — ModifyChannelInformationBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated the channel’s properties. __Examples__ _Request:_ ```bash curl -X PATCH 'https://api.twitch.tv/helix/channels?broadcaster_id=41245072' \ -H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \ -H 'Client-Id: wbmytr93xzw8zbg0p1izqyzzc5mbiz' \ -H 'Content-Type: application/json' \ --data-raw '{"game_id":"33214", "title":"there are helicopters in the game? REASON TO PLAY FORTNITE found", "broadcaster_language":"en", "tags":["LevelingUp"]}' ``` Set CCLs for a Channel ```bash curl -X PATCH 'https://api.twitch.tv/helix/channels?broadcaster_id=41245072' \ -H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \ -H 'Client-Id: wbmytr93xzw8zbg0p1izqyzzc5mbiz' \ -H 'Content-Type: application/json' \ --data-raw '{ "game_id": "SomeGameID", "content_classification_labels": [ {"id": "Gambling", "is_enabled": true}, {"id": "DrugsIntoxication", "is_enabled": false} ], "is_branded_content": true }' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The request must update at least one property. * The `title` field may not contain an empty string. * The ID in `game_id` is not valid. * To update the `delay` field, the broadcaster must have partner status. * The list in the `tags` field exceeds the maximum number of tags allowed. * A tag in the `tags` field exceeds the maximum length allowed. * A tag in the `tags` field is empty. * A tag in the `tags` field contains special characters or spaces. * One or more tags in the `tags` field failed AutoMod review. * Game restricted for user's age and region | — |
401 | * User requests CCL for a channel they don’t own * The ID in _broadcaster\_id_ must match the user ID found in the OAuth token. * The Authorization header is required and must specify a user access token. * The OAuth token must include the **channel:manage:broadcast** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * User requested gaming CCLs to be added to their channel * Unallowed CCLs declared for underaged authorized user in a restricted country | — |
409 | User set the Branded Content flag too frequently | — |
500 | — |
GET/channels/editorsGets the broadcaster’s list editors.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster's list of editors. | GetChannelEditorsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID found in the OAuth token. * The Authorization header is required and must specify a user access token. * The OAuth token must include the **channel:read:editors** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/channels/followedGets a list of broadcasters that the specified user follows. You can also use this endpoint to see whether a user follows a specific broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
broadcaster_id | query | no | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster's list of followers. | GetFollowedChannelsResponse |
400 | Possible reasons: * The _user\_id_ query parameter is required. * The _broadcaster\_id_ query parameter is not valid. * The _user\_id_ query parameter is required. | — |
401 | Possible reasons: * The ID in the _user\_id_ query parameter must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token is missing the **user:read:follows** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
GET/channels/followersGets a list of users that follow the specified broadcaster. You can also use this endpoint to see whether a specific user follows the broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | no | string |
broadcaster_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s list of followers. | GetChannelFollowersResponse |
400 | Possible reasons: * The _broadcaster\_id_ query parameter is required. * The _broadcaster\_id_ query parameter is not valid. | — |
401 | Possible reasons: * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token or the user must be a moderator for the specified broadcaster. * The Authorization header is required and must contain a user access token. * The user access token is missing the **moderator:read:followers** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. * The _user\_id_ parameter was specified but either the user access token is missing the **moderator:read:followers** scope or the user is not the broadcaster or moderator for the specified channel | — |
Channel Points6
GET/channel_points/custom_rewardsGets a list of custom rewards that the specified broadcaster created.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | no | array |
only_manageable_rewards | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s list of custom rewards. | GetCustomRewardResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The request exceeds the maximum number of _id_ query parameters that you may specify. | — |
401 | * The Authorization header must specify a user access token. * The user access token must include the **channel:read:redemptions** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The broadcaster is not a partner or affiliate. | — |
404 | * All of the custom rewards specified using the _id_ query parameter were not found. | — |
500 | — |
POST/channel_points/custom_rewardsCreates a Custom Reward in the broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — CreateCustomRewardsBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the custom reward. | CreateCustomRewardsResponse |
400 | * The request exceeds the maximum number of rewards allowed per channel. * The _broadcaster\_id_ query parameter is required. * The `title` field is required. * The `title` must contain a minimum of 1 character and a maximum of 45 characters. * The `title` must be unique amongst all of the broadcaster's custom rewards. * The `cost` field is required. * The `cost` field must contain a minimum of 1 point. * The `prompt` field is limited to a maximum of 200 characters. * If `is_max_per_stream_enabled` is **true**, the minimum value for `max_per_stream` is 1. * If `is_max_per_user_per_stream_enabled` is **true**, the minimum value for `max_per_user_per_stream` is 1. * If `is_global_cooldown_enabled` is **true**, the minimum value for `global_cooldown_seconds` is 1. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token is missing the **channel:manage:redemptions** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The broadcaster is not a partner or affiliate. | — |
500 | — |
PATCH/channel_points/custom_rewardsUpdates a custom reward.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | yes | string |
application/json — UpdateCustomRewardBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the custom reward. | UpdateCustomRewardResponse |
400 | ul> * The _broadcaster\_id_ query parameter is required. * The _id_ query parameter is required. * The `title` must contain a minimum of 1 character and a maximum of 45 characters. * The `title` must be unique amongst all of the broadcaster's custom rewards. * The `cost` field must contain a minimum of 1 point. * The `prompt` field is limited to a maximum of 200 characters. * If `is_max_per_stream_enabled` is **true**, the minimum value for `max_per_stream` is 1. * If `is_max_per_user_per_stream_enabled` is **true**, the minimum value for `max_per_user_per_stream` is 1. * If `is_global_cooldown_enabled` is **true**, the minimum value for `global_cooldown_seconds` is 1 and the maximum is 604800. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token must include the **channel:manage:redemptions** scope. * The OAuth token is not valide. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The ID in the Client-Id header must match the client ID used to create the custom reward. * The broadcaster is not a partner or affiliate. | — |
404 | * The custom reward specified in the _id_ query parameter was not found. | — |
500 | — |
DELETE/channel_points/custom_rewardsDeletes a custom reward that the broadcaster created.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted the custom reward. __Examples__ _Request:_ Deletes the specified custom reward. ```bash curl -X DELETE 'https://api.twitch.tv/helix/channel_points/custom_rewards?broadcaster_id=274637212&id=b045196d-9ce7-4a27-a9b9-279ed341ab28' \ -H 'Client-Id: gx2pv4208cff0ig9ou7nk3riccffxt' \ -H 'Authorization: Bearer vjxv3i0l4zxru966wsnwji51tmpkj2' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The _id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token must include the **channel:manage:redemptions** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The ID in the Client-Id header must match the client ID used to create the custom reward. * The broadcaster is not a partner or affiliate. | — |
404 | * The custom reward specified in the _id_ query parameter was not found. | — |
500 | — |
GET/channel_points/custom_rewards/redemptionsGets a list of redemptions for a custom reward.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
reward_id | query | yes | string |
status | query | no | string |
id | query | no | array |
sort | query | no | string |
after | query | no | string |
first | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of redeemed custom rewards. | GetCustomRewardRedemptionResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _reward\_id_ query parameter is required. * The _status_ query parameter is required if you didn't specify the _id_ query parameter. * The value in the _status_ query parameter is not valid. * The value in the _sort_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token must include the **channel:read:redemptions** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The ID in the Client-Id header must match the client ID used to create the custom reward. * The broadcaster is not a partner or affiliate. | — |
404 | * All of the redemptions specified using the _id_ query parameter were not found. | — |
500 | — |
PATCH/channel_points/custom_rewards/redemptionsUpdates a redemption’s status.
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
broadcaster_id | query | yes | string |
reward_id | query | yes | string |
application/json — UpdateRedemptionStatusBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the redemption’s status. | UpdateRedemptionStatusResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _reward\_id_ query parameter is required. * The _id_ query parameter is required. * The value in the _status_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify a user access token. * The user access token must include the **channel:manage:redemptions** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The ID in the Client-Id header must match the client ID used to create the custom reward. * The broadcaster is not a partner or affiliate. | — |
404 | * The custom reward specified in the _reward\_id_ query parameter was not found. * The redemptions specified using the _id_ query parameter were not found or their statuses weren't marked as UNFULFILLED. | — |
500 | — |
Charity2
GET/charity/campaignsGets information about the broadcaster’s active charity campaign.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved information about the broadcaster’s active charity campaign. | GetCharityCampaignResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _broadcaster\_id_ query parameter is not valid. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:charity** scope. * The access token is not valid. * The client ID specified in the Client-Id header must match the client ID specified in the access token. | — |
403 | * The broadcaster is not a partner or affiliate. | — |
GET/charity/donationsGets the list of donations that users have made to the broadcaster’s active charity campaign.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of donations that users contributed to the broadcaster’s charity campaign. | GetCharityCampaignDonationsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _broadcaster\_id_ query parameter is not valid. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:charity** scope. * The access token is not valid. * The client ID specified in the Client-Id header must match the client ID specified in the access token. | — |
403 | * The broadcaster is not a partner or affiliate. | — |
Chat15
POST/chat/announcementsSends an announcement to the broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — SendChatAnnouncementBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully sent the announcement. __Examples__ _Request:_ Sends an announcement to the broadcaster’s chat room. ```bash curl -X POST 'https://api.twitch.tv/helix/chat/announcements?broadcaster_id=11111&moderator_id=44444' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' \ -H 'Content-Type: application/json' \ -d '{"message":"Hello chat!","color":"purple"}' ``` | — |
400 | * The `message` field in the request's body is required. * The `message` field may not contain an empty string. * The string in the `message` field failed review. * The specified color is not valid. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token is missing the **moderator:manage:announcements** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
429 | The sender has exceeded the number of announcements they may send to this **broadcaster\_id** within a given window. | — |
GET/chat/badgesGets the broadcaster’s list of custom chat badges.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s custom chat badges. | GetChannelChatBadgesResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/chat/badges/globalGets Twitch’s list of chat badges.
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of global chat badges. | GetGlobalChatBadgesResponse |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/chat/chattersGets the list of users that are connected to the broadcaster’s chat session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s list of chatters. | GetChattersResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _moderator\_id_ query parameter is required. * The ID in the _moderator\_id_ query parameter is not valid. | — |
401 | * The ID in the _moderator\_id_ query parameter must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:read:chatters** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in the _moderator\_id_ query parameter is not one of the broadcaster's moderators. | — |
GET/chat/colorGets the color used for the user’s name in chat.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the chat color used by the specified users. | GetUserChatColorResponse |
400 | * The ID in the _user\_id_ query parameter is not valid. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
PUT/chat/colorUpdates the color used for the user’s name in chat.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
color | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated the user's chat color. __Examples__ _Request:_ Uses a named color to change the color that the user uses for their name in chat. ```bash curl -X PUT 'https://api.twitch.tv/helix/chat/color?user_id=123&color=blue' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` Uses a color Hex code to change the color that the user uses for their name in chat. ```bash curl -X PUT 'https://api.twitch.tv/helix/chat/color?user_id=123&color=%239146FF' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The ID in the _user\_id_ query parameter is not valid. * The _color_ query parameter is required. * The named color in the _color_ query parameter is not valid. * To specify a Hex color code, the user must be a Turbo or Prime user. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:manage:chat\_color** scope. * The OAuth token is not valid. * The ID in the _user\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
GET/chat/emotesGets the broadcaster’s list of custom emotes.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved broadcaster's list of custom emotes. | GetChannelEmotesResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/chat/emotes/globalGets all global emotes.
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved Twitch's list of global emotes. | GetGlobalEmotesResponse |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/chat/emotes/setGets emotes for one or more specified emote sets.
| Name | In | Required | Type |
|---|---|---|---|
emote_set_id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the emotes for the specified emote sets. | GetEmoteSetsResponse |
400 | * The _emote\_set\_id_ query parameter is required. * The number of _emote\_set\_id_ query parameters exceeds the maximum allowed. | — |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/chat/emotes/userRetrieves emotes available to the user across all channels.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
after | query | no | string |
broadcaster_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the emotes. | GetUserEmotesResponse |
400 | * The _user\_id_ query parameter is required. * The ID in the _user\_id_ query parameter is not valid. | — |
401 | * The ID in _user\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:emotes** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
POST/chat/messagesSends a message to the broadcaster’s chat room.
application/json — SendChatMessageBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully sent the specified broadcaster a message. | SendChatMessageResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _sender\_id_ query parameter is required. * The ID in the _sender\_id_ query parameter is not valid. * The _text_ query parameter is required. * The ID in the _reply\_parent\_message\_id_ query parameter is not valid. * Cannot set \*for\_source\_only\* if User Access Token is used. | — |
401 | * The ID in the user\_id query parameter must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the user:write:chat scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | The sender is not permitted to send chat messages to the broadcaster’s chat room. | — |
422 | The message is too large. | — |
GET/chat/settingsGets the broadcaster’s chat settings.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s chat settings. | GetChatSettingsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
PATCH/chat/settingsUpdates the broadcaster’s chat settings.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — UpdateChatSettingsBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the broadcaster’s chat settings. | UpdateChatSettingsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * If _slow\_mode_ is **true**, the `slow_mode_wait_time` field must be set to a valid value. * If `follower_mode` is **true**, the `follower_mode_duration` field must be set to a valid value. * If `non_moderator_chat_delay` is **true**, the `non_moderator_chat_delay_duration` field must be set to a valid value. | — |
401 | * The ID in the _moderator\_id_ query parameter must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:chat\_settings** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
403 | * The user in the _moderator\_id_ query parameter must have moderator privileges in the broadcaster's channel. | — |
POST/chat/shoutoutsSends a Shoutout to the specified broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
from_broadcaster_id | query | yes | string |
to_broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully sent the specified broadcaster a Shoutout. __Examples__ _Request:_ ```bash curl -X POST 'https://api.twitch.tv/helix/chat/shoutouts?from_broadcaster_id=12345&to_broadcaster_id=626262&moderator_id=98765' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The _from\_broadcaster\_id_ query parameter is required. * The ID in the _from\_broadcaster\_id_ query parameter is not valid. * The _to\_broadcaster\_id_ query parameter is required. * The ID in the _to\_broadcaster\_id_ query parameter is not valid. * The broadcaster may not give themselves a Shoutout. * The broadcaster is not streaming live or does not have one or more viewers. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:shoutouts** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. * The broadcaster may not send the specified broadcaster a Shoutout. | — |
429 | * The broadcaster exceeded the number of Shoutouts they may send within a given window. See the endpoint's Rate Limits. * The broadcaster exceeded the number of Shoutouts they may send the same broadcaster within a given window. See the endpoint's Rate Limits. | — |
GET/shared_chat/sessionNEW Retrieves the active shared chat session for a channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the shared chat session. Returns an empty array if the broadcaster\_id in the request isn’t in a shared chat session. | GetSharedChatSessionResponse |
400 | The ID in the `broadcaster_id` query parameter is not valid. | — |
401 | * The OAuth token is not valid. * The Authorization header is required and must contain a user access token. | — |
500 | Internal Server Error. | — |
Clips4
GET/clipsGets one or more video clips.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | no | string |
game_id | query | no | string |
id | query | no | array |
started_at | query | no | string |
ended_at | query | no | string |
first | query | no | integer |
before | query | no | string |
after | query | no | string |
is_featured | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of video clips. | GetClipsResponse |
400 | * The _id_ or _game\_id_ or _broadcaster\_id_ query parameter is required. * The _id_, _game\_id_, and _broadcaster\_id_ query parameters are mutually exclusive; you may specify only one of them. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
404 | * The ID in _game\_id_ was not found. | — |
POST/clipsCreates a clip from the broadcaster’s stream.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
title | query | no | string |
duration | query | no | number |
| Status | Description | Schema |
|---|---|---|
202 | Successfully started the clip process. | CreateClipResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter was not found. * The category is not clippable. * The title did not pass AutoMod checks. | — |
401 | * The Authorization header is required and must specify user access token. * The user access token must include the **clips:edit** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The broadcaster has restricted the ability to capture clips to followers and/or subscribers only. * The specified broadcaster has not enabled clips on their channel. * The user is banned or timed out from the broadcaster’s channel. | — |
404 | * The broadcaster in the _broadcaster\_id_ query parameter must be broadcasting live. | — |
GET/clips/downloadsNEW Provides URLs to download the video file(s) for the specified clips.
| Name | In | Required | Type |
|---|---|---|---|
editor_id | query | yes | string |
broadcaster_id | query | yes | string |
clip_id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the clip download URL(s). | GetClipsDownloadResponse |
400 | The ID in the broadcaster\_id, editor\_id, or clip\_id query parameter is not valid. | — |
401 | * The OAuth token is not valid. * The Authorization header is required and must contain a user access token or app access token. * The access token must include the editor:manage:clips or channel:manage:clips scope * The access token is not valid * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | The user is not an editor for the specified broadcaster. | — |
500 | Internal Server Error. | — |
POST/videos/clipsNEW Creates a clip from the broadcaster’s VOD.
| Name | In | Required | Type |
|---|---|---|---|
editor_id | query | yes | string |
broadcaster_id | query | yes | string |
vod_id | query | yes | string |
vod_offset | query | yes | integer |
duration | query | no | number |
title | query | yes | string |
| Status | Description | Schema |
|---|---|---|
202 | Successfully started the clip process. | CreateClipFromVODResponse |
400 | * Validation errors: Invalid source type, missing required fields. * The broadcaster\_id query parameter is required. * The ID in the broadcaster\_id query parameter was not found. * The category is not clippable. * The title did not pass AutoMod checks. * Broadcaster is banned. | — |
401 | * The Authorization header is required and must specify user access token. * The user access token must include the **editor:manage:clips** or **channel:manage:clips** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The broadcaster has restricted the ability to capture clips to followers and/or subscribers only. * The specified broadcaster has not enabled clips on their channel. * The user defined by the _editor\_id_ is not authorized to create Clips. * The user is banned or timed out from the broadcaster's channel. | — |
404 | * The broadcaster in the _broadcaster\_id_ query parameter must be broadcasting live. * The VOD is not found.. * The _broadcaster\_id_ or the _editor\_id_ does not exist. | — |
Conduits6
GET/eventsub/conduitsGets the conduits for a client ID.
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved conduits. | GetConduitsResponse |
401 | Authorization header required with an app access token. | — |
POST/eventsub/conduitsCreates a new conduit.
application/json — CreateConduitsBody
| Status | Description | Schema |
|---|---|---|
200 | Conduit created. | CreateConduitsResponse |
400 | Invalid shard count. | — |
401 | Authorization header required with an app access token. | — |
429 | Conduit limit reached. | — |
PATCH/eventsub/conduitsUpdates a conduit’s shard count.
application/json — UpdateConduitsBody
| Status | Description | Schema |
|---|---|---|
200 | Conduit updated. | UpdateConduitsResponse |
400 | * Invalid shard count * The id query parameter is required. | — |
401 | Authorization header required with an app access token. | — |
404 | * Conduit not found. * Conduit’s owner must match the client ID in the access token. | — |
DELETE/eventsub/conduitsDeletes a specified conduit.
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted the conduit. __Examples__ _Request:_ ```bash curl -X DELETE 'https://api.twitch.tv/helix/eventsub/conduits?id=bfcfc993-26b1-b876-44d9-afe75a379dac' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | The id query parameter is required. | — |
401 | Authorization header required with an app access token. | — |
404 | * Conduit not found. * Conduit’s owner must match the client ID in the access token. | — |
GET/eventsub/conduits/shardsGets a lists of all shards for a conduit.
| Name | In | Required | Type |
|---|---|---|---|
conduit_id | query | yes | string |
status | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved shards. | GetConduitShardsResponse |
400 | The id query parameter is required. | — |
401 | Authorization header required with an app access token. | — |
404 | * Conduit not found. * Conduit’s owner must match the client ID in the access token. | — |
PATCH/eventsub/conduits/shardsUpdates shard(s) for a conduit.
application/json — UpdateConduitShardsBody
| Status | Description | Schema |
|---|---|---|
202 | Successfully retrieved shards. | UpdateConduitShardsResponse |
400 | The id query parameter is required. | — |
401 | Authorization header required with an app access token. | — |
404 | * Conduit not found. * Conduit’s owner must match the client ID in the access token. | — |
CCLs1
GET/content_classification_labelsGets information about Twitch content classification labels.
| Name | In | Required | Type |
|---|---|---|---|
locale | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of CCLs available. | GetContentClassificationLabelsResponse |
400 | — | |
401 | — | |
500 | — |
Entitlements2
GET/entitlements/dropsGets an organization’s list of entitlements that have been granted to a game, a user, or both.
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | array |
user_id | query | no | string |
game_id | query | no | string |
fulfillment_status | query | no | string |
after | query | no | string |
first | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the entitlements. | GetDropsEntitlementsResponse |
400 | * The value in the _fulfillment\_status_ query parameter is not valid. * The ID in the _user\_id_ query parameter must match the user ID in the user access token. * The client in the access token is not associated with a known organization. * The owner of the client in the access token is not a member of the organization. | — |
401 | * The ID in the Client-Id header must match the Client ID in the access token. * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. | — |
403 | * The organization associated with the client in the access token must own the game specified in the _game\_id_ query parameter. * The organization associated with the client in the access token must own the entitlements specified in the _id_ query parameter. | — |
500 | — |
PATCH/entitlements/dropsUpdates the Drop entitlement’s fulfillment status.
application/json — UpdateDropsEntitlementsBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully requested the updates. Check the response to determine which updates succeeded. | UpdateDropsEntitlementsResponse |
400 | * The value in the `fulfillment_status` field is not valid. * The client in the access token is not associated with a known organization. * The owner of the client in the access token is not a member of the organization. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the Client ID in the access token. | — |
500 | — |
Extensions12
GET/bits/extensionsGets the list of Bits products that belongs to the extension.
| Name | In | Required | Type |
|---|---|---|---|
should_include_all | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of products. | GetExtensionBitsProductsResponse |
400 | * The ID in the Client-Id header must belong to an extension. | — |
401 | * The Authorization header is required and must specify an app access token; you may not specify a user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
PUT/bits/extensionsAdds or updates a Bits product that the extension created.
application/json — UpdateExtensionBitsProductBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the product. | UpdateExtensionBitsProductResponse |
400 | * The `sku` field is required. * The value in the `sku` field is not valid. The SKU may contain only alphanumeric characters, dashes (-), underscores (\_), and periods (.). * The `cost` object's `amount` field is required. * The value in the `cost` object's `amount` field is not valid. * The `cost` object's `type` field is required. * The value in the `cost` object's `type` field is not valid. * The `display_name` field is required. * The ID in the Client-Id header must belong to the extension. | — |
401 | * The Authorization header is required and must specify an app access token; you may not specify a user access token. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
GET/extensionsGets information about an extension.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | yes | string |
extension_version | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of extensions. | GetExtensionsResponse |
400 | * The _extension\_id_ query parameter is required. | — |
401 | * The request must specify the Authorization header. * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The request must specify the Client-Id header. | — |
404 | * The extension in the _extension\_id_ query parameter was not found. | — |
POST/extensions/chatSends a message to the specified broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — SendExtensionChatMessageBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully sent the chat message. __Examples__ _Request:_ ```bash curl -X POST 'https://api.twitch.tv/helix/extensions/chat?broadcaster_id=237757755' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' \ -H 'Content-Type: application/json' \ -d '{ "text": "Hello", "extension_id": "uo6dggojyb8d6soh92zknwmi5ej1q2", "extension_version": "0.0.9" } ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The `extension_id` field in the request's body is required. * The `extension_version` field in the request's body is required. * The `text` field in the request's body is required. * The message is too long. | — |
401 | * The Authorization header is required and must specify a JWT token. * The ID in the _broadcaster\_id_ query parameter must match the `channel_id` claim in the JWT. * The JWT token is not valid. * The Client-Id header is required. | — |
GET/extensions/configurationsGets the specified configuration segment from the specified extension.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | no | string |
extension_id | query | yes | string |
segment | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the configurations. | GetExtensionConfigurationSegmentResponse |
400 | * The _extension\_id_ query parameter is required. * The value in the _segment_ query parameter is not valid. * The _broadcaster\_id_ query parameter is required if the _segment_ query parameter is set to broadcaster or developer. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
429 | * The app exceeded the number of requests that it may make per minute. See Rate Limits above. | — |
PUT/extensions/configurationsUpdates a configuration segment.
application/json — SetExtensionConfigurationSegmentBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated the configuration. __Examples__ _Request:_ ```bash curl -X PUT 'https://api.twitch.tv/helix/extensions/configurations' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' \ -H 'Content-Type: application/json' \ -d '{ "extension_id": "uo6dggojyb8d6soh92zknwmi5ej1q2", "segment": "global", "version": "0.0.1", "content": "hello config!" }' ``` | — |
400 | * The `broadcaster_id` field is required if `segment` is set to developer or broadcaster. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
GET/extensions/jwt/secretsGets an extension’s list of shared secrets.
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of secrets. | GetExtensionSecretsResponse |
400 | * The _extension\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
POST/extensions/jwt/secretsCreates a shared secret used to sign and verify JWT tokens.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | yes | string |
delay | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the new secret. | CreateExtensionSecretResponse |
400 | * The _extension\_id_ query parameter is required. * The delay specified in the _delay_ query parameter is too short. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
GET/extensions/liveGets a list of broadcasters that are streaming live and have installed or activated the extension.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of broadcasters. | GetExtensionLiveChannelsResponse |
400 | * The _extension\_id_ query parameter is required. * The pagination cursor is not valid. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * The extension specified in the _extension\_id_ query parameter was not found or it's not being used in a live stream. | — |
POST/extensions/pubsubSends a message to one or more viewers.
application/json — SendExtensionPubSubMessageBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully sent the message. __Examples__ _Request:_ ```bash curl -X POST 'https://api.twitch.tv/helix/extensions/pubsub' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' \ -H 'Content-Type: application/json' \ -d '{ "message": "hello world!", "broadcaster_id": "141981764", "target": ["broadcast"] }' ``` | — |
400 | * The `broadcaster_id` field in the request's body may only be set if the `is_global_broadcast` field is set to **false**. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
422 | * The message is too large. | — |
GET/extensions/releasedGets information about a released extension.
| Name | In | Required | Type |
|---|---|---|---|
extension_id | query | yes | string |
extension_version | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the extension. | GetReleasedExtensionsResponse |
400 | * The _extension\_id_ query parameter is required. | — |
401 | * The Authorization header must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * The extension specified in the _extension\_id_ query parameter was not found or is not released. | — |
PUT/extensions/required_configurationUpdates the extension’s required_configuration string.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — SetExtensionRequiredConfigurationBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated the extension’s required\_configuration string. __Examples__ _Request:_ ```bash curl -X PUT 'https://api.twitch.tv/helix/extensions/required_configuration?broadcaster_id=274637212' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' \ -H 'Content-Type: application/json' \ -d '{ "required_configuration": "RCS", "extension_id": "uo6dggojyb8d6soh92zknwmi5ej1q2", "extension_version": "0.0.1" }' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The `extension_id` field is required. * The `extension_version` field is required. * The `required_configuration` field is required. | — |
401 | * The Authorization header is required and must specify a JWT token. * The JWT token is not valid. * The Client-Id header is required. | — |
EventSub3
GET/eventsub/subscriptionsGets a list of EventSub subscriptions that the client in the access token created.
| Name | In | Required | Type |
|---|---|---|---|
status | query | no | string |
type | query | no | string |
user_id | query | no | string |
subscription_id | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the subscriptions. | GetEventSubSubscriptionsResponse |
400 | * The request may specify only one filter query parameter. For example, either _type_ or _status_ or _user\_id_. * The value in the _type_ query parameter is not valid. * The value in the _status_ query parameter is not valid. * The cursor specified in the _after_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify an app access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
POST/eventsub/subscriptionsCreates an EventSub subscription.
application/json — CreateEventSubSubscriptionBody
| Status | Description | Schema |
|---|---|---|
202 | Successfully accepted the subscription request. | CreateEventSubSubscriptionResponse |
400 | * The `condition` field is required. * The user specified in the `condition` object does not exist. * The `condition` object is missing one or more required fields. * The combination of values in the `version` and `type` fields is not valid. * The length of the string in the `secret` field is not valid. * The URL in the transport's `callback` field is not valid. The URL must use the HTTPS protocol and the 443 port number. * The value specified in the `method` field is not valid. * The `callback` field is required if you specify the webhook transport method. * The `session_id` field is required if you specify the WebSocket transport method. * The combination of subscription type and version is not valid. * The `conduit_id` field is required if you specify the Conduit transport method. | — |
401 | * The Authorization header is required and must specify an app access token if the transport method is webhook. * The Authorization header is required and must specify a user access token if the transport method is WebSocket. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
403 | The access token is missing the required scopes. | — |
409 | A subscription already exists for the specified event type and `condition` combination. | — |
429 | The request exceeds the number of subscriptions that you may create with the same combination of `type` and `condition` values. | — |
DELETE/eventsub/subscriptionsDeletes an EventSub subscription.
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted the subscription. __Examples__ _Request:_ Deletes the specified EventSub subscription. ```bash curl -X DELETE 'https://api.twitch.tv/helix/eventsub/subscriptions?id=26b1c993-bfcf-44d9-b876-379dacafe75a' \ -H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \ -H 'Client-Id: wbmytr93xzw8zbg0p1izqyzzc5mbiz' ``` ```bash # Twitch CLI example that deletes the specified subscription. twitch api delete /eventsub/subscriptions -q id=c839a466-034a-4d77-8d4d-c9a751516e7 ``` | — |
400 | * The _id_ query parameter is required. | — |
401 | * The Authorization header is required and must specify an app access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * The subscription was not found. | — |
Games2
GET/gamesGets information about specified games.
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | array |
name | query | no | array |
igdb_id | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the specified games. | GetGamesResponse |
400 | * The request must specify the _id_ or _name_ or _igdb\_id_ query parameter. * The combined number of game IDs (_id_ and _igdb\_id_) and game names that you specify in the request must not exceed 100. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
GET/games/topGets information about all broadcasts on Twitch.
| Name | In | Required | Type |
|---|---|---|---|
first | query | no | integer |
after | query | no | string |
before | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of broadcasts. | GetTopGamesResponse |
400 | * The value in the _first_ query parameter is not valid. * The cursor in the _after_ or _before_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
Goals1
GET/goalsGets the broadcaster’s list of active goals.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s goals. | GetCreatorGoalsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:goals** scope. * The ID in _broadcaster\_id_ must match the user ID in the user access token. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
Guest Star12
GET/guest_star/channel_settingsBETA Gets the channel settings for configuration of the Guest Star feature for a particular host.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | GetChannelGuestStarSettingsResponse | |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ | — |
403 | Insufficient authorization for viewing channel’s Guest Star settings | — |
PUT/guest_star/channel_settingsBETA Mutates the channel settings for configuration of the Guest Star feature for a particular host.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — UpdateChannelGuestStarSettingsBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated channel settings __Examples__ _Request:_ Update browser source layout settings ```bash curl -x PUT `https://api.twitch.tv/helix/guest_star/channel_settings?broadcaster_id=9321049&group_layout=TILED_LAYOUT` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` _Request:_ Disable moderator control of slot live setting ```bash curl -x PUT `https://api.twitch.tv/helix/guest_star/channel_settings?broadcaster_id=9321049&is_moderator_send_live_enabled=false` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` _Request:_ Update max slot count ```bash curl -x PUT `https://api.twitch.tv/helix/guest_star/channel_settings?broadcaster_id=9321049&slot_count=6` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` _Request:_ Regenerate browser sources ```bash curl -x PUT `https://api.twitch.tv/helix/guest_star/channel_settings?broadcaster_id=9321049®enerate_browser_sources=true` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Invalid _slot\_count_ * Invalid _group\_layout_ | — |
GET/guest_star/invitesBETA Provides the caller with a list of pending invites to a Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | GetGuestStarInvitesResponse | |
400 | * Missing _broadcaster\_id_ * Missing _session\_id_ | — |
POST/guest_star/invitesBETA Sends an invite to a specified guest on behalf of the broadcaster for a Guest Star session in progress.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
guest_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | __Examples__ _Request:_ Invite user to Guest Star session ```bash curl -x POST `https://api.twitch.tv/helix/guest_star/invites?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&guest_id=144601104` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ * Missing _session\_id_ * Missing _guest\_id_ * Invalid _session\_id_ | — |
403 | * Unauthorized guest invited * Guest already invited | — |
DELETE/guest_star/invitesBETA Revokes a previously sent invite for a Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
guest_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | __Examples__ _Request:_ Remove invite to session ```bash curl -x DELETE `https://api.twitch.tv/helix/guest_star/invites?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&guest_id=144601104` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing _session\_id_ * Missing _guest\_id_ * Invalid _session\_id_ | — |
404 | No invite exists for specified _guest\_id_ | — |
GET/guest_star/sessionBETA Gets information about an ongoing Guest Star session for a particular channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | GetGuestStarSessionResponse | |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ | — |
401 | _moderator\_id_ and user token do not match | — |
POST/guest_star/sessionBETA Programmatically creates a Guest Star session on behalf of the broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | CreateGuestStarSessionResponse | |
400 | * Missing _broadcaster\_id_ * Session limit reached (1 active call) | — |
401 | Phone verification missing | — |
403 | Insufficient authorization for creating session | — |
DELETE/guest_star/sessionBETA Programmatically ends a Guest Star session on behalf of the broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
session_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | EndGuestStarSessionResponse | |
400 | * Missing or invalid _broadcaster\_id_ * Missing or invalid _session\_id_ * Session has already been ended | — |
403 | Insufficient authorization for ending session | — |
POST/guest_star/slotBETA Allows a previously invited user to be assigned a slot within the active Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
guest_id | query | yes | string |
slot_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfuly assigned guest to slot __Examples__ _Request:_ Assign invited user to slot ```bash curl -x POST `https://api.twitch.tv/helix/guest_star/slot?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&guest_id=144601104&slot_id=1` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ * Missing _guest\_id_ * Missing or invalid _session\_id_ * Missing or invalid _slot\_id_ | — |
401 | _moderator\_id_ is not a guest star moderator | — |
403 | * Cannot assign host slot * Guest not invited to session * Guest already assigned to slot * Guest is not ready to join | — |
PATCH/guest_star/slotBETA Allows a user to update the assigned slot for a particular user within the active Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
source_slot_id | query | yes | string |
destination_slot_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfuly updated slot(s) __Examples__ _Request:_ Move slot assignment to a new slot ID ```bash curl -x PATCH `https://api.twitch.tv/helix/guest_star/slot?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&source_slot_id=1&destination_slot_id=2` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing or invalid _session\_id_ * Missing or invalid _slot\_id_ | — |
DELETE/guest_star/slotBETA Allows a caller to remove a slot assignment from a user participating in an active Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
guest_id | query | yes | string |
slot_id | query | yes | string |
should_reinvite_guest | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfuly removed user from slot __Examples__ _Request:_ Remove user from slot ```bash curl -x DELETE `https://api.twitch.tv/helix/guest_star/slot?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&guest_id=144601104&slot_id=1` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ * Missing or invalid _session\_id_ * Missing or invalid _slot\_id_ | — |
403 | * _moderator\_id_ is not a Guest Star moderator * The request is attempting to modify a restricted slot | — |
404 | _guest\_id_ or _slot\_id_ not found | — |
PATCH/guest_star/slot_settingsBETA Allows a user to update slot settings for a particular guest within a Guest Star session.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
session_id | query | yes | string |
slot_id | query | yes | string |
is_audio_enabled | query | no | boolean |
is_video_enabled | query | no | boolean |
is_live | query | no | boolean |
volume | query | no | integer |
| Status | Description | Schema |
|---|---|---|
204 | Successfuly updated slot settings __Examples__ _Request:_ Update slot settings to enable slot in broadcasting software ```bash curl -x PATCH `https://api.twitch.tv/helix/guest_star/slot_settings?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&slot_id=1&is_audio_enabled=false` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` _Request:_ Mute a slot’s audio for a guest ```bash curl -x PATCH `https://api.twitch.tv/helix/guest_star/slot_settings?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&slot_id=1&is_live=true` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` _Request:_ Allow slot audio to be unmuted by a guest. **NOTE**: This operation does not immediately unmute the guest. The guest will be notified they can unmute themselves when ready. ```bash curl -x PATCH `https://api.twitch.tv/helix/guest_star/slot_settings?broadcaster_id=9321049&moderator_id=9321049&session_id=2KFRQbFtpmfyD3IevNRnCzOPRJI&slot_id=1&is_audio_enabled=true` \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * Missing _broadcaster\_id_ * Missing _moderator\_id_ * Missing or invalid _session\_id_ * Missing or invalid _slot\_id_ | — |
403 | * _moderator\_id_ is not a Guest Star moderator * The request is attempting to modify a restricted slot | — |
Hype Train1
GET/hypetrain/statusNEW Gets the status of a Hype Train for the specified broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the status object. | GetHypeTrainStatusResponse |
400 | The ID in the `broadcaster_id` query parameter is not valid. | — |
401 | * The OAuth token is not valid. * The Authorization header is required and must contain a user access token. | — |
500 | Internal Server Error. | — |
Moderation25
GET/channels/vipsGets a list of the broadcaster’s VIPs.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | no | array |
broadcaster_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s list of VIPs. | GetVIPsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _user\_id_ query parameter is not valid. * The number of _user\_id_ query parameters exceeds the maximum allowed. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:vips** or **channel:manage:vips** scope. * The OAuth token is not valid. * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
POST/channels/vipsAdds the specified user as a VIP in the broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully added the VIP. __Examples__ _Request:_ Adds a VIP to the broadcaster’s chat room. ```bash curl -X POST 'https://api.twitch.tv/helix/channels/vips?broadcaster_id=123&user_id=456' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The user in the _user\_id_ query parameter is blocked from the broadcaster's channel. * The ID in the _broadcaster\_id_ query parameter is not valid. * The ID in the _user\_id_ query parameter is not valid. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:vips** scope. * The OAuth token is not valid. * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
403 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. | — |
404 | * The ID in _broadcaster\_id_ was not found. * The ID in _user\_id_ was not found. | — |
409 | The broadcaster doesn’t have available VIP slots. [Read More](https://help.twitch.tv/s/article/Managing-Roles-for-your-Channel?language=en%5FUS#types) | — |
422 | * The user in _user\_id_ is a moderator. To make them a VIP, you must first remove them as a moderator (see [Remove Channel Moderator](https://dev.twitch.tv/docs/api/reference#remove-channel-moderator)). * The user in the _user\_id_ query parameter is already a VIP. | — |
425 | The broadcaster must complete the Build a Community requirement before they may assign VIPs. | — |
429 | The broadcaster exceeded the number of VIP that they may add within a 10-second window. See Rate Limits for this endpoint above. | — |
DELETE/channels/vipsRemoves the specified user as a VIP in the broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the VIP status from the user. __Examples__ _Request:_ Removes the VIP user from the broadcaster’s channel. ```bash curl -X DELETE 'https://api.twitch.tv/helix/channels/vips?broadcaster_id=123&user_id=456' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The ID in _broadcaster\_id_ is not valid. * The ID in _user\_id_ is not valid. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:vips** scope. * The OAuth token is not valid. * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
403 | * The user in _broadcaster\_id_ doesn't have permission to remove the user's VIP status. | — |
404 | * The ID in _broadcaster\_id_ was not found. * The ID in _user\_id_ was not found. | — |
422 | * The user in _user\_id_ is not a VIP in the broadcaster's channel. | — |
429 | The broadcaster exceeded the number of VIPs that they may remove within a 10-second window. See Rate Limits for this endpoint above. | — |
POST/moderation/automod/messageAllow or deny the message that AutoMod flagged for review.
application/json — ManageHeldAutoModMessagesBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully approved or denied the message. __Examples__ _Request:_ ```bash curl -X POST 'https://api.twitch.tv/helix/moderation/automod/message' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' \ -H 'Content-Type: application/json' \ -d '{ "user_id": "9327994", "msg_id": "836013710", "action": "ALLOW" }' ``` | — |
400 | * The value in the `action` field is not valid. * The `user_id` field is required. * The `msg_id` field is required. * The `action` field is required. | — |
401 | * The ID in `user_id` must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:automod** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _user\_id_ is not one of the broadcaster's moderators. | — |
404 | * The message specified in the `msg_id` field was not found. | — |
GET/moderation/automod/settingsGets the broadcaster’s AutoMod settings.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s AutoMod settings. | GetAutoModSettingsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:read:automod\_settings** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
PUT/moderation/automod/settingsUpdates the broadcaster’s AutoMod settings.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — UpdateAutoModSettingsBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the broadcaster’s AutoMod settings. | UpdateAutoModSettingsResponse |
400 | * The _broadcaster\_id_ is required. * The _moderator\_id_ is required. * The `overall_level` setting or one or more individual settings like `aggression` is required; the overall and individual settings are mutually exclusive, so don't set both. * The value of one or more AutoMod settings is not valid. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:automod\_settings** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
GET/moderation/bannedGets all users that the broadcaster banned or put in a timeout.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | no | array |
first | query | no | integer |
after | query | no | string |
before | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of banned users. | GetBannedUsersResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderation:read** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
POST/moderation/bansBans a user from participating in a broadcaster’s chat room or puts them in a timeout.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — BanUserBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully banned the user or placed them in a timeout. | BanUserResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * The `user_id` field is required. * The text in the `reason` field is too long. * The value in the `duration` field is not valid. * The user specified in the `user_id` field may not be banned. * The user specified in the `user_id` field may not be put in a timeout. * The user specified in the `user_id` field is already banned. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:banned\_users** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
409 | * You may not update the user's ban state while someone else is updating the state. For example, someone else is currently banning the user or putting them in a timeout, moving the user from a timeout to a ban, or removing the user from a ban or timeout. Please retry your request. | — |
429 | * The app has exceeded the number of requests it may make per minute for this broadcaster. | — |
DELETE/moderation/bansRemoves the ban or timeout that was placed on the specified user.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the ban or timeout. __Examples__ _Request:_ Removes a ban or timeout from a user. ```bash curl -X DELETE 'https://api.twitch.tv/helix/moderation/bans?broadcaster_id=1234&moderator_id=5678&user_id=5432' \ -H 'Authorization: Bearer 4a4x78f5wqvkybms7mxfist3jmzul' \ -H 'Client-Id: t214nt8z1rdtbj69hyarjvh5mi6fh' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * The _user\_id_ query parameter is required. * The user specified in the _user\_id_ query parameter is not banned. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:banned\_users** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
409 | * You may not update the user's ban state while someone else is updating the state. For example, someone else is currently removing the ban or timeout, or they're moving the user from a timeout to a ban. Please retry your request. | — |
429 | * The app has exceeded the number of requests it may make per minute for this broadcaster. | — |
GET/moderation/blocked_termsGets the broadcaster’s list of non-private, blocked words or phrases.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of blocked terms. | GetBlockedTermsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header must contain a user access token. * The user access token must include the **moderator:read:blocked\_terms** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
POST/moderation/blocked_termsAdds a word or phrase to the broadcaster’s list of blocked terms.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — AddBlockedTermBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of blocked terms. | AddBlockedTermResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * The `text` field is required. * The length of the term in the `text` field is either too short or too long. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:blocked\_terms** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
DELETE/moderation/blocked_termsRemoves the word or phrase from the broadcaster’s list of blocked terms.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the blocked term. Also returned if the ID is not found. __Examples__ _Request:_ Deletes the specified blocked term. ```bash curl -X DELETE 'https://api.twitch.tv/helix/moderation/blocked_terms?broadcaster_id=1234&moderator_id=5678&id=c9fc79b8-0f63-4ef7-9d38-efd811e74ac2' \ -H 'Authorization: Bearer f4otqljtpbpg24v41v9gechs4yvwy' \ -H 'Client-Id: t214nt8z1rdtbj69hyarjvh5mi6fh' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * The _id_ query parameter is required. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:blocked\_terms** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
GET/moderation/channelsGets a list of channels that the specified user has moderator privileges in.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
after | query | no | string |
first | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of moderated channels. | GetModeratedChannelsResponse |
400 | — | |
401 | — | |
500 | — |
DELETE/moderation/chatRemoves a single chat message or all chat messages from the broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
message_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the specified messages. __Examples__ _Request:_ Removes all messages from the broadcaster’s chat room (doesn’t include the _message\_id_ query parameter). ```bash curl -X DELETE 'https://api.twitch.tv/helix/moderation/chat?broadcaster_id=11111&moderator_id=44444' \ -H 'Authorization: Bearer f4otqljtpbpg24v41v9gechs4yvwy' \ -H 'Client-Id: t214nt8z1rdtbj69hyarjvh5mi6fh' ``` Removes the specified message from the broadcaster’s chat room. ```bash curl -X DELETE 'https://api.twitch.tv/helix/moderation/chat?broadcaster_id=11111&moderator_id=44444&message_id=abc-123-def' \ -H 'Authorization: Bearer f4otqljtpbpg24v41v9gechs4yvwy' \ -H 'Client-Id: t214nt8z1rdtbj69hyarjvh5mi6fh' ``` | — |
400 | * You may not delete another moderator's messages. * You may not delete the broadcaster's messages. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token is missing the **moderator:manage:chat\_messages** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the OAuth token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
404 | * The ID in _message\_id_ was not found. * The specified message was created more than 6 hours ago. | — |
POST/moderation/enforcements/statusChecks whether AutoMod would flag the specified message for review.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — CheckAutoModStatusBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully checked the messages. | CheckAutoModStatusResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The `data` field is required and the list must contain one or more messages to check. * The `msg_id` field is required. * The `msg_text` field is required. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **moderation:read** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The ID in _broadcaster\_id_ must match the user ID in the user access token. | — |
429 | * The broadcaster exceeded the number of chat message checks that they may make. See the endpoint's rate limits. | — |
GET/moderation/moderatorsGets all users allowed to moderate the broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | no | array |
first | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of moderators. | GetModeratorsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID found in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderation:read** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
POST/moderation/moderatorsAdds a moderator to the broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully added the moderator. __Examples__ _Request:_ ```bash curl -X POST 'https://api.twitch.tv/helix/moderation/moderators?broadcaster_id=11111&user_id=44444' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The ID in _broadcaster\_id_ was not found. * The ID in _user\_id_ was not found. * The user in _user\_id_ is already a moderator in the broadcaster's chat room. * The user in _user\_id_ cannot become a moderator because they're banned from the channel. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:moderators** scope. * The access token is not valid. * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
422 | * The user in _user\_id_ is a VIP. To make them a moderator, you must first remove them as a VIP (see [Remove Channel VIP](https://dev.twitch.tv/docs/api/reference#remove-channel-vip)). | — |
429 | * The broadcaster has exceeded the number of requests allowed within a 10-second window. See this endpoint's rate limits. | — |
DELETE/moderation/moderatorsRemoves a moderator from the broadcaster’s chat room.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the moderator. __Examples__ _Request:_ ```bash curl -X DELETE 'https://api.twitch.tv/helix/moderation/moderators?broadcaster_id=11111&user_id=44444' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The ID in _broadcaster\_id_ was not found. * The ID in _user\_id_ was not found. * The user in _user\_id_ is not a moderator in the broadcaster's chat room. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:moderators** scope. * The access token is not valid. * The ID in the _broadcaster\_id_ query parameter must match the user ID in the access token. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
429 | * The broadcaster has exceeded the number of requests allowed within a 10-second window. See this endpoint's rate limits. | — |
GET/moderation/shield_modeGets the broadcaster’s Shield Mode activation status.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s Shield Mode activation status. | GetShieldModeStatusResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:read:shield\_mode** or **moderator:manage:shield\_mode** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
PUT/moderation/shield_modeActivates or deactivates the broadcaster’s Shield Mode.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — UpdateShieldModeStatusBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the broadcaster’s Shield Mode status. | UpdateShieldModeStatusResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The `is_active` field is required. * The value in the `is_active` field is not valid. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:shield\_mode** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in _moderator\_id_ is not one of the broadcaster's moderators. | — |
POST/moderation/suspicious_usersNEW Adds a suspicious user status to a chatter on the broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — AddSuspiciousStatusToChatUserBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully applied a suspicious user status. | AddSuspiciousStatusToChatUserResponse |
400 | * Validation errors: Missing required fields. * The ID in the broadcaster\_id query parameter was not found. * The status specified was invalid. Must either be ACTIVE\_MONITORING or RESTRICTED * The status update is not allowed for this user. | — |
401 | * The Authorization header is required and must specify user access token. * The user access token must include the **moderator:manage:suspicious\_users** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The user in the moderator\_id query parameter is not one of the broadcaster's moderators. | — |
DELETE/moderation/suspicious_usersNEW Remove a suspicious user status from a chatter on broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully removed a suspicious user status. | RemoveSuspiciousStatusFromChatUserResponse |
400 | * Validation errors: Missing required fields. * The ID in the broadcaster\_id query parameter was not found. * The status update is not allowed for this user. | — |
401 | * The Authorization header is required and must specify user access token. * The user access token must include the **moderator:manage:suspicious\_users** scope. * The OAuth token is not valid. * The ID in the Client-Id header must match the Client ID in the OAuth token. | — |
403 | * The user in the moderator\_id query parameter is not one of the broadcaster's moderators. | — |
GET/moderation/unban_requestsGets a list of unban requests for a broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
status | query | yes | string |
user_id | query | no | string |
after | query | no | string |
first | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of unban requests. | GetUnbanRequestsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _moderator\_id_ query parameter is required. * The ID in the _moderator\_id_ query parameter is not valid. * The pagination cursor is not valid. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:read:unban\_requests** or **moderator:manage:unban\_requests** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
PATCH/moderation/unban_requestsResolves an unban request by approving or denying it.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
unban_request_id | query | yes | string |
status | query | yes | string |
resolution_text | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully resolved the unban request. | ResolveUnbanRequestsResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _moderator\_id_ query parameter is required. * The ID in the _moderator\_id_ query parameter is not valid. * The pagination cursor is not valid. * The broadcaster is not receiving unban requests * Invalid requested update | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:unban\_requests** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | The unban request ID was not found. | — |
POST/moderation/warningsWarns a user in the specified broadcaster’s chat room, preventing them from chat interaction until the warning is acknowledged.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
moderator_id | query | yes | string |
application/json — WarnChatUserBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully warn a user. | WarnChatUserResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _moderator\_id_ query parameter is required. * The _user\_id_ query parameter is required. * The _reason_ query parameter is required. * The text in the _reason_ field is too long. * The user specified in the _user\_id_ may not be warned. | — |
401 | * The ID in _moderator\_id_ must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **moderator:manage:warnings** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | The user in _moderator\_id_ is not one of the broadcaster’s moderators. | — |
409 | You may not update the user’s warning state while someone else is updating the state. For example, someone else is currently warning the user or the user is acknowledging an existing warning. Please retry your request. | — |
429 | The app has exceeded the number of requests it may make per minute for this broadcaster. | — |
500 | Internal Server Error. | — |
Polls3
GET/pollsGets a list of polls that the broadcaster created.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | no | array |
first | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster's polls. | GetPollsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token is missing the **channel:read:polls** scope. * The access token is not valid. * The client ID specified in the Client-Id header must match the client ID specified in the access token. | — |
404 | * None of the IDs in the _id_ query parameters were found. | — |
POST/pollsCreates a poll that viewers in the broadcaster’s channel can vote on.
application/json — CreatePollBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the poll. | CreatePollResponse |
400 | * The `broadcaster_id` field is required. * The `title` field is required. * The `choices` field is required. * The `duration` field is required. * The value in `duration` is outside the allowed range of values. * The value in `channel_points_per_vote` is outside the allowed range of values. * The value in `bits_per_vote` is outside the allowed range of values. * The poll's `title` is too long. * The choice's `title` is too long. * The choice's `title` failed AutoMod checks. * The number of choices in the poll may not be less than 2 or greater that 5. * The broadcaster already has a poll that's running; you may not create another poll until the current poll completes. | — |
401 | * The ID in `broadcaster_id` must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token is missing the **channel:manage:polls** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
PATCH/pollsEnd an active poll.
application/json — EndPollBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully ended the poll. | EndPollResponse |
400 | * The `broadcaster_id` field is required. * The `id` field is required. * The `status` field is required. * The value in the `status` field is not valid. * The poll must be active to terminate or archive it. | — |
401 | * The ID in `broadcaster_id` must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:polls** scope. * The access token is not valid. * The client ID specified in the Client-Id header must match the client ID specified in the access token. | — |
Predictions3
GET/predictionsGets a list of Channel Points Predictions that the broadcaster created.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | no | array |
first | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of predictions. | GetPredictionsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:predictions** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
POST/predictionsCreate a Channel Points Prediction.
application/json — CreatePredictionBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the Channel Points Prediction. | CreatePredictionResponse |
400 | * The `broadcaster_id` field is required. * The `title` field is required. * The `outcomes` field is required. * The `prediction_window` field is required. * The value in `prediction_window` is outside the allowed range of values. * The prediction's `title` is too long. * The outcome's `title` is too long. * The outcome's `title` failed AutoMod checks. * There must be 2 outcomes in the prediction. * The broadcaster already has a prediction that's running; you may not create another prediction until the current prediction is resolved or canceled. | — |
401 | * The ID in `broadcaster_id` must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:predictions** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
429 | — |
PATCH/predictionsLocks, resolves, or cancels a Channel Points Prediction.
application/json — EndPredictionBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully ended the prediction. | EndPredictionResponse |
400 | * The `broadcaster_id` field is required. * The `id` field is required. * The `status` field is required. * The `winning_outcome_id` field is required if `status` is RESOLVED. * The value in the `status` field is not valid. * To update the prediction's status to RESOLVED or CANCELED, its current status must be ACTIVE or LOCKED. * To update the prediction's status to LOCKED, its current status must be ACTIVE. | — |
401 | * The ID in `broadcaster_id` must match the user ID in the OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:predictions** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The prediction in the `id` field was not found. * The outcome in the `winning_outcome_id` field was not found. | — |
Raids2
POST/raidsRaid another channel by sending the broadcaster’s viewers to the targeted channel.
| Name | In | Required | Type |
|---|---|---|---|
from_broadcaster_id | query | no | string |
to_broadcaster_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully requested to start a raid. To determine whether the raid successfully occurred (that is, the broadcaster clicked **Raid Now** or the countdown expired), you must subscribe to the [Channel Raid](https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types#channelraid) event. | StartARaidResponse |
400 | * The raiding broadcaster is blocked from the targeted channel. * The targeted channel doesn't accept raids from this broadcaster. * There are too many viewers in the raiding party. * The IDs in _from\_broadcaster\_id_ and _to\_broadcaster\_id_ cannot be the same ID. * The ID in the _from\_broadcaster\_id_ query parameter is not valid. * The ID in the _to\_broadcaster\_id_ query parameter is not valid. | — |
401 | * The ID in _from\_broadcaster\_id_ must match the user ID found in the request’s OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:raids** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The targeted channel was not found. | — |
409 | * The broadcaster is already in the process of raiding another channel. | — |
429 | * The broadcaster exceeded the number of raid requests that they may make. The limit is 10 requests within a 10-minute window. | — |
DELETE/raidsCancel a pending raid.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | The pending raid was successfully canceled. __Examples__ _Request:_ ```bash curl -X DELETE 'https://api.twitch.tv/helix/raids?broadcaster_id=12345678' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' ``` | — |
400 | * The ID in the _broadcaster\_id_ query parameter is not valid. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID found in the request’s OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:raids** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The broadcaster doesn't have a pending raid to cancel. | — |
429 | * The broadcaster exceeded the number of raid requests that they may make. The limit is 10 requests within a 10-minute window. | — |
Schedule6
GET/scheduleGets the broadcaster’s streaming schedule.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | no | array |
start_time | query | no | string |
utc_offset | query | no | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s streaming schedule. | GetChannelStreamScheduleResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The ID in the _id_ query parameter is not valid. * The format of the date and time in the _start\_time_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify a valid app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the Client ID in the access token. | — |
403 | * Only partners and affiliates may add non-recurring broadcast segments. | — |
404 | * The broadcaster has not created a streaming schedule. | — |
GET/schedule/icalendarGets the broadcaster’s streaming schedule as an iCalendar.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s schedule as an iCalendar. | — |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. | — |
POST/schedule/segmentAdds a single or recurring broadcast to the broadcaster’s streaming schedule.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
application/json — CreateChannelStreamScheduleSegmentBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully added the broadcast segment. | CreateChannelStreamScheduleSegmentResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The format of the date and time in the `start_time` field is not valid. * The value in the `timezone` field is not valid. * The value in the `duration` field is not valid. * The ID in the `category_id` field is not valid. * The string in the `title` field is too long. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:schedule** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
403 | * Only partners and affiliates may add non-recurring broadcast segments. | — |
PATCH/schedule/segmentUpdates a scheduled broadcast segment.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | yes | string |
application/json — UpdateChannelStreamScheduleSegmentBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the broadcast segment. | UpdateChannelStreamScheduleSegmentResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _id_ query parameter is required. * The ID in the _id_ query parameter is not valid. * The format of the date and time in the `start_time` field is not valid. * The value in the `timezone` field is not valid. * The value in the `duration` field is not valid. * The ID in the `category_id` field is not valid. * The string in the `title` field is too long. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:schedule** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * The specified broadcast segment was not found. | — |
DELETE/schedule/segmentDeletes a broadcast from the broadcaster’s streaming schedule.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the broadcast segment. __Examples__ _Request:_ Removes the segment from the broadcaster’s streaming schedule. ```bash curl -X DELETE 'https://api.twitch.tv/helix/schedule/segment?broadcaster_id=141981764&id=eyJzZWdtZW50SUQiOiI4Y2EwN2E2NC0xYTZkLTRjYWItYWE5Ni0xNjIyYzNjYWUzZDkiLCJpc29ZZWFyIjoyMDIxLCJpc29XZWVrIjoyMX0=' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The _id_ query parameter is required. * The ID in the _id_ query parameter is not valid. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:schedule** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the OAuth token. | — |
PATCH/schedule/settingsUpdates the broadcaster’s schedule settings, such as scheduling a vacation.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
is_vacation_enabled | query | no | boolean |
vacation_start_time | query | no | string |
vacation_end_time | query | no | string |
timezone | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated the broadcaster’s schedule settings. __Examples__ _Request:_ Schedules the broadcaster’s vacation. ```bash curl -X PATCH 'https://api.twitch.tv/helix/schedule/settings?broadcaster_id=141981764&is_vacation_enabled=true&vacation_start_time=2021-05-16T00:00:00Z&vacation_end_time=2021-05-23T00:00:00Z&timezone=America/New_York' \ -H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \ -H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2' ``` | — |
400 | * The _broadcaster\_id_ query parameter is required. * The ID in the _broadcaster\_id_ query parameter is not valid. * The format of the string in _vacation\_start\_time_ is not valid. * The format of the string in _vacation\_end\_time_ is not valid. * The date in _vacation\_end\_time_ must be later than the date in _vacation\_start\_time_. | — |
401 | * The ID in the _broadcaster\_id_ query parameter must match the user ID in the user access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:schedule** scope. * The access token is not valid. * The ID in the Client-Id header must match the client ID in the access token. | — |
404 | * The broadcaster's schedule was not found. | — |
Search2
GET/search/categoriesGets the games or categories that match the specified query.
| Name | In | Required | Type |
|---|---|---|---|
query | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of category names that matched the specified query string. | SearchCategoriesResponse |
400 | * The _query_ query parameter is required. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
GET/search/channelsGets the channels that match the specified query and have streamed content within the past 6 months.
| Name | In | Required | Type |
|---|---|---|---|
query | query | yes | string |
live_only | query | no | boolean |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of category names that matched the specified query string. | SearchChannelsResponse |
400 | * The _query_ query parameter is required. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
Streams5
GET/streamsGets a list of all streams.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | no | array |
user_login | query | no | array |
game_id | query | no | array |
type | query | no | string |
language | query | no | array |
first | query | no | integer |
before | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of streams. | GetStreamsResponse |
400 | * The value in the _type_ query parameter is not valid. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the Client ID in the access token. | — |
GET/streams/followedGets the list of broadcasters that the user follows and that are streaming live.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of broadcasters that the user follows and that are streaming live. | GetFollowedStreamsResponse |
400 | * The _user\_id_ query parameter is required. | — |
401 | * The ID in _user\_id_ must match the user ID found in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:follows** scope. * The OAuth token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
GET/streams/keyGets the channel’s stream key.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the stream’s key. | GetStreamKeyResponse |
400 | * The _broadcaster\_id_ field is required. * The ID in the _broadcaster\_id_ field is not valid. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID in the access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:stream\_key** scope. * The access token is not valid. * The client ID specified in the Client-Id header must match the client ID specified in the access token. | — |
403 | The user must complete additional steps in order to stream. Present the user with the returned error message. | — |
GET/streams/markersGets a list of markers from the user’s most recent stream or from the specified VOD/video.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | no | string |
video_id | query | no | string |
first | query | no | string |
before | query | no | string |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of markers. | GetStreamMarkersResponse |
400 | * The request must specify either the _user\_id_ or _video\_id_ query parameter, but not both. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:broadcast** or **user:manage:broadcast** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in the access token is not authorized to get the video's markers. The user in the access token must own the video or be one of the broadcaster's editors. | — |
404 | * The user specified in the _user\_id_ query parameter doesn't have videos. | — |
POST/streams/markersAdds a marker to a live stream.
application/json — CreateStreamMarkerBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully created the marker. | CreateStreamMarkerResponse |
400 | * The `user_id` field is required. * The length of the string in the `description` field is too long. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:manage:broadcast** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * The user in the access token is not authorized to create video markers for the user in the `user_id` field. The user in the access token must own the video or they must be one of the broadcaster's editors. | — |
404 | * The user in the `user_id` field is not streaming live. * The ID in the user\_id field is not valid. * The user hasn't enabled video on demand (VOD). | — |
Subscriptions2
GET/subscriptionsGets a list of users that subscribe to the specified broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | no | array |
first | query | no | string |
after | query | no | string |
before | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster’s list of subscribers. | GetBroadcasterSubscriptionsResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID found in the request’s OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:read:subscriptions** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
GET/subscriptions/userChecks whether the user subscribes to the broadcaster’s channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | The user subscribes to the broadcaster. | CheckUserSubscriptionResponse |
400 | * The _broadcaster\_id_ query parameter is required. * The _user\_id_ query parameter is required. | — |
401 | * The ID in _user\_id_ must match the user ID found in the request’s OAuth token. * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:subscriptions** scope. * The access token is not valid. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The user in _user\_id_ does not subscribe to the broadcaster in _broadcaster\_id_. | — |
Tags2
GET/streams/tagsGets the list of stream tags that the broadcaster or Twitch added to their channel.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of tags. | GetStreamTagsResponse |
400 | * The _broadcaster\_id_ field is required. * The ID in the _broadcaster\_id_ field is not valid. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the Client ID in the access token. | — |
GET/tags/streamsGets the list of all stream tags that Twitch defines. You can also filter the list by one or more tag IDs.
| Name | In | Required | Type |
|---|---|---|---|
tag_id | query | no | array |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of tags. | GetAllStreamTagsResponse |
400 | * The _tag\_id_ query parameter is empty (for example, `&tag_id=`). * The list of tag IDs is too long. | — |
401 | * The Authorization header is required and must specify an app access token or user access token. * The access token is not valid. * The ID in the Client-Id header must match the Client ID in the access token. | — |
Teams2
GET/teamsGets information about the specified Twitch team.
| Name | In | Required | Type |
|---|---|---|---|
name | query | no | string |
id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the team's information. | GetTeamsResponse |
400 | * The _name_ or _id_ query parameter is required. * Specify either the _name_ or _id_ query parameter but not both. * The ID in the _id_ query parameter is not valid. | — |
401 | * The Authorization header must contain an app access token or user access token. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The specified team was not found. | — |
GET/teams/channelGets the list of Twitch teams that the broadcaster is a member of.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of teams. | GetChannelTeamsResponse |
400 | * The _broadcaster\_id_ query parameter is missing or invalid. | — |
401 | * The Authorization header must contain an app access token or user access token. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The broadcaster was not found. | — |
Users9
GET/authorization/usersNEW Gets the authorization scopes that the specified user has granted the application.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved user authorization. | GetAuthorizationByUserResponse |
400 | Request is malformed - invalid parameters or missing parameters. | — |
401 | * The access token is not valid. * Authorization header is required and must specify an app access token. | — |
403 | The client-id in the header must match the client ID in the access token. | — |
500 | Internal Server Error. | — |
GET/usersGets information about one or more users.
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | array |
login | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the specified users’ information. | GetUsersResponse |
400 | * The \*id\* or \*login\* query parameter is required unless the request uses a user access token. * The request exceeded the maximum allowed number of \*id\* and/or \*login\* query parameters. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
PUT/usersUpdates the user’s information.
| Name | In | Required | Type |
|---|---|---|---|
description | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the specified user's information. | UpdateUserResponse |
400 | * The string in the _description_ query parameter is too long. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:edit** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
429 | The app exceeded the number of requests that it may make. | — |
GET/users/blocksGets the list of users that the broadcaster has blocked.
| Name | In | Required | Type |
|---|---|---|---|
broadcaster_id | query | yes | string |
first | query | no | integer |
after | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the broadcaster's list of blocked users. | GetUserBlockListResponse |
400 | * The _broadcaster\_id_ query parameter is required. | — |
401 | * The ID in _broadcaster\_id_ must match the user ID found in the request’s access token. * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:blocked\_users** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
PUT/users/blocksBlocks the specified user from interacting with or having contact with the broadcaster.
| Name | In | Required | Type |
|---|---|---|---|
target_user_id | query | yes | string |
source_context | query | no | string |
reason | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully blocked the user. __Examples__ _Request:_ Blocks the specified user. ```bash curl -X PUT 'https://api.twitch.tv/helix/users/blocks?target_user_id=198704263' \ -H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \ -H 'Client-Id: wbmytr93xzw8zbg0p1izqyzzc5mbiz' \ ``` | — |
400 | * The _target\_user\_id_ query parameter is required. * The ID in _target\_user\_id_ cannot be the same as the user ID in the access token. * The value in _source\_context_ is not valid. * The value in _reason_ is not valid. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:manage:blocked\_users** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
DELETE/users/blocksRemoves the user from the broadcaster’s list of blocked users.
| Name | In | Required | Type |
|---|---|---|---|
target_user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed the block. __Examples__ _Request:_ Unblocks the specified user. ```bash curl -X DELETE 'https://api.twitch.tv/helix/users/blocks?target_user_id=198704263' \ -H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \ -H 'Client-Id: wbmytr93xzw8zbg0p1izqyzzc5mbiz' \ ``` | — |
400 | * The _target\_user\_id_ query parameter is required. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:blocked\_users** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
GET/users/extensionsGets the active extensions that the broadcaster has installed for each configuration.
| Name | In | Required | Type |
|---|---|---|---|
user_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the user's active extensions. | GetUserActiveExtensionsResponse |
400 | * The _user\_id_ query parameter is required if you specify an app access token. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
PUT/users/extensionsUpdates an installed extension’s information.
application/json — UpdateUserExtensionsBody
| Status | Description | Schema |
|---|---|---|
200 | Successfully updated the active extensions. | UpdateUserExtensionsResponse |
400 | * The JSON payload is malformed. | — |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:edit:broadcast** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * An extension with the specified `id` and `version` values was not found. | — |
GET/users/extensions/listGets a list of all extensions (both active and inactive) that the broadcaster has installed.
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the user's installed extensions. | GetUserExtensionsResponse |
401 | * The Authorization header is required and must contain a user access token. * The user access token must include the **user:read:broadcast** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
Videos2
GET/videosGets information about one or more published videos.
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | array |
user_id | query | no | string |
game_id | query | no | string |
language | query | no | string |
period | query | no | string |
sort | query | no | string |
type | query | no | string |
first | query | no | string |
after | query | no | string |
before | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Successfully retrieved the list of videos. | GetVideosResponse |
400 | * The request must specify either the _id_ or _user\_id_ or _game\_id_ query parameter. * The _id_, _user\_id_, and _game\_id_ query parameters are mutually exclusive; you must specify only one of them. * The value in the _id_ query parameter is not valid. * The ID in the _game\_id_ query parameter is not valid. * The value in the _type_ query parameter is not valid. * The value in the _period_ query parameter is not valid. * The value in the _sort_ query parameter is not valid. | — |
401 | * The Authorization header is required and must contain an app access token or user access token. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
404 | * The ID in the _game\_id_ query parameter was not found. * The ID in the _id_ query parameter was not found. Returned only if all the IDs were not found; otherwise, the ID is ignored. | — |
DELETE/videosDeletes one or more videos.
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | Successfully deleted the list of videos. | DeleteVideosResponse |
400 | * The _id_ query parameter is required. * The request exceeded the number of allowed _id_ query parameters. | — |
401 | * The caller is not authorized to delete the specified video. * The Authorization header is required and must contain a user access token. * The user access token must include the **channel:manage:videos** scope. * The access token is not valid. * The ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
Whispers1
POST/whispersSends a whisper message to the specified user.
| Name | In | Required | Type |
|---|---|---|---|
from_user_id | query | yes | string |
to_user_id | query | yes | string |
application/json — SendWhisperBody
| Status | Description | Schema |
|---|---|---|
204 | Successfully sent the whisper message or the message was silently dropped. __Examples__ _Request:_ Send the user a whisper message. ```bash curl -X POST 'https://api.twitch.tv/helix/whispers?from_user_id=123&to_user_id=456' \ -H 'Authorization: Bearer kpvy3cjboyptmdkiacwr0c19hotn5s' \ -H 'Client-Id: hof5gwx0su6owfnys0nyan9c87zr6t' \ -H 'Content-Type: application/json' \ -d '{"message":"hello"}' ``` | — |
400 | * The ID in the _from\_user\_id_ and _to\_user\_id_ query parameters must be different. * The `message` field must not contain an empty string. * The user that you're sending the whisper to doesn't allow whisper messages (see the **Block Whispers from Strangers** setting in your [Security and Privacy](https://www.twitch.tv/settings/security) settings). * Whisper messages may not be sent to suspended users. * The ID in the _from\_user\_id_ query parameter is not valid. * The ID in the _to\_user\_id_ query parameter is not valid. | — |
401 | * The user in the _from\_user\_id_ query parameter must have a verified phone number. * The Authorization header is required and must contain a user access token. * The user access token must include the **user:manage:whispers** scope. * The access token is not valid. * This ID in _from\_user\_id_ must match the user ID in the user access token. * The client ID specified in the Client-Id header does not match the client ID specified in the access token. | — |
403 | * Suspended users may not send whisper messages. * The account that's sending the message doesn't allow sending whispers. | — |
404 | * The ID in _to\_user\_id_ was not found. | — |
429 | * The sending user exceeded the number of whisper requests that they may make. See Rate Limits for this endpoint above. | — |
Try it
Developer reference
https://api.twitch.tv/helixToken-bucket model with separate buckets for app-access and user-access tokens (user-token limits apply per client ID per user per minute); each call costs points (default 1 per request unless an endpoint's own docs say otherwise), and exceeding the bucket within a 1-minute window returns HTTP 429. Responses carry Ratelimit-Limit, Ratelimit-Remaining, and Ratelimit-Reset headers (e.g. Ratelimit-Limit: 800).
- GET/users
- GET/streams
- GET/games/top
- GET/channels
- GET/clips