# Retrieve all suppression groups associated with an account

## API overview

A suppression group, or an [unsubscribe group](/docs/sendgrid/ui/sending-email/create-and-manage-unsubscribe-groups/), is a specific type of email from which your recipients can unsubscribe. For example, daily newsletter and system alerts can be suppression groups. Manage your suppression groups using Twilio Sendgrid API. You can also specify suppression groups by using an [X-SMTPAPI header](/docs/sendgrid/for-developers/sending-email/building-an-x-smtpapi-header#suppression-groups).

Make sure that the names and descriptions of your suppression groups are recipient-friendly. Recipients can view these names and descriptions when managing their email subscriptions.

You can create and retrieve up to 200 suppression groups for a Twilio Sendgrid account.

## Operation overview

```json
{"path":"https://api.sendgrid.com/v3/asm/groups","method":"get","servers":[{"url":"https://api.sendgrid.com","description":"for global users and subusers"},{"url":"https://api.eu.sendgrid.com","description":"for EU regional subusers"}]}
```

**This endpoint allows you to retrieve a list of all suppression groups created by this user.**

This endpoint can also return information for multiple group IDs that you include in your request. To add a group ID to your request, simply append `?id=123456&id=123456`, with the appropriate group IDs.

## Operation details

### Authentication

API Key

### Headers

```json
[{"in":"header","name":"Authorization","required":true,"default":"Bearer <<YOUR_API_KEY_HERE>>","schema":{"type":"string"}},{"name":"on-behalf-of","in":"header","description":"The `on-behalf-of` header allows you to make API calls from a parent account on behalf of the parent's Subusers or customer accounts. You will use the parent account's API key when using this header. When making a call on behalf of a customer account, the property value should be \"account-id\" followed by the customer account's ID (e.g., `on-behalf-of: account-id <account-id>`). When making a call on behalf of a Subuser, the property value should be the Subuser's username (e.g., `on-behalf-of: <subuser-username>`). It is important to use the Base URL that corresponds to the region of the account or Subuser you specify in the `on-behalf-of` header. See [**On Behalf Of**](/docs/sendgrid/api-reference/how-to-use-the-sendgrid-v3-api/on-behalf-of) for more information.","required":false,"schema":{"type":"string"},"refName":"#/components/parameters/OnBehalfOf","modelName":"__components_parameters_OnBehalfOf"}]
```

### Query string

```json
[{"name":"id","in":"query","description":"The ID of the suppression group(s) you want to retrieve.","schema":{"type":"integer"}}]
```

### Responses

```json
[{"responseCode":"200","schema":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"title":"Suppressions: Suppression Group","type":"object","required":["id","name","description"],"refName":"SuppressionGroup","modelName":"SuppressionGroup","properties":{"id":{"type":"number","description":"The id of the suppression group."},"name":{"type":"string","description":"The name of the suppression group. Each group created by a user must have a unique name.","maxLength":30},"description":{"type":"string","description":"A description of the suppression group.","maxLength":100},"is_default":{"type":"boolean","default":false,"description":"Indicates if this is the default suppression group."},"unsubscribes":{"type":"integer","description":"The unsubscribes associated with this group."}}}},"examples":{"response":{"value":[{"id":1234,"name":"Unsubscribe Group","description":"An Unsubscribe Group","is_default":true,"unsubscribes":1234},{"id":1234,"name":"Unsubscribe Group","description":"An Unsubscribe Group","is_default":true,"unsubscribes":1234}]}}}}}}]
```

Retrieve all suppression groups associated with the user.

```js
const client = require("@sendgrid/client");
client.setApiKey(process.env.SENDGRID_API_KEY);

const request = {
  url: `/v3/asm/groups`,
  method: "GET",
};

client
  .request(request)
  .then(([response, body]) => {
    console.log(response.statusCode);
    console.log(response.body);
  })
  .catch((error) => {
    console.error(error);
  });
```

```python
import os
from sendgrid import SendGridAPIClient


sg = SendGridAPIClient(os.environ.get("SENDGRID_API_KEY"))


response = sg.client.asm.groups.get()

print(response.status_code)
print(response.body)
print(response.headers)
```

```csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SendGrid;

public class Program {
    public static async Task Main() {
        string apiKey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY");
        var client = new SendGridClient(apiKey);

        var response =
            await client.RequestAsync(method: SendGridClient.Method.GET, urlPath: "asm/groups");

        Console.WriteLine(response.StatusCode);
        Console.WriteLine(response.Body.ReadAsStringAsync().Result);
        Console.WriteLine(response.Headers.ToString());
    }
}
```

```java
import com.sendgrid.*;
import java.io.IOException;

public class Example {
    public static void main(String[] args) throws IOException {
        try {
            SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
            Request request = new Request();
            request.setMethod(Method.GET);
            request.setEndpoint("/asm/groups");
            Response response = sg.api(request);
            System.out.println(response.getStatusCode());
            System.out.println(response.getBody());
            System.out.println(response.getHeaders());
        } catch (IOException ex) {
            throw ex;
        }
    }
}
```

```go
package main

import (
	"fmt"
	"github.com/sendgrid/sendgrid-go"
	"os"
)

func main() {
	apiKey := os.Getenv("SENDGRID_API_KEY")
	host := "https://api.sendgrid.com"
	request := sendgrid.GetRequest(apiKey, "/v3/asm/groups", host)
	request.Method = "GET"
	response, err := sendgrid.API(request)
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	} else {
		fmt.Println(response.StatusCode)
		fmt.Println(response.Body)
		fmt.Println(response.Headers)
	}
}
```

```php
<?php
// Uncomment the next line if you're using a dependency loader (such as Composer) (recommended)
// require 'vendor/autoload.php';

// Uncomment next line if you're not using a dependency loader (such as Composer)
// require_once '<PATH TO>/sendgrid-php.php';

$apiKey = getenv("SENDGRID_API_KEY");
$sg = new \SendGrid($apiKey);

try {
    $response = $sg->client
        ->asm()
        ->groups()
        ->get();
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $ex) {
    echo "Caught exception: " . $ex->getMessage();
}
```

```ruby
require 'sendgrid-ruby'
include SendGrid

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])

response = sg.client.asm.groups.get()
puts response.status_code
puts response.headers
puts response.body
```

```bash
curl -X GET "https://api.sendgrid.com/v3/asm/groups" \
--header "Authorization: Bearer $SENDGRID_API_KEY"
```
