Pular para o conteúdo principal
Use client.Groups para operacoes de grupos WhatsApp em uma instancia. Campos comuns em toda chamada:
CampoTipoObrigatorioDescricao
InstanceIdstringSimID da instancia.
InstanceTokenstringSimToken da instancia.
Operacoes especificas de grupo tambem exigem GroupId no payload.

client.Groups.ListAsync<TResponse>(request)

Lista grupos com paginacao.
var groups = await client.Groups.ListAsync<object>(new GroupListRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    Page = 1,
    PageSize = 20,
});

Console.WriteLine(groups);
Retorno: envelope { Code, Success, Data.Groups[] } com paginacao quando aplicavel.

client.Groups.GetAsync<TResponse>(request)

Obtem metadados do grupo.
var group = await client.Groups.GetAsync<object>(new GroupInfoRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
});

Console.WriteLine(group);
Retorno: envelope { Code, Success, Data } com metadados do grupo (Jid, Name, Topic, participantes, etc.).

client.Groups.InviteLinkAsync<TResponse>(request)

Obtem ou redefine link de convite.
var invite = await client.Groups.InviteLinkAsync<object>(new GroupInviteLinkRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Reset = false,
});

Console.WriteLine(invite);
Retorno: envelope { Code, Success, Data.InviteLink }. Com reset:
var newInvite = await client.Groups.InviteLinkAsync<object>(new GroupInviteLinkRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Reset = true,
});

client.Groups.SetPhotoAsync<TResponse>(request)

Altera foto do grupo. Aceita URL publica ou data URL base64.
await client.Groups.SetPhotoAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Image = "https://cdn.example.com/groups/photo.jpg",
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.

client.Groups.SetNameAsync<TResponse>(request)

Altera nome do grupo.
await client.Groups.SetNameAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Name = "Suporte VIP",
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.

client.Groups.SetDescriptionAsync<TResponse>(request)

Altera descricao do grupo.
await client.Groups.SetDescriptionAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Description = "Canal oficial de suporte",
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.

client.Groups.SetSettingsAsync<TResponse>(request)

Altera configuracoes do grupo.
await client.Groups.SetSettingsAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    AdminOnlyMessage = true,
    AdminOnlySettings = false,
    DelayMessage = 0,
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.

client.Groups.CreateAsync<TResponse>(request)

Cria grupo com participantes.
await client.Groups.CreateAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupName = "Suporte VIP",
    GroupDescription = "Canal de suporte",
    GroupImage = "https://cdn.example.com/groups/photo.jpg",
    Participants = new[] { "5511999999999", "5511888888888" },
});
Retorno: envelope { Code, Success, Data } com dados do grupo criado.

client.Groups.AddAdminAsync<TResponse>(request)

Promove participantes a admin.
await client.Groups.AddAdminAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Participants = new[] { "5511999999999" },
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.

client.Groups.RemoveAdminAsync<TResponse>(request)

Remove admins do grupo.
await client.Groups.RemoveAdminAsync<object>(new GroupMutationRequest
{
    InstanceId = "VZ...",
    InstanceToken = "instance-token",
    GroupId = "120363012345678901@g.us",
    Participants = new[] { "5511999999999" },
});
Retorno: envelope { Code, Success, Data.Details } confirmando a alteracao.