> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vzaps.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Grupos

> Listar, criar e gerenciar grupos WhatsApp com o SDK Go

Use `client.Groups` para operações de grupos WhatsApp em uma instância.

Campos comuns em toda chamada:

| Campo           | Tipo     | Obrigatório | Descrição           |
| --------------- | -------- | ----------- | ------------------- |
| `InstanceID`    | `string` | Sim         | ID da instância.    |
| `InstanceToken` | `string` | Sim         | Token da instância. |

Operações específicas de grupo também exigem `GroupID` no payload.

## `Groups.List(ctx, req)`

Lista grupos com páginação.

```go theme={null}
groups, err := client.Groups.List(ctx, vzaps.GroupListRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Page:     1,
	PageSize: 20,
})
fmt.Printf("%#v\n", groups)
```

**Retorno:** envelope `{ code, success, data.groups[] }` com paginacao quando aplicavel.

## `Groups.Get(ctx, req)`

Obtém metadados do grupo.

```go theme={null}
group, err := client.Groups.Get(ctx, vzaps.GroupInfoRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID: "120363012345678901@g.us",
})
fmt.Printf("%#v\n", group)
```

**Retorno:** envelope `{ code, success, data }` com metadados do grupo (`jid`, `name`, `topic`, participantes, etc.).

## `Groups.InviteLink(ctx, req)`

Obtém ou redefine link de convite.

```go theme={null}
invite, err := client.Groups.InviteLink(ctx, vzaps.GroupInviteLinkRequest{
	GroupInfoRequest: vzaps.GroupInfoRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
		GroupID: "120363012345678901@g.us",
	},
	Reset: false,
})
fmt.Printf("%#v\n", invite)
```

**Retorno:** envelope `{ code, success, data.invite_link }`.

Com reset:

```go theme={null}
newInvite, err := client.Groups.InviteLink(ctx, vzaps.GroupInviteLinkRequest{
	GroupInfoRequest: vzaps.GroupInfoRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
		GroupID: "120363012345678901@g.us",
	},
	Reset: true,
})
```

## `Groups.SetPhoto(ctx, req)`

Altera foto do grupo. Aceita URL pública ou data URL base64.

```go theme={null}
_, err := client.Groups.SetPhoto(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		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.

## `Groups.SetName(ctx, req)`

Altera nome do grupo.

```go theme={null}
_, err := client.Groups.SetName(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID: "120363012345678901@g.us",
	Name:    "Suporte VIP",
})
```

**Retorno:** envelope `{ code, success, data.details }` confirmando a alteracao.

## `Groups.SetDescription(ctx, req)`

Altera descrição do grupo.

```go theme={null}
_, err := client.Groups.SetDescription(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:     "120363012345678901@g.us",
	Description: "Canal oficial de suporte",
})
```

**Retorno:** envelope `{ code, success, data.details }` confirmando a alteracao.

## `Groups.SetSettings(ctx, req)`

Altera configurações do grupo.

```go theme={null}
_, err := client.Groups.SetSettings(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:           "120363012345678901@g.us",
	AdminOnlyMessage:  true,
	AdminOnlySettings: false,
	DelayMessage:      0,
})
```

**Retorno:** envelope `{ code, success, data.details }` confirmando a alteracao.

## `Groups.Create(ctx, req)`

Cria grupo com participantes.

```go theme={null}
_, err := client.Groups.Create(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupName:        "Suporte VIP",
	GroupDescription: "Canal de suporte",
	GroupImage:       "https://cdn.example.com/groups/photo.jpg",
	Participants:     []string{"5511999999999", "5511888888888"},
})
```

**Retorno:** envelope `{ code, success, data }` com dados do grupo criado.

## `Groups.AddAdmin(ctx, req)`

Promove participantes a admin.

```go theme={null}
_, err := client.Groups.AddAdmin(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:      "120363012345678901@g.us",
	Participants: []string{"5511999999999"},
})
```

**Retorno:** envelope `{ code, success, data.details }` confirmando a alteracao.

## `Groups.RemoveAdmin(ctx, req)`

Remove admins do grupo.

```go theme={null}
_, err := client.Groups.RemoveAdmin(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:      "120363012345678901@g.us",
	Participants: []string{"5511999999999"},
})
```

**Retorno:** envelope `{ code, success, data.details }` confirmando a alteracao.
