IPs¶
The IP API endpoint allows you to access information regarding the IPs allocated to your Mailgun account that are used for outbound sending. The IP endpoint is available at:
v3/ips
Note
You can manage your IPs from the Control Panel. Click on IP Management in the settings dropdown menu.
GET /ips
Returns a list of IPs assigned to your account. See examples below.
Parameter | Description |
---|---|
dedicated | Return only dedicated IPs if set to true. (all are returned by default) |
GET /ips/<ip>
Returns information about the specified IP. See examples below.
GET /domains/<domain>/ips
Returns a list of IPs currently assigned to the specified domain.
POST /domains/<domain>/ips
Assign a dedicated IP to the domain specified.
Note
Only dedicated IPs can be assigned to a domain.
Parameter | Description |
---|---|
ip | IP address that should be assigned to the domain pool. |
DELETE /domains/<domain>/ips/<ip>
Unassign an IP from the domain specified.
Example¶
Get a list of all IPs.
curl -s --user 'api:YOUR_API_KEY' -G \
https://api.mailgun.net/v3/ips \
-d dedicated="true"
import com.mailgun.api.v3.MailgunIPsApi;
import com.mailgun.model.ips.IPsResult;
// ...
public IPsResult getIPs() {
MailgunIPsApi mailgunIPsApi = MailgunClient.config(API_KEY)
.createApi(MailgunIPsApi.class);
return mailgunIPsApi.getDedicatedIPs(true);
}
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = Mailgun::create('PRIVATE_API_KEY', 'https://API_HOSTNAME');
# Issue the call to the client.
$result = $mgClient->ips->index();
def get_ips():
return requests.get(
"https://api.mailgun.net/v3/ips",
params={"dedicated": "true"},
auth=("api", "YOUR_API_KEY"))
def get_ips
RestClient.get("https://api:YOUR_API_KEY"\
"@api.mailgun.net/v3/ips?dedicated=true"\
{|response, request, result| response }
end
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;
public class GetIPsChunk
{
public static void Main (string[] args)
{
Console.WriteLine (GetIPs ().Content.ToString ());
}
public static IRestResponse GetIPs ()
{
RestClient client = new RestClient ();
client.BaseUrl = new Uri ("https://api.mailgun.net/v3");
client.Authenticator =
new HttpBasicAuthenticator ("api",
"YOUR_API_KEY");
RestRequest request = new RestRequest ();
request.Resource = "ips";
request.AddParameter ("dedicated", "true");
return client.Execute (request);
}
}
import (
"context"
"github.com/mailgun/mailgun-go/v3"
"time"
)
func ListIPS(domain, apiKey string) ([]mailgun.IPAddress, error) {
mg := mailgun.NewMailgun(domain, apiKey)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
defer cancel()
// Pass 'true' to only return dedicated ips
return mg.ListIPS(ctx, true)
}
const DOMAIN = 'YOUR_DOMAIN_NAME';
import formData from 'form-data';
import Mailgun from 'mailgun.js';
const mailgun = new Mailgun(formData);
const client = mailgun.client({ username: 'api', key: 'YOUR_API_KEY' || '' });
(async () => {
try {
const ips = await client.ips.list();
console.log('ips', ips);
} catch (error) {
console.error(error);
}
})();
{
"items": ["192.161.0.1", "192.168.0.2"],
"total_count": 2
}
Get a single IP.
curl -s --user 'api:YOUR_API_KEY' -G \
https://api.mailgun.net/v3/ips/127.0.01
import com.mailgun.api.v3.MailgunIPsApi;
import com.mailgun.model.ips.IPResult;
// ...
public IPResult getIP() {
MailgunIPsApi mailgunIPsApi = MailgunClient.config(API_KEY)
.createApi(MailgunIPsApi.class);
return mailgunIPsApi.getSpecifiedIP("127.0.0.1");
}
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = Mailgun::create('PRIVATE_API_KEY', 'https://API_HOSTNAME');
$ip = '127.0.0.1';
# Issue the call to the client.
$result = $mgClient->ips()->show($ip);
def get_ip():
return requests.get(
"https://api.mailgun.net/v3/ips/127.0.0.1",
auth=("api", "YOUR_API_KEY"))
def get_ip
RestClient.get("https://api:YOUR_API_KEY"\
"@api.mailgun.net/v3/ips/127.0.0.1"\
{|response, request, result| response }
end
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;
public class GetIPChunk
{
public static void Main (string[] args)
{
Console.WriteLine (GetIP ().Content.ToString ());
}
public static IRestResponse GetIP ()
{
RestClient client = new RestClient ();
client.BaseUrl = new Uri ("https://api.mailgun.net/v3");
client.Authenticator =
new HttpBasicAuthenticator ("api",
"YOUR_API_KEY");
RestRequest request = new RestRequest ();
request.AddParameter ("ip", "127.0.0.1", ParameterType.UrlSegment);
request.Resource = "/ips/{ip}";
return client.Execute (request);
}
}
import (
"context"
"github.com/mailgun/mailgun-go/v3"
"time"
)
func GetIP(domain, apiKey string) (mailgun.IPAddress, error) {
mg := mailgun.NewMailgun(domain, apiKey)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
defer cancel()
return mg.GetIP(ctx, "127.0.0.1")
}
const DOMAIN = 'YOUR_DOMAIN_NAME';
import formData from 'form-data';
import Mailgun from 'mailgun.js';
const mailgun = new Mailgun(formData);
const client = mailgun.client({ username: 'api', key: 'YOUR_API_KEY' || '' });
(async () => {
try {
const ip = await client.ips.get('127.0.0.1'); // use interested ip instead of 127.0.0.1
console.log('ip', ip);
} catch (error) {
console.error(error);
}
})();
{
"ip": "192.161.0.1",
"dedicated": true,
"rdns": "luna.mailgun.net"
}
Get a list of IPs from the domain pool.
curl -s --user 'api:YOUR_API_KEY' -G \
https://api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips
import com.mailgun.api.v3.MailgunIPsApi;
import com.mailgun.model.ips.IPsResult;
// ...
public IPsResult getDomainIPs() {
MailgunIPsApi mailgunIPsApi = MailgunClient.config(API_KEY)
.createApi(MailgunIPsApi.class);
return mailgunIPsApi.getDomainIPs(YOUR_DOMAIN_NAME);
}
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = Mailgun::create('PRIVATE_API_KEY', 'https://API_HOSTNAME');
$domain = "YOUR_DOMAIN_NAME";
# Issue the call to the client.
$result = $mgClient->ips()->domainIndex($domain);
def get_domain_ips():
return requests.get(
"https://api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips",
auth=("api", "YOUR_API_KEY"))
def get_domain_ips
RestClient.get("https://api:YOUR_API_KEY"\
"@api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips"\
{|response, request, result| response }
end
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;
public class GetDomainIPsChunk
{
public static void Main (string[] args)
{
Console.WriteLine (GetDomainIPs ().Content.ToString ());
}
public static IRestResponse GetDomainIPs ()
{
RestClient client = new RestClient ();
client.BaseUrl = new Uri ("https://api.mailgun.net/v3");
client.Authenticator =
new HttpBasicAuthenticator ("api",
"YOUR_API_KEY");
RestRequest request = new RestRequest ();
request.AddParameter ("domain", "YOUR_DOMAIN_NAME", ParameterType.UrlSegment);
request.Resource = "/domains/{domain}/ips";
return client.Execute (request);
}
}
import (
"context"
"github.com/mailgun/mailgun-go/v3"
"time"
)
func ListDomainIPS(domain, apiKey string) ([]mailgun.IPAddress, error) {
mg := mailgun.NewMailgun(domain, apiKey)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
defer cancel()
return mg.ListDomainIPS(ctx)
}
const DOMAIN = 'YOUR_DOMAIN_NAME';
import formData from 'form-data';
import Mailgun from 'mailgun.js';
const mailgun = new Mailgun(formData);
const client = mailgun.client({ username: 'api', key: 'YOUR_API_KEY' || '' });
(async () => {
try {
const getIps = await client.domains.getIps(DOMAIN);
console.log('getIps', getIps);
} catch (error) {
console.error(error);
}
})();
{
"items": ["192.161.0.1", "192.168.0.2"],
"total_count": 2
}
Assign a dedicated IP to the domain pool.
curl -s --user 'api:YOUR_API_KEY' \
-X POST https://api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips \
-F ip='127.0.0.1'
import com.mailgun.api.v3.MailgunIPsApi;
import com.mailgun.model.ResponseWithMessage;
// ...
public ResponseWithMessage addDomainIP() {
MailgunIPsApi mailgunIPsApi = MailgunClient.config(API_KEY)
.createApi(MailgunIPsApi.class);
return mailgunIPsApi.assignIPToDomain(YOUR_DOMAIN_NAME, "127.0.0.1");
}
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = Mailgun::create('PRIVATE_API_KEY', 'https://API_HOSTNAME');
$domain = 'YOUR_DOMAIN_NAME';
$ip = '127.0.0.1';
# Issue the call to the client.
$result = $mgClient->ips()->assign($domain, $ip);
def add_domain_ip():
return requests.post(
"https://api.mailgun.net/v3/domains/YOUR_NEW_DOMAIN_NAME/ips",
auth=("api", "YOUR_API_KEY"),
data={"smtp_password": "127.0.0.1"})
def add_domain_ip
RestClient.post("https://api:YOUR_API_KEY"\
"@api.mailgun.net/v3/domains/YOUR_NEW_DOMAIN_NAME/ips",
:ip => '127.0.0.1')
end
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;
public class AddDomainIPChunk
{
public static void Main (string[] args)
{
Console.WriteLine (AddDomainIP ().Content.ToString ());
}
public static IRestResponse AddDomainIP ()
{
RestClient client = new RestClient ();
client.BaseUrl = new Uri ("https://api.mailgun.net/v3/");
client.Authenticator =
new HttpBasicAuthenticator ("api",
"YOUR_API_KEY");
RestRequest request = new RestRequest ();
request.Resource = "{domain}/ips";
request.AddParameter ("domain", "YOUR_DOMAIN_NAME", ParameterType.UrlSegment);
request.AddParameter ("ip", "127.0.0.1");
request.Method = Method.POST;
return client.Execute (request);
}
}
import (
"context"
"github.com/mailgun/mailgun-go/v3"
"time"
)
func AddDomainIPS(domain, apiKey string) error {
mg := mailgun.NewMailgun(domain, apiKey)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
defer cancel()
return mg.AddDomainIP(ctx, "127.0.0.1")
}
const DOMAIN = 'YOUR_DOMAIN_NAME';
import formData from 'form-data';
import Mailgun from 'mailgun.js';
const mailgun = new Mailgun(formData);
const client = mailgun.client({ username: 'api', key: 'YOUR_API_KEY' || '' });
(async () => {
try {
const addedIp = await client.domains.assignIp(DOMAIN, '127.0.0.1');
console.log('addedIp', addedIp);
} catch (error) {
console.error(error);
}
})();
{
"message": "success"
}
Remove an IP from the domain pool.
curl -s --user 'api:YOUR_API_KEY' -X DELETE \
https://api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips/127.0.0.1
import com.mailgun.api.v3.MailgunIPsApi;
import com.mailgun.model.ResponseWithMessage
// ...
public ResponseWithMessage deleteDomainIP() {
MailgunIPsApi mailgunIPsApi = MailgunClient.config(API_KEY).createApi(MailgunIPsApi.class);
return mailgunIPsApi.unassignIPFromDomain(YOUR_DOMAIN_NAME, "127.0.0.1");
}
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = Mailgun::create('PRIVATE_API_KEY', 'https://API_HOSTNAME');
$domain = 'YOUR_DOMAIN_NAME';
$ip = '127.0.0.1';
# Issue the call to the client.
$result = $mgClient->ips->unassign($domain, $ip);
def delete_domain_ip():
return requests.delete(
"https://api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips/127.0.0.1",
auth=("api", "YOUR_API_KEY"))
def delete_domain_ip
RestClient.delete "https://api:YOUR_API_KEY"\
"@api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/ips/127.0.0.1"
end
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;
public class DeleteDomainIPChunk
{
public static void Main (string[] args)
{
Console.WriteLine (DeleteDomainIP ().Content.ToString ());
}
public static IRestResponse DeleteDomainIP ()
{
RestClient client = new RestClient ();
client.BaseUrl = new Uri ("https://api.mailgun.net/v3");
client.Authenticator =
new HttpBasicAuthenticator ("api",
"YOUR_API_KEY");
RestRequest request = new RestRequest ();
request.AddParameter ("domain", "YOUR_DOMAIN_NAME", ParameterType.UrlSegment);
request.Resource = "{domain}/ips/{ip}";
request.AddUrlSegment ("ip", "127.0.0.1");
request.Method = Method.DELETE;
return client.Execute (request);
}
}
import (
"context"
"github.com/mailgun/mailgun-go/v3"
"time"
)
func DeleteDomainIP(domain, apiKey string) error {
mg := mailgun.NewMailgun(domain, apiKey)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
defer cancel()
return mg.DeleteDomainIP(ctx, "127.0.0.1")
}
const DOMAIN = 'YOUR_DOMAIN_NAME';
import formData from 'form-data';
import Mailgun from 'mailgun.js';
const mailgun = new Mailgun(formData);
const client = mailgun.client({ username: 'api', key: 'YOUR_API_KEY' || '' });
(async () => {
try {
const deletedIp = await client.domains.deleteIp(DOMAIN, '127.0.0.1');
console.log('deletedIp', deletedIp);
} catch (error) {
console.error(error);
}
})();
{
"message": "success"
}