# Remove an IP address from a pool

## API Overview

IP pools allow you to group your dedicated SendGrid IP addresses. For example, you could create separate one pool for your transactional email and another for your marketing email. When sending marketing emails, specify that you want to use the marketing IP pool. This allows you to maintain separate reputations for your different email traffic.

A single IP address or a range of IP addresses may be dedicated to an account in order to send email for multiple domains. *The reputation of this IP is determined by the aggregate performance of all email traffic sent from it*.

IP pools can only be used with IP addresses for which you've set up a reverse DNS record.

If an IP pool is *not* specified for an email, it will use any IP available, including pooled addresses.

**Each user can create up to 100 different IP pools.**

## Operation overview

```json
{"path":"https://api.sendgrid.com/v3/ips/pools/{pool_name}/ips/{ip}","method":"delete","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 remove an IP address from an IP pool.**

## Operation details

### Authentication

API Key

### Headers

```json
[{"in":"header","name":"Authorization","required":true,"default":"Bearer <<YOUR_API_KEY_HERE>>","schema":{"type":"string"}}]
```

### Path parameters

```json
[{"name":"pool_name","in":"path","description":"The name of the IP pool that you are removing the IP address from.","required":true,"schema":{"type":"string"}},{"name":"ip","in":"path","description":"The IP address that you wish to remove.","required":true,"schema":{"type":"string"}}]
```

### Responses

```json
[{"responseCode":"204","schema":{"description":""}},{"responseCode":"404","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An error explaining why the IP address could not be removed from the IP pool."}}},"examples":{"response":{"value":{"error":"Unable to locate specified IPs Pool"}}}}}}}]
```

Remove an IP address from a pool

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

const pool_name = "pool_name";
const ip = "ip";

const request = {
  url: `/v3/ips/pools/${pool_name}/ips/${ip}`,
  method: "DELETE",
};

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

pool_name = "pool_name"
ip = "ip"

response = sg.client.ips.pools._(pool_name).ips._(ip).delete()

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 poolName = "pool_name";
        var ip = "ip";

        var response = await client.RequestAsync(
            method: SendGridClient.Method.DELETE, urlPath: $"ips/pools/{poolName}/ips/{ip}");

        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.DELETE);
            request.setEndpoint("/ips/pools/pool_name/ips/ip");
            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/ips/pools/pool_name/ips/ip", host)
	request.Method = "DELETE"
	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);
$pool_name = "pool_name";
$ip = "ip";

try {
    $response = $sg->client
        ->ips()
        ->pools()
        ->_($pool_name)
        ->ips()
        ->_($ip)
        ->delete();
    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'])
ip = "ip"
pool_name = "pool_name"

response = sg.client.ips.pools._(pool_name).ips._(ip).delete()
puts response.status_code
puts response.headers
puts response.body
```

```bash
curl -X DELETE "https://api.sendgrid.com/v3/ips/pools/pool_name/ips/ip" \
--header "Authorization: Bearer $SENDGRID_API_KEY"
```
