# Update bounce purge mail settings

## API Overview

Mail Settings instruct SendGrid to apply specific settings to every email that you send over [SendGrid's v3 API](/docs/sendgrid/api-reference/mail-send/mail-send) or [SMTP Relay](/docs/sendgrid/for-developers/sending-email/building-an-x-smtpapi-header/). These settings include how to embed a custom footer, how to manage blocks, spam, and bounces, and more.

For a full list of Twilio SendGrid's Mail Settings, and what each one does, see our [Mail Settings documentation](/docs/sendgrid/ui/account-and-settings/mail/).

You can also manage your Mail Settings in the [Twilio SendGrid App](https://app.sendgrid.com/settings/mail_settings)

## Operation overview

```json
{"path":"https://api.sendgrid.com/v3/mail_settings/bounce_purge","method":"patch","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 update your current Bounce Purge mail settings.**

The Bounce Purge mail metting allows you to configure the maximum age of contacts in your hard and soft bounce suppressions lists. All contacts older than their respective configured age are deleted.

A hard bounce occurs when an email message has been returned to the sender because the recipient's address is invalid. A hard bounce might occur because the domain name doesn't exist or because the recipient is unknown.

A soft bounce occurs when an email message reaches the recipient's mail server but is bounced back undelivered before it actually reaches the recipient. A soft bounce might occur because the recipient's inbox is full.

You can also manage this setting in the [Mail Settings section of the Twilio SendGrid App](https://app.sendgrid.com/settings/mail_settings). You can manage your bounces manually using the [Bounces API](/docs/sendgrid/api-reference/bounces-api) or the [Bounces menu in the Twilio SendGrid App](https://app.sendgrid.com/suppressions/bounces).

## 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>`). 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"}]
```

### Request body

```json
{"schema":{"title":"Mail Settings: Bounce Purge","type":"object","example":{"enabled":false,"soft_bounces":1234,"hard_bounces":1234},"refName":"MailSettingsBouncePurge","modelName":"MailSettingsBouncePurge","properties":{"enabled":{"type":"boolean","description":"Indicates if the Bounce Purge mail setting is enabled."},"soft_bounces":{"description":"The number of days after which SendGrid will purge all contacts from your soft bounces suppression lists.","nullable":true,"type":"integer"},"hard_bounces":{"description":"The number of days after which SendGrid will purge all contacts from your hard bounces suppression lists.","nullable":true,"type":"integer"}}},"encodingType":"application/json"}
```

### Responses

```json
[{"responseCode":"200","schema":{"description":"","content":{"application/json":{"schema":{"title":"Mail Settings: Bounce Purge","type":"object","example":{"enabled":false,"soft_bounces":1234,"hard_bounces":1234},"refName":"MailSettingsBouncePurge","modelName":"MailSettingsBouncePurge","properties":{"enabled":{"type":"boolean","description":"Indicates if the Bounce Purge mail setting is enabled."},"soft_bounces":{"description":"The number of days after which SendGrid will purge all contacts from your soft bounces suppression lists.","nullable":true,"type":"integer"},"hard_bounces":{"description":"The number of days after which SendGrid will purge all contacts from your hard bounces suppression lists.","nullable":true,"type":"integer"}}},"examples":{"response":{"value":{"enabled":false,"hard_bounces":5,"soft_bounces":5}}}}}}},{"responseCode":"400","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","required":["message"],"properties":{"error_id":{"type":"string","description":"The ID associated with the error."},"field":{"description":"The field that generated the error.","nullable":true,"type":"string"},"message":{"type":"string","description":"The error message."},"parameter":{"type":"string"}}}}}}}},"refName":"#/components/responses/MailSettingsError400","modelName":"__components_responses_MailSettingsError400"}},{"responseCode":"401","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","required":["message"],"properties":{"error_id":{"type":"string","description":"The ID associated with the error."},"field":{"description":"The field that generated the error.","nullable":true,"type":"string"},"message":{"type":"string","description":"The error message."},"parameter":{"type":"string"}}}}}}}},"refName":"#/components/responses/MailSettingsError401","modelName":"__components_responses_MailSettingsError401"}},{"responseCode":"403","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","required":["message"],"properties":{"error_id":{"type":"string","description":"The ID associated with the error."},"field":{"description":"The field that generated the error.","nullable":true,"type":"string"},"message":{"type":"string","description":"The error message."},"parameter":{"type":"string"}}}}}}}},"refName":"#/components/responses/MailSettingsError403","modelName":"__components_responses_MailSettingsError403"}},{"responseCode":"404","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","required":["message"],"properties":{"error_id":{"type":"string","description":"The ID associated with the error."},"field":{"description":"The field that generated the error.","nullable":true,"type":"string"},"message":{"type":"string","description":"The error message."},"parameter":{"type":"string"}}}}}}}},"refName":"#/components/responses/MailSettingsError404","modelName":"__components_responses_MailSettingsError404"}},{"responseCode":"500","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","required":["message"],"properties":{"error_id":{"type":"string","description":"The ID associated with the error."},"field":{"description":"The field that generated the error.","nullable":true,"type":"string"},"message":{"type":"string","description":"The error message."},"parameter":{"type":"string"}}}}}}}},"refName":"#/components/responses/MailSettingsError500","modelName":"__components_responses_MailSettingsError500"}}]
```

Update bounce purge mail settings

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

const data = {
  enabled: false,
  soft_bounces: 1234,
  hard_bounces: 10,
};

const request = {
  url: `/v3/mail_settings/bounce_purge`,
  method: "PATCH",
  body: data,
};

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

data = {"enabled": False, "soft_bounces": 1234, "hard_bounces": 10}

response = sg.client.mail_settings.bounce_purge.patch(request_body=data)

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 data =
            @"{
            ""enabled"": false,
            ""soft_bounces"": 1234,
            ""hard_bounces"": 10
        }";

        var response = await client.RequestAsync(
            method: SendGridClient.Method.PATCH,
            urlPath: "mail_settings/bounce_purge",
            requestBody: data);

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

```java
import com.sendgrid.*;
import java.io.IOException;
import org.json.JSONObject;
import java.util.HashMap;

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.PATCH);
            request.setEndpoint("/mail_settings/bounce_purge");
            request.setBody(new JSONObject(new HashMap<String, Object>() {
                {
                    put("enabled", false);
                    put("soft_bounces", 1234);
                    put("hard_bounces", 10);
                }
            }).toString());
            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/mail_settings/bounce_purge", host)
	request.Method = "PATCH"
	request.Body = []byte(`{
  "enabled": false,
  "soft_bounces": 1234,
  "hard_bounces": 10
}`)
	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);
$request_body = json_decode('{
    "enabled": false,
    "soft_bounces": 1234,
    "hard_bounces": 10
}');

try {
    $response = $sg->client
        ->mail_settings()
        ->bounce_purge()
        ->patch($request_body);
    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'])
data = JSON.parse('{
  "enabled": false,
  "soft_bounces": 1234,
  "hard_bounces": 10
}')

response = sg.client.mail_settings.bounce_purge.patch(request_body: data)
puts response.status_code
puts response.headers
puts response.body
```

```bash
curl -X PATCH "https://api.sendgrid.com/v3/mail_settings/bounce_purge" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"enabled": false, "soft_bounces": 1234, "hard_bounces": 10}'
```
