For complete examples with error handling and setup, see Basic Usage.
Users
User operations for fetching profiles, managing blocks, and getting the authenticated user’s information.
Scopes required:
GetUsers: None (public data)GetCurrentUser:user:read:email(optional, for email)BlockUser/UnblockUser:user:manage:blocked_users
// Get users by ID or login
users, _ := client.GetUsers(ctx, &helix.GetUsersParams{
IDs: []string{"12345"},
Logins: []string{"username"},
})
// Get current authenticated user
user, _ := client.GetCurrentUser(ctx)
// Block/unblock users
client.BlockUser(ctx, &helix.BlockUserParams{TargetUserID: "12345"})
client.UnblockUser(ctx, "12345")
Channels
Retrieve and modify channel information, and access follower data.
Scopes required:
GetChannelInformation: None (public data)ModifyChannelInformation:channel:manage:broadcastGetChannelFollowers:moderator:read:followers(for follower details)
// Get channel information
channels, _ := client.GetChannelInformation(ctx, &helix.GetChannelInformationParams{
BroadcasterIDs: []string{"12345"},
})
// Modify channel
client.ModifyChannelInformation(ctx, &helix.ModifyChannelInformationParams{
BroadcasterID: "12345",
Title: "New Stream Title",
GameID: "game-id",
})
// Get followers
followers, _ := client.GetChannelFollowers(ctx, &helix.GetChannelFollowersParams{
BroadcasterID: "12345",
})
Streams
Access live stream data, stream keys, and create markers for VOD highlights.
Scopes required:
GetStreams: None (public data)GetStreamKey:channel:read:stream_keyCreateStreamMarker:channel:manage:broadcast
// Get live streams
streams, _ := client.GetStreams(ctx, &helix.GetStreamsParams{
UserLogins: []string{"streamer1", "streamer2"},
})
// Get stream key
key, _ := client.GetStreamKey(ctx, "broadcaster-id")
// Create stream marker
marker, _ := client.CreateStreamMarker(ctx, &helix.CreateStreamMarkerParams{
UserID: "12345",
Description: "Highlight moment",
})
Chat
Send messages, announcements, and manage chat settings. For real-time chat events, see EventSub WebSocket or IRC Client.
Scopes required:
SendChatMessage:user:write:chatSendChatAnnouncement:moderator:manage:announcementsUpdateChatSettings:moderator:manage:chat_settings
// Send chat message
resp, _ := client.SendChatMessage(ctx, &helix.SendChatMessageParams{
BroadcasterID: "12345",
SenderID: "67890",
Message: "Hello, chat!",
})
// Send announcement
client.SendChatAnnouncement(ctx, &helix.SendChatAnnouncementParams{
BroadcasterID: "12345",
ModeratorID: "67890",
Message: "Important announcement!",
Color: "blue",
})
// Get/update chat settings
settings, _ := client.GetChatSettings(ctx, "12345", "")
client.UpdateChatSettings(ctx, &helix.UpdateChatSettingsParams{
BroadcasterID: "12345",
ModeratorID: "67890",
SlowMode: boolPtr(true),
SlowModeWaitTime: intPtr(30),
})
Moderation
Ban/timeout users, manage the ban list, and control channel moderators.
Scopes required:
BanUser/UnbanUser:moderator:manage:banned_usersGetBannedUsers:moderation:readAddChannelModerator/RemoveChannelModerator:channel:manage:moderators
Note: Duration of 0 means permanent ban; any positive value is a timeout in seconds.
// Ban user
client.BanUser(ctx, &helix.BanUserParams{
BroadcasterID: "12345",
ModeratorID: "67890",
Data: helix.BanUserData{
UserID: "banned-user-id",
Duration: 300, // 5 minutes, 0 for permanent
Reason: "Violation of rules",
},
})
// Unban user
client.UnbanUser(ctx, "12345", "67890", "banned-user-id")
// Get banned users
banned, _ := client.GetBannedUsers(ctx, &helix.GetBannedUsersParams{
BroadcasterID: "12345",
})
// Manage moderators
client.AddChannelModerator(ctx, "12345", "new-mod-id")
client.RemoveChannelModerator(ctx, "12345", "mod-id")
Polls & Predictions
Create interactive polls and channel point predictions for viewer engagement.
Scopes required:
CreatePoll/EndPoll:channel:manage:pollsCreatePrediction/EndPrediction:channel:manage:predictions
Limitations: Polls can have 2-5 choices; predictions always have exactly 2 outcomes. Duration is in seconds.
// Create poll
poll, _ := client.CreatePoll(ctx, &helix.CreatePollParams{
BroadcasterID: "12345",
Title: "What game next?",
Choices: []helix.CreatePollChoice{
{Title: "Game A"},
{Title: "Game B"},
},
Duration: 300,
})
// Create prediction
prediction, _ := client.CreatePrediction(ctx, &helix.CreatePredictionParams{
BroadcasterID: "12345",
Title: "Will I win?",
Outcomes: []helix.CreatePredictionOutcome{
{Title: "Yes"},
{Title: "No"},
},
PredictionWindow: 120,
})
Clips
Create clips from live streams and retrieve existing clips. For more clip operations including VOD clips, see Videos & Clips.
Scopes required:
CreateClip:clips:editGetClips: None (public data)
Note: Clip creation requires the stream to be live. The clip captures approximately 30 seconds of content.
// Create clip
clip, _ := client.CreateClip(ctx, &helix.CreateClipParams{
BroadcasterID: "12345",
})
// Get clips
clips, _ := client.GetClips(ctx, &helix.GetClipsParams{
BroadcasterID: "12345",
})
Common Scopes
The library provides pre-defined scope combinations:
helix.CommonScopes.Chat // Chat read/write
helix.CommonScopes.Bot // Bot functionality
helix.CommonScopes.Moderation // Moderation tools
helix.CommonScopes.Channel // Channel management
helix.CommonScopes.Broadcaster // Full broadcaster access