# Add one or more IPs to the allow list

## API Overview

IP access management allows you to control which IP addresses can access your account. You can use either the Console or the API.

Twilio SendGrid limits the number of allowed IP addresses to `1000`.

> \[!CAUTION]
>
> The list of the allowed IP addresses doesn't include your IP address without your action. You *can* remove from your IP address from the list of allowed IP addresses and block your access to your account. While Twilio can restore your access, this requires thorough proof of your identity and ownership of your account.
>
> To prevent the accidental removal of your IP address from the allowed addresses, the Console displays your IP address in the **Add IP Addresses** pane.

To learn more, see [IP access management](/docs/sendgrid/ui/account-and-settings/ip-access-management/).

## Operation overview

```json
{"path":"https://api.sendgrid.com/v3/access_settings/whitelist","method":"post","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 add one or more allowed IP addresses.**

To allow one or more IP addresses, pass them to this endpoint in an array. Once an IP address is added to your allow list, it will be assigned an `id` that can be used to remove the address. You can retrieve the ID associated with an IP using the "Retrieve a list of currently allowed IPs" endpoint.

## 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":{"type":"object","required":["ips"],"example":{"ips":[{"ip":"192.168.1.1"},{"ip":"192.*.*.*"},{"ip":"192.168.1.3/32"}]},"properties":{"ips":{"type":"array","description":"An array containing the IP(s) you want to allow.","items":{"type":"object","required":["ip"],"properties":{"ip":{"type":"string","description":"An IP address that you want to allow."}}}}}},"encodingType":"application/json"}
```

### Responses

```json
[{"responseCode":"201","schema":{"description":"","content":{"application/json":{"schema":{"title":"IP Access Response","type":"object","example":{"result":[{"id":1,"ip":"192.168.1.1/32","created_at":1441824715,"updated_at":1441824715},{"id":2,"ip":"192.0.0.0/8","created_at":1441824715,"updated_at":1441824715},{"id":3,"ip":"192.168.1.3/32","created_at":1441824715,"updated_at":1441824715}]},"refName":"IpAccessManagement2xx","modelName":"IpAccessManagement2xx","properties":{"result":{"type":"array","description":"An array listing one or more of your allowed IPs.","items":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the allowed IP."},"ip":{"type":"string","description":"The allowed IP."},"created_at":{"type":"integer","description":"A Unix timestamp indicating when the IP was added to the allow list."},"updated_at":{"type":"integer","description":"A Unix timestamp indicating when the IPs allow status was most recently updated."}}}}}},"examples":{"response":{"value":{"result":[{"id":1,"ip":"192.168.1.1/32","created_at":1441824715,"updated_at":1441824715},{"id":2,"ip":"192.0.0.0/8","created_at":1441824715,"updated_at":1441824715},{"id":3,"ip":"192.168.1.3/32","created_at":1441824715,"updated_at":1441824715}]}}}}}}},{"responseCode":"401","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","example":{"errors":[{"field":"field_name","message":"error message"}]},"refName":"ErrorResponse","modelName":"ErrorResponse","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","description":"An error message."},"field":{"description":"When applicable, this property value will be the field that generated the error.","nullable":true,"type":"string"},"help":{"type":"object","description":"When applicable, this property value will be helper text or a link to documentation to help you troubleshoot the error."}}}},"id":{"type":"string","description":"When applicable, this property value will be an error ID."}}}}},"refName":"#/components/responses/IpAccessManagement401","modelName":"__components_responses_IpAccessManagement401"}},{"responseCode":"403","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","example":{"errors":[{"field":"field_name","message":"error message"}]},"refName":"ErrorResponse","modelName":"ErrorResponse","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","description":"An error message."},"field":{"description":"When applicable, this property value will be the field that generated the error.","nullable":true,"type":"string"},"help":{"type":"object","description":"When applicable, this property value will be helper text or a link to documentation to help you troubleshoot the error."}}}},"id":{"type":"string","description":"When applicable, this property value will be an error ID."}}}}},"refName":"#/components/responses/IpAccessManagement403","modelName":"__components_responses_IpAccessManagement403"}},{"responseCode":"404","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","example":{"errors":[{"field":"field_name","message":"error message"}]},"refName":"ErrorResponse","modelName":"ErrorResponse","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","description":"An error message."},"field":{"description":"When applicable, this property value will be the field that generated the error.","nullable":true,"type":"string"},"help":{"type":"object","description":"When applicable, this property value will be helper text or a link to documentation to help you troubleshoot the error."}}}},"id":{"type":"string","description":"When applicable, this property value will be an error ID."}}}}},"refName":"#/components/responses/IpAccessManagement404","modelName":"__components_responses_IpAccessManagement404"}},{"responseCode":"500","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"refName":"#/components/responses/IpAccessManagement500","modelName":"__components_responses_IpAccessManagement500"}}]
```

Add one or more IPs to the allow list

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

const data = {
  ips: [
    {
      ip: "192.168.1.1",
    },
    {
      ip: "192.*.*.*",
    },
    {
      ip: "192.168.1.3/32",
    },
  ],
};

const request = {
  url: `/v3/access_settings/whitelist`,
  method: "POST",
  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 = {
    "ips": [
        {"ip": "192.168.1.1"},
        {"ip": "192.*.*.*"},
        {"ip": "192.168.1.3/32"},
    ]
}

response = sg.client.access_settings.whitelist.post(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 =
            @"{
            ""ips"": [
                {
                    ""ip"": ""192.168.1.1""
                },
                {
                    ""ip"": ""192.*.*.*""
                },
                {
                    ""ip"": ""192.168.1.3/32""
                }
            ]
        }";

        var response = await client.RequestAsync(
            method: SendGridClient.Method.POST,
            urlPath: "access_settings/whitelist",
            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;
import java.util.Arrays;

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.POST);
            request.setEndpoint("/access_settings/whitelist");
            request.setBody(new JSONObject(new HashMap<String, Object>() {
                {
                    put("ips",
                        Arrays.asList(
                            new HashMap<String, Object>() {
                                {
                                    put("ip", "192.168.1.1");
                                }
                            },
                            new HashMap<String, Object>() {
                                {
                                    put("ip", "192.*.*.*");
                                }
                            },
                            new HashMap<String, Object>() {
                                {
                                    put("ip", "192.168.1.3/32");
                                }
                            }));
                }
            }).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/access_settings/whitelist", host)
	request.Method = "POST"
	request.Body = []byte(`{
  "ips": [
    {
      "ip": "192.168.1.1"
    },
    {
      "ip": "192.*.*.*"
    },
    {
      "ip": "192.168.1.3/32"
    }
  ]
}`)
	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('{
    "ips": [
        {
            "ip": "192.168.1.1"
        },
        {
            "ip": "192.*.*.*"
        },
        {
            "ip": "192.168.1.3/32"
        }
    ]
}');

try {
    $response = $sg->client
        ->access_settings()
        ->whitelist()
        ->post($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('{
  "ips": [
    {
      "ip": "192.168.1.1"
    },
    {
      "ip": "192.*.*.*"
    },
    {
      "ip": "192.168.1.3/32"
    }
  ]
}')

response = sg.client.access_settings.whitelist.post(request_body: data)
puts response.status_code
puts response.headers
puts response.body
```

```bash
curl -X POST "https://api.sendgrid.com/v3/access_settings/whitelist" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"ips": [{"ip": "192.168.1.1"}, {"ip": "192.*.*.*"}, {"ip": "192.168.1.3/32"}]}'
```
