GetChannelGuestStarSettings

Get the channel settings for configuration of the Guest Star feature for a particular host.

Requires: channel:read:guest_star, channel:manage:guest_star, or moderator:read:guest_star

resp, err := client.GetChannelGuestStarSettings(ctx, &helix.GetChannelGuestStarSettingsParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
})
if err != nil {
    fmt.Printf("Failed to get settings: %v\n", err)
}

Sample Response:

{
  "data": [
    {
      "is_moderator_send_live_enabled": true,
      "slot_count": 6,
      "is_browser_source_audio_enabled": true,
      "group_layout": "TILED_LAYOUT",
      "browser_source_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
    }
  ]
}

UpdateChannelGuestStarSettings

Update the channel settings for configuration of the Guest Star feature for a particular host.

Requires: channel:manage:guest_star

err := client.UpdateChannelGuestStarSettings(ctx, &helix.UpdateChannelGuestStarSettingsParams{
    BroadcasterID:                "12345",
    IsModeratorSendLiveEnabled:   true,
    SlotCount:                    6,
    IsBrowserSourceAudioEnabled:  true,
    GroupLayout:                  "TILED_LAYOUT", // Options: TILED_LAYOUT, SCREENSHARE_LAYOUT, HORIZONTAL_LAYOUT, VERTICAL_LAYOUT
    RegenerateBrowserSources:     false,
})
if err != nil {
    fmt.Printf("Failed to update settings: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

GetGuestStarSession

Get the information for the active Guest Star session for a particular channel.

Requires: channel:read:guest_star, channel:manage:guest_star, or moderator:read:guest_star

resp, err := client.GetGuestStarSession(ctx, &helix.GetGuestStarSessionParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
})
if err != nil {
    fmt.Printf("Failed to get session: %v\n", err)
}

Sample Response:

{
  "data": [
    {
      "id": "v4-1234567890abcdef",
      "guests": [
        {
          "slot_id": "0",
          "is_live": true,
          "user_id": "98765",
          "user_display_name": "GuestUser",
          "user_login": "guestuser",
          "volume": 100,
          "assigned_at": "2024-01-15T10:30:00Z",
          "audio_settings": {
            "is_host_enabled": true,
            "is_self_muted": false,
            "is_available": true
          },
          "video_settings": {
            "is_host_enabled": true,
            "is_self_muted": false,
            "is_available": true
          }
        },
        {
          "slot_id": "1",
          "is_live": false,
          "user_id": "54321",
          "user_display_name": "AnotherGuest",
          "user_login": "anotherguest",
          "volume": 75,
          "assigned_at": "2024-01-15T10:35:00Z",
          "audio_settings": {
            "is_host_enabled": true,
            "is_self_muted": true,
            "is_available": true
          },
          "video_settings": {
            "is_host_enabled": false,
            "is_self_muted": false,
            "is_available": true
          }
        }
      ]
    }
  ]
}

CreateGuestStarSession

Create a Guest Star session for a particular broadcaster.

Requires: channel:manage:guest_star

resp, err := client.CreateGuestStarSession(ctx, "12345")
if err != nil {
    fmt.Printf("Failed to create session: %v\n", err)
}
fmt.Printf("Session created with ID: %s\n", resp.Data.SessionID)

Sample Response:

{
  "data": [
    {
      "id": "v4-1234567890abcdef",
      "guests": []
    }
  ]
}

EndGuestStarSession

End an active Guest Star session.

Requires: channel:manage:guest_star

err := client.EndGuestStarSession(ctx, &helix.EndGuestStarSessionParams{
    BroadcasterID: "12345",
    SessionID:     "session-id-here",
})
if err != nil {
    fmt.Printf("Failed to end session: %v\n", err)
}

Sample Response:

{
  "data": [
    {
      "id": "v4-1234567890abcdef",
      "guests": []
    }
  ]
}

GetGuestStarInvites

Get the list of pending invites for a particular Guest Star session.

Requires: channel:read:guest_star, channel:manage:guest_star, or moderator:read:guest_star

resp, err := client.GetGuestStarInvites(ctx, &helix.GetGuestStarInvitesParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
    SessionID:     "session-id-here",
})
for _, invite := range resp.Data {
    fmt.Printf("Invite for user: %s\n", invite.UserID)
}

Sample Response:

{
  "data": [
    {
      "user_id": "98765",
      "invited_at": "2024-01-15T10:25:00Z",
      "status": "INVITED",
      "is_video_enabled": true,
      "is_audio_enabled": true,
      "is_video_available": true,
      "is_audio_available": true
    },
    {
      "user_id": "54321",
      "invited_at": "2024-01-15T10:28:00Z",
      "status": "ACCEPTED",
      "is_video_enabled": true,
      "is_audio_enabled": true,
      "is_video_available": true,
      "is_audio_available": true
    }
  ]
}

SendGuestStarInvite

Send a Guest Star invite to a user.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.SendGuestStarInvite(ctx, &helix.SendGuestStarInviteParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
    SessionID:     "session-id-here",
    GuestID:       "guest-user-id",
})
if err != nil {
    fmt.Printf("Failed to send invite: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

DeleteGuestStarInvite

Revoke a Guest Star invite for a user.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.DeleteGuestStarInvite(ctx, &helix.DeleteGuestStarInviteParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
    SessionID:     "session-id-here",
    GuestID:       "guest-user-id",
})
if err != nil {
    fmt.Printf("Failed to delete invite: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

AssignGuestStarSlot

Assign a user to a slot in a Guest Star session.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.AssignGuestStarSlot(ctx, &helix.AssignGuestStarSlotParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
    SessionID:     "session-id-here",
    GuestID:       "guest-user-id",
    SlotID:        "1",
})
if err != nil {
    fmt.Printf("Failed to assign slot: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

UpdateGuestStarSlot

Move a user between slots within the active Guest Star session.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.UpdateGuestStarSlot(ctx, &helix.UpdateGuestStarSlotParams{
    BroadcasterID:      "12345",
    ModeratorID:        "67890",
    SessionID:          "session-id-here",
    SourceSlotID:       "1",
    DestinationSlotID:  "2",
})
if err != nil {
    fmt.Printf("Failed to update slot: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

DeleteGuestStarSlot

Remove a user from a slot in the active Guest Star session.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.DeleteGuestStarSlot(ctx, &helix.DeleteGuestStarSlotParams{
    BroadcasterID: "12345",
    ModeratorID:   "67890",
    SessionID:     "session-id-here",
    GuestID:       "guest-user-id",
    SlotID:        "1",
})
if err != nil {
    fmt.Printf("Failed to delete slot: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)

UpdateGuestStarSlotSettings

Update settings for a particular guest’s slot in an active Guest Star session.

Requires: channel:manage:guest_star or moderator:manage:guest_star

err := client.UpdateGuestStarSlotSettings(ctx, &helix.UpdateGuestStarSlotSettingsParams{
    BroadcasterID:  "12345",
    ModeratorID:    "67890",
    SessionID:      "session-id-here",
    SlotID:         "1",
    IsAudioEnabled: true,
    IsVideoEnabled: true,
    IsLive:         true,
    Volume:         100,
})
if err != nil {
    fmt.Printf("Failed to update slot settings: %v\n", err)
}

Returns: No response body on success (HTTP 204 No Content)