> ## 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.

# Groups

> List, create, and manage WhatsApp groups with the Go SDK

Use `client.Groups` for WhatsApp group operations on an instance.

Common fields on every call:

| Field           | Type     | Required | Description     |
| --------------- | -------- | -------- | --------------- |
| `InstanceID`    | `string` | Yes      | Instance ID.    |
| `InstanceToken` | `string` | Yes      | Instance token. |

Group-specific operations also require `GroupID` in the payload.

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

Lists groups with pagination.

```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)
```

**Return:** envelope `{ code, success, data.groups[] }` with pagination when applicable.

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

Gets group metadata.

```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)
```

**Return:** envelope `{ code, success, data }` with group metadata (`jid`, `name`, `topic`, participants, etc.).

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

Gets or resets the invite link.

```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)
```

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

With 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)`

Changes the group photo. Accepts a public URL or base64 data URL.

```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",
})
```

**Return:** envelope `{ code, success, data.details }` confirming the change.

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

Changes the group name.

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

**Return:** envelope `{ code, success, data.details }` confirming the change.

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

Changes the group description.

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

**Return:** envelope `{ code, success, data.details }` confirming the change.

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

Changes group settings.

```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,
})
```

**Return:** envelope `{ code, success, data.details }` confirming the change.

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

Creates a group with participants.

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

**Return:** envelope `{ code, success, data }` with created group fields.

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

Promotes participants to 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"},
})
```

**Return:** envelope `{ code, success, data.details }` confirming the change.

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

Removes admins from the group.

```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"},
})
```

**Return:** envelope `{ code, success, data.details }` confirming the change.
