Update an IP pool
Rename the pool, set or clear the default flag, or change its domain scope. Routing follows the new settings for subsequent mail.
curl --request PATCH \
--url https://api.telnyx.com/v2/email/ip_pools/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "renamed-pool"
}
'import requests
url = "https://api.telnyx.com/v2/email/ip_pools/{id}"
payload = { "name": "renamed-pool" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'renamed-pool'})
};
fetch('https://api.telnyx.com/v2/email/ip_pools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telnyx.com/v2/email/ip_pools/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'renamed-pool'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.telnyx.com/v2/email/ip_pools/{id}"
payload := strings.NewReader("{\n \"name\": \"renamed-pool\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.telnyx.com/v2/email/ip_pools/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"renamed-pool\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/email/ip_pools/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"renamed-pool\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "9b1c4d70-abcd-4e5f-8a9b-0c1d2e3f4a5b",
"record_type": "ip_pool",
"name": "renamed-pool",
"is_default": true,
"domain_id": null,
"ips": [],
"created_at": "2026-09-30T02:03:09.474123Z",
"updated_at": "2026-10-14T21:30:00.000000Z"
}
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested ip pool was not found"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "must contain only lowercase letters, numbers, dots, underscores and hyphens",
"source": {
"pointer": "/data/attributes/name"
}
}
]
}Authorizations
Telnyx API key supplied as Authorization: Bearer <token>. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.
Path Parameters
The IP pool identifier (UUID).
Body
Pool name: 1-64 characters of lowercase letters, digits, ., _, and -, starting and ending with a letter or digit. Must be unique within the account and must not start with dip_.
Set or clear the account default flag. An account can have one default pool.
Scope the pool to one of the account's email domains, or null to remove the scope.
Response
Updated IP pool
An account-scoped pool of dedicated IPs. Mail uses a pool only when the pool is scoped to the sending domain (domain_id) or is the account default (is_default).
Show child attributes
Show child attributes
Was this page helpful?
curl --request PATCH \
--url https://api.telnyx.com/v2/email/ip_pools/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "renamed-pool"
}
'import requests
url = "https://api.telnyx.com/v2/email/ip_pools/{id}"
payload = { "name": "renamed-pool" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'renamed-pool'})
};
fetch('https://api.telnyx.com/v2/email/ip_pools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telnyx.com/v2/email/ip_pools/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'renamed-pool'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.telnyx.com/v2/email/ip_pools/{id}"
payload := strings.NewReader("{\n \"name\": \"renamed-pool\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.telnyx.com/v2/email/ip_pools/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"renamed-pool\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/email/ip_pools/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"renamed-pool\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "9b1c4d70-abcd-4e5f-8a9b-0c1d2e3f4a5b",
"record_type": "ip_pool",
"name": "renamed-pool",
"is_default": true,
"domain_id": null,
"ips": [],
"created_at": "2026-09-30T02:03:09.474123Z",
"updated_at": "2026-10-14T21:30:00.000000Z"
}
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested ip pool was not found"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "must contain only lowercase letters, numbers, dots, underscores and hyphens",
"source": {
"pointer": "/data/attributes/name"
}
}
]
}